diff options
-rw-r--r-- | vcl/unx/gtk/gtksalmenu.cxx | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/vcl/unx/gtk/gtksalmenu.cxx b/vcl/unx/gtk/gtksalmenu.cxx index 70a4130d1bf9..a13bb6d26242 100644 --- a/vcl/unx/gtk/gtksalmenu.cxx +++ b/vcl/unx/gtk/gtksalmenu.cxx @@ -1020,17 +1020,21 @@ void GtkSalMenu::ClearActionGroupAndMenuModel() void GtkSalMenu::Activate(const gchar* pCommand) { MenuAndId aMenuAndId = decode_command(pCommand); - GtkSalMenu* pSalSubMenu = aMenuAndId.first; - GtkSalMenu* pTopLevel = pSalSubMenu->GetTopLevel(); - pTopLevel->GetMenu()->HandleMenuActivateEvent(pSalSubMenu->GetMenu()); + GtkSalMenu* pSalMenu = aMenuAndId.first; + GtkSalMenu* pTopLevel = pSalMenu->GetTopLevel(); + Menu* pVclMenu = pSalMenu->GetMenu(); + Menu* pVclSubMenu = pVclMenu->GetPopupMenu(aMenuAndId.second); + pTopLevel->GetMenu()->HandleMenuActivateEvent(pVclSubMenu); } void GtkSalMenu::Deactivate(const gchar* pCommand) { MenuAndId aMenuAndId = decode_command(pCommand); - GtkSalMenu* pSalSubMenu = aMenuAndId.first; - GtkSalMenu* pTopLevel = pSalSubMenu->GetTopLevel(); - pTopLevel->GetMenu()->HandleMenuDeActivateEvent(pSalSubMenu->GetMenu()); + GtkSalMenu* pSalMenu = aMenuAndId.first; + GtkSalMenu* pTopLevel = pSalMenu->GetTopLevel(); + Menu* pVclMenu = pSalMenu->GetMenu(); + Menu* pVclSubMenu = pVclMenu->GetPopupMenu(aMenuAndId.second); + pTopLevel->GetMenu()->HandleMenuDeActivateEvent(pVclSubMenu); } void GtkSalMenu::EnableUnity(bool bEnable) |