From ed6d4b736f50bcd6e13f8ac6e181333a4b2fcec0 Mon Sep 17 00:00:00 2001 From: John Spray Date: Sun, 12 Feb 2006 16:03:55 +0000 Subject: [PATCH] Bartek Kostrzewa's fix for crash in GMenubar git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13217 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/gtk/ChangeLog | 3 +++ src/frontends/gtk/GMenubar.C | 20 ++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/frontends/gtk/ChangeLog b/src/frontends/gtk/ChangeLog index 61bca52fd4..c006c360c8 100644 --- a/src/frontends/gtk/ChangeLog +++ b/src/frontends/gtk/ChangeLog @@ -1,6 +1,9 @@ 2006-02-12 John Spray * GMenubar.C: assume backend strings in latin1 (bug 1954) +2006-02-12 Bartek Kostrzewa + * GMenubar.C: Fix crash with navigation submenus + 2006-02-09 John Spray * GPreferences.[Ch], glade/preferences.glade: Add language tab diff --git a/src/frontends/gtk/GMenubar.C b/src/frontends/gtk/GMenubar.C index 2afc672d10..9084dc7b6c 100644 --- a/src/frontends/gtk/GMenubar.C +++ b/src/frontends/gtk/GMenubar.C @@ -142,18 +142,26 @@ void GMenubar::onSubMenuActivate(MenuItem const * item, ClearMenu(gmenu); LyxMenu * lyxmenu = static_cast(gmenu); lyxmenu->clearBackMenu(); - Menu * fmenu = item->submenuname().empty() ? - item->submenu() : - &menubackend.getMenu(item->submenuname()); + + Menu * fmenu; + Menu::const_iterator i; + Menu::const_iterator end; + if(!item->submenuname().empty()) { + fmenu = &menubackend.getMenu(item->submenuname()); + menubackend.expand(*fmenu, lyxmenu->getBackMenu(), view_); + i = lyxmenu->getBackMenu().begin(); + end = lyxmenu->getBackMenu().end(); + } else { + fmenu = item->submenu(); + i = fmenu->begin(); + end = fmenu->end(); + } // Choose size for icons on command items int iconwidth = 16; int iconheight = 16; Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU, iconwidth, iconheight); - menubackend.expand(*fmenu, lyxmenu->getBackMenu(), view_); - Menu::const_iterator i = lyxmenu->getBackMenu().begin(); - Menu::const_iterator end = lyxmenu->getBackMenu().end(); Gtk::Menu * gmenu_new; for (; i != end; ++i) { switch (i->kind()) { -- 2.39.2