From 2fbf5bed0db2aec0ef6462d58150a40064f0333b Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sun, 21 Jan 2024 08:30:49 +0100 Subject: Fix "Wayland: crash with set_menu_window()" (#892) Fixes also a similar crash occuring after use of set_tooltip_window(). Two bool member variables are added to class Fl_Window_Driver to indicate true FLTK menu windows (i.e., created by Fl_Menu_Item::pulldown()) and true FLTK tooltip windows (i.e., Fl_Tooltip). --- src/Fl_Menu.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/Fl_Menu.cxx') diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx index 3a3e70708..115e69fe7 100644 --- a/src/Fl_Menu.cxx +++ b/src/Fl_Menu.cxx @@ -115,6 +115,7 @@ protected: Fl_Menu_Window(X, Y, W, H, 0) { menu = m; set_menu_window(); + Fl_Window_Driver::driver(this)->fltk_menu_window = true; end(); set_modal(); clear_border(); @@ -183,13 +184,13 @@ Fl_Window *Fl_Window_Driver::menu_parent(int *display_height) { } static menuwindow *to_menuwindow(Fl_Window *win) { - if (!win->menu_window()) return NULL; + if (!Fl_Window_Driver::driver(win)->fltk_menu_window) return false; return ((window_with_items*)win)->as_menuwindow(); } /** Returns whether win is a menutitle window */ bool Fl_Window_Driver::is_menutitle(Fl_Window *win) { - if (!win->menu_window()) return false; + if (!Fl_Window_Driver::driver(win)->fltk_menu_window) return false; return (((window_with_items*)win)->as_menuwindow() == NULL); } @@ -233,7 +234,7 @@ int *Fl_Window_Driver::menu_offset_y(Fl_Window *win) { /** Returns whether win is a non-menubar menutitle */ bool Fl_Window_Driver::is_floating_title(Fl_Window *win) { - if (!win->menu_window()) return false; + if (!Fl_Window_Driver::driver(win)->fltk_menu_window) return false; Fl_Window *mwin = ((window_with_items*)win)->as_menuwindow(); return !mwin && !((menutitle*)win)->in_menubar; } -- cgit v1.2.3