]> git.lyx.org Git - features.git/commitdiff
* mac menus do not handle showEvent, only the aboutToShow signal.
authorStefan Schimanski <sts@lyx.org>
Sun, 9 Mar 2008 14:20:16 +0000 (14:20 +0000)
committerStefan Schimanski <sts@lyx.org>
Sun, 9 Mar 2008 14:20:16 +0000 (14:20 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23588 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/Menus.cpp
src/frontends/qt4/Menus.h

index 1a0bf7a236f97245339278b4c6a03b302e06f996..0d8dfef02244ea49ef35e5415baf1bd8254d6773 100644 (file)
@@ -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
index a56e092e4e7d30a495a56762273e9fd41f888c4b..dce206d67a62b5ee5603ecaa31309a34c8730a4a 100644 (file)
 
 #include "support/docstring.h"
 
+#include <Qmenu>
+
 #include <vector>
 
-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