From: Stefan Schimanski Date: Sun, 9 Mar 2008 14:20:16 +0000 (+0000) Subject: * mac menus do not handle showEvent, only the aboutToShow signal. X-Git-Tag: 1.6.10~5765 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=7a924b3771c2204092952012051b0e43d7677b27;p=features.git * mac menus do not handle showEvent, only the aboutToShow signal. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23588 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 1a0bf7a236..0d8dfef022 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -281,13 +281,13 @@ public: }; /// a submenu -class GuiPopupMenu : public QMenu +class GuiPopupMenu : public GuiPopupMenuBase { public: /// GuiPopupMenu(GuiView * gv, MenuItem const & mi, bool top_level) - : QMenu(gv), top_level_menu(top_level? new Menu : 0), view(gv), - name(mi.submenuname()) + : GuiPopupMenuBase(gv), top_level_menu(top_level? new Menu : 0), + view(gv), name(mi.submenuname()) { setTitle(label(mi)); } @@ -309,19 +309,20 @@ public: /// Get a Menu item label from the menu backend QString label(MenuItem const & mi) const; - void showEvent(QShowEvent * ev) - { - if (top_level_menu) - guiApp->menus().updateMenu(name); - QMenu::showEvent(ev); - } - /// Only needed for top level menus. Menu * top_level_menu; /// our owning view GuiView * view; /// the name of this menu QString name; + +private Q_SLOTS: + /// + void updateView() + { + if (top_level_menu) + guiApp->menus().updateMenu(name); + } }; /// Helper for std::find_if diff --git a/src/frontends/qt4/Menus.h b/src/frontends/qt4/Menus.h index a56e092e4e..dce206d67a 100644 --- a/src/frontends/qt4/Menus.h +++ b/src/frontends/qt4/Menus.h @@ -15,9 +15,10 @@ #include "support/docstring.h" +#include + #include -class QMenu; class QString; namespace lyx { @@ -56,6 +57,24 @@ private: Impl * const d; }; + +class GuiPopupMenuBase : public QMenu +{ + Q_OBJECT + +public: + /// + GuiPopupMenuBase(QWidget * parent = 0) + : QMenu(parent) + { + connect(this, SIGNAL(aboutToShow()), this, SLOT(updateView())); + } + +private Q_SLOTS: + /// + virtual void updateView() = 0; +}; + } // namespace frontend } // namespace lyx