FLTK logo

[master] b6e0122 - Fix for issue #441: Some minor regressions with borderless+fullscreen (Wayland).

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] b6e0122 - Fix for issue #441: Some minor regressions with borderless+fullscreen (Wayland). "ManoloFLTK" May 10, 2022  
 
commit b6e0122926b9bae1b9400ba3bf01e5b7d977b758
Author:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Tue May 10 16:52:46 2022 +0200
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Tue May 10 16:52:46 2022 +0200

     Fix for issue #441: Some minor regressions with borderless+fullscreen (Wayland).

 libdecor/src/plugins/gtk/libdecor-gtk.c          | 10 +++++++---
 src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx |  5 ++++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git libdecor/src/plugins/gtk/libdecor-gtk.c libdecor/src/plugins/gtk/libdecor-gtk.c
index e23115c..40f7d59 100644
--- libdecor/src/plugins/gtk/libdecor-gtk.c
+++ libdecor/src/plugins/gtk/libdecor-gtk.c
@@ -670,7 +670,7 @@ libdecor_plugin_gtk_frame_free(struct libdecor_plugin *plugin,
 		(struct libdecor_frame_gtk *) frame;
 
 #if APPLY_FLTK_CHANGES
-        if (!frame_gtk->header) return; /* happens with SSD */
+        if (!frame_gtk->header || !GTK_IS_WIDGET(frame_gtk->header)) return; /* happens with SSD (or not)*/
 #endif
 	gtk_widget_destroy(frame_gtk->header);
 #if APPLY_FLTK_CHANGES
@@ -1783,7 +1783,11 @@ libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin,
 		GtkWidget *header = ((struct libdecor_frame_gtk *)frame)->header;
 		enum decoration_type type = window_state_to_decoration_type(window_state);
 
-		if (header && (type != DECORATION_TYPE_NONE))
+		if (header && (type != DECORATION_TYPE_NONE)
+#if APPLY_FLTK_CHANGES
+                    && GTK_IS_WIDGET(header)
+#endif
+                    )
 			*top = gtk_widget_get_allocated_height(header);
 		else
 			*top = 0;
@@ -2298,7 +2302,7 @@ pointer_button(void *data,
 		 state == WL_POINTER_BUTTON_STATE_PRESSED &&
 		 seat->pointer_focus == frame_gtk->headerbar.wl_surface) {
 #if APPLY_FLTK_CHANGES
-          const int title_height = frame_gtk->header ? gtk_widget_get_allocated_height(frame_gtk->header) : 0;
+          const int title_height = frame_gtk->header && GTK_IS_WIDGET(frame_gtk->header) ? gtk_widget_get_allocated_height(frame_gtk->header) : 0;
 #else
 	const int title_height = gtk_widget_get_allocated_height(frame_gtk->header);
 #endif
diff --git src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
index 4cd6142..cabf831 100644
--- src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
+++ src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
@@ -876,6 +876,7 @@ static void xdg_surface_configure(void *data, struct xdg_surface *xdg_surface, u
   }
   window->configured_width = window->fl_win->w();
   window->configured_height = window->fl_win->h();
+  Fl::handle(FL_FOCUS, window->fl_win);
   window->fl_win->redraw();
   Fl_Window_Driver::driver(window->fl_win)->flush();
 }
@@ -1303,10 +1304,12 @@ void Fl_Wayland_Window_Driver::update_scale()
 void Fl_Wayland_Window_Driver::use_border() {
   if (!shown() || pWindow->parent()) return;
   struct libdecor_frame *frame = fl_xid(pWindow)->frame;
-  if (frame && Fl_Wayland_Screen_Driver::compositor != Fl_Wayland_Screen_Driver::KDE) {
+  if (frame && Fl_Wayland_Screen_Driver::compositor != Fl_Wayland_Screen_Driver::KDE &&
+      && fl_xid(pWindow)->xdg_surface) {
     libdecor_frame_set_visibility(frame, pWindow->border());
     pWindow->redraw();
   } else {
+    pWindow->wait_for_expose(); // useful for border(0) just after show()
     Fl_Window_Driver::use_border();
   }
 }
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'.