FLTK logo

[master] 2c52ebe - Improve Fl_Wayland_Window_Driver::wait_for_expose().

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 2c52ebe - Improve Fl_Wayland_Window_Driver::wait_for_expose(). "ManoloFLTK" May 16, 2022  
 
commit 2c52ebe210d75135db54fe878d8649396640cb1c
Author:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Mon May 16 16:34:59 2022 +0200
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Mon May 16 16:34:59 2022 +0200

    Improve Fl_Wayland_Window_Driver::wait_for_expose().

 src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
index e335329..feadb20 100644
--- src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
+++ src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
@@ -145,8 +145,6 @@ void Fl_Wayland_Window_Driver::take_focus()
   Window w = fl_xid(pWindow);
   if (w) {
     Fl_Widget *old_focus = Fl::focus();
-    // necessary for recent Wayland versions; may change focus
-    wl_display_dispatch(Fl_Wayland_Screen_Driver::wl_display);
     Fl_Window *old_first = Fl::first_window();
     Window first_xid = (old_first ? fl_xid(old_first->top_window()) : NULL);
     if (first_xid && first_xid != w && xdg_toplevel()) {
@@ -159,11 +157,6 @@ void Fl_Wayland_Window_Driver::take_focus()
     }
     // this sets the first window
     fl_find(w);
-    if (old_focus && Fl::focus() != old_focus) { // reset focus as at function entry
-      extern Fl_Window *fl_xfocus;
-      fl_xfocus = old_focus->top_window();
-      Fl::focus(old_focus);
-    }
   }
 }
 
@@ -830,8 +823,8 @@ static void handle_configure(struct libdecor_frame *frame,
 void Fl_Wayland_Window_Driver::wait_for_expose()
 {
   Fl_Window_Driver::wait_for_expose();
+  Window xid = fl_xid(pWindow);
   if (pWindow->fullscreen_active()) {
-    Window xid = fl_xid(pWindow);
     if (xid->kind == DECORATED) {
       while (!(xid->state & LIBDECOR_WINDOW_STATE_FULLSCREEN) || !(xid->state & LIBDECOR_WINDOW_STATE_ACTIVE)) {
         wl_display_dispatch(Fl_Wayland_Screen_Driver::wl_display);
@@ -839,6 +832,10 @@ void Fl_Wayland_Window_Driver::wait_for_expose()
     } else if (xid->kind == UNFRAMED) {
       wl_display_roundtrip(Fl_Wayland_Screen_Driver::wl_display);
     }
+  } else if (xid->kind == DECORATED) {
+    while (!(xid->state & LIBDECOR_WINDOW_STATE_ACTIVE)) {
+      wl_display_dispatch(Fl_Wayland_Screen_Driver::wl_display);
+    }
   }
 }
 
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.