From e82c5a64ddaeafb82be2662ab72d88bc49acb74c Mon Sep 17 00:00:00 2001 From: John Levon Date: Wed, 24 Jul 2002 20:06:22 +0000 Subject: [PATCH] It compiles, ship it. JMarc, can you see why I might be segfaulting (see code) ? Have I done this right ? Things are still wonky ... and what will I need to do later ... git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4773 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt2/ChangeLog | 4 ++++ src/frontends/qt2/Menubar_pimpl.C | 38 ++++++++++++++++--------------- src/frontends/qt2/Menubar_pimpl.h | 2 +- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 0f7de6287b..c026a5cdef 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,7 @@ +2002-07-24 John Levon + + * Menubar_pimpl.C: make it compile again + 2002-07-24 Angus Leeming * FileDialog_private.C (done): add a false to the arguments passed to diff --git a/src/frontends/qt2/Menubar_pimpl.C b/src/frontends/qt2/Menubar_pimpl.C index 54761a2b92..0b276596b9 100644 --- a/src/frontends/qt2/Menubar_pimpl.C +++ b/src/frontends/qt2/Menubar_pimpl.C @@ -72,27 +72,28 @@ Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mbe) Menu::const_iterator m = mbe.getMenubar().begin(); Menu::const_iterator end = mbe.getMenubar().end(); for (; m != end; ++m) { - makeMenu(owner_->menuBar(), *m); + Menu tomenu; + Menu const frommenu = menubackend_.getMenu(m->submenuname()); + menubackend_.expand(frommenu, tomenu, owner_->buffer()); + makeMenu(owner_->menuBar(), m, tomenu); } } -void Menubar::Pimpl::makeMenu(QMenuData * parent, MenuItem const & menu) +void Menubar::Pimpl::makeMenu(QMenuData * parent, MenuItem const * item, Menu const & menu) { // FIXME: does this leak or not ? QPopupMenu * pm = new QPopupMenu(); - int const parentid = parent->insertItem(getLabel(menu).c_str(), pm); + int const parentid = parent->insertItem(getLabel(*item).c_str(), pm); - Menu md; - menubackend_.getMenu(menu.submenu()).expand(md, 0); - Menu::const_iterator m = md.begin(); - Menu::const_iterator end = md.end(); + Menu::const_iterator m = menu.begin(); + Menu::const_iterator end = menu.end(); for (; m != end; ++m) { // FIXME: handle the special stuff here if (m->kind() == MenuItem::Separator) { pm->insertSeparator(); } else if (m->kind() == MenuItem::Submenu) { - makeMenu(pm, *m); + makeMenu(pm, m, m->submenu()); } else { pm->insertItem(getLabel(*m).c_str(), m->action()); MenuItemInfo const info(pm, m->action(), m); @@ -101,8 +102,8 @@ void Menubar::Pimpl::makeMenu(QMenuData * parent, MenuItem const & menu) } } - MenuItemInfo const info(parent, parentid, &menu); - items_[menu.label()] = info; + MenuItemInfo const info(parent, parentid, item); + items_[item->label()] = info; updateSubmenu(info); } @@ -111,14 +112,13 @@ void Menubar::Pimpl::makeMenu(QMenuData * parent, MenuItem const & menu) // two-level submenus void Menubar::Pimpl::updateSubmenu(MenuItemInfo const & i) { - bool enable = true; -#if 0 +#if 0 // SEGFAULTS +// 7 0x0809d372 in Menu::begin (this=0x0) at MenuBackend.h:138 +// 8 0x081dcf60 in Menubar::Pimpl::updateSubmenu (this=0x839eaa0, i=@0xbffff010) at Menubar_pimpl.C:116 bool enable = false; - Menu md; - // FIXME FIXME SEGFAULTS - menubackend_.getMenu(i.item_->submenu()).expand(md, 0); - Menu::const_iterator m = md.begin(); - Menu::const_iterator end = md.end(); + + Menu::const_iterator m = i.item_->submenu().begin(); + Menu::const_iterator end = i.item_->submenu().end(); for (; m != end; ++m) { if (m->action() > 0) { FuncStatus const status = @@ -127,7 +127,9 @@ void Menubar::Pimpl::updateSubmenu(MenuItemInfo const & i) enable = true; } } -#endif +#else + bool enable = true; +#endif i.parent_->setItemEnabled(i.id_, enable); } diff --git a/src/frontends/qt2/Menubar_pimpl.h b/src/frontends/qt2/Menubar_pimpl.h index 4a8a331e78..c5581423ba 100644 --- a/src/frontends/qt2/Menubar_pimpl.h +++ b/src/frontends/qt2/Menubar_pimpl.h @@ -64,7 +64,7 @@ public: private: /// create a menu - void makeMenu(QMenuData * parent, MenuItem const & menu); + void makeMenu(QMenuData * parent, MenuItem const * item, Menu const & menu); /// special handling updating a submenu label void updateSubmenu(MenuItemInfo const & i); -- 2.39.2