diff --git a/lcl/interfaces/gtk2/gtk2wsmenus.pp b/lcl/interfaces/gtk2/gtk2wsmenus.pp index 1c2f47e922..f8595db79f 100644 --- a/lcl/interfaces/gtk2/gtk2wsmenus.pp +++ b/lcl/interfaces/gtk2/gtk2wsmenus.pp @@ -488,7 +488,9 @@ class procedure TGtk2WSMenuItem.UpdateMenuIcon(const AMenuItem: TMenuItem; begin if not WSCheckMenuItem(AMenuItem, 'UpdateMenuIcon') then Exit; - if gtk_is_check_menu_item({%H-}Pointer(AMenuItem.Handle)) <> HasIcon then + // recreating menu handle without icon may lead to failures like + // main menu bar vanishing, see mantis issue #37607 + if HasIcon then AMenuItem.RecreateHandle; end; diff --git a/lcl/interfaces/gtk3/gtk3wsmenus.pp b/lcl/interfaces/gtk3/gtk3wsmenus.pp index b4c1dfb51e..7c129fd5e5 100644 --- a/lcl/interfaces/gtk3/gtk3wsmenus.pp +++ b/lcl/interfaces/gtk3/gtk3wsmenus.pp @@ -556,8 +556,8 @@ class procedure TGtk3WSMenuItem.UpdateMenuIcon(const AMenuItem: TMenuItem; begin if not WSCheckMenuItem(AMenuItem, 'UpdateMenuIcon') then Exit; - // if gtk_is_check_menu_item({%H-}Pointer(AMenuItem.Handle)) <> HasIcon then - AMenuItem.RecreateHandle; + if HasIcon then + AMenuItem.RecreateHandle; end; { TGtk3WSMenu }