summaryrefslogtreecommitdiffstats
path: root/tests/manual/cocoa
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2012-09-28 15:58:58 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-26 14:53:09 +0200
commit356f3c89b83704591e3c37cf8c322b52d6840763 (patch)
tree05b381f1d5c4086516fa42947ab7937b422fd34e /tests/manual/cocoa
parenta3941c2f6ef31986bd315fa41bc4df7330a89109 (diff)
Fix syncing of visibility and enabled for menus on Cocoa
Fixed menu handling on Cocoa so if a menu is enabled/disabled or made visible or not then it will keep this in sync with the appropriate native menu entry. Change-Id: If269185fcf065fb1b2f60d6ef8c27c107eb4509f Reviewed-by: Pasi Matilainen <pasi.matilainen@digia.com> Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Diffstat (limited to 'tests/manual/cocoa')
-rw-r--r--tests/manual/cocoa/menus/main.cpp74
1 files changed, 67 insertions, 7 deletions
diff --git a/tests/manual/cocoa/menus/main.cpp b/tests/manual/cocoa/menus/main.cpp
index 736ca134ff..760115ce25 100644
--- a/tests/manual/cocoa/menus/main.cpp
+++ b/tests/manual/cocoa/menus/main.cpp
@@ -39,9 +39,12 @@
**
****************************************************************************/
-#include <QtGui>
-#include <QtWidgets>
-
+#include <QMainWindow>
+#include <QMenu>
+#include <QApplication>
+#include <QMenuBar>
+#include <QMessageBox>
+#include <QDebug>
class Responder : public QObject
{
@@ -49,13 +52,34 @@ class Responder : public QObject
public:
Responder(QObject *pr) :
- QObject(pr)
+ QObject(pr), visibleMenu(0), visibleSubMenu(0), enabledMenu(0), enabledSubMenu(0), visibleAction(0), enabledAction(0)
{
}
-
+ void setVisibleObjects(QMenu *vm, QMenu *vsm, QAction *va)
+ {
+ visibleMenu = vm;
+ visibleSubMenu = vsm;
+ visibleAction = va;
+ }
+ void setEnabledObjects(QMenu *em, QMenu *esm, QAction *ea)
+ {
+ enabledMenu = em;
+ enabledSubMenu = esm;
+ enabledAction = ea;
+ }
public slots:
-
-
+ void toggleVisiblity()
+ {
+ visibleMenu->menuAction()->setVisible(!visibleMenu->menuAction()->isVisible());
+ visibleSubMenu->menuAction()->setVisible(!visibleSubMenu->menuAction()->isVisible());
+ visibleAction->setVisible(!visibleAction->isVisible());
+ }
+ void toggleEnabled()
+ {
+ enabledMenu->menuAction()->setEnabled(!enabledMenu->menuAction()->isEnabled());
+ enabledSubMenu->menuAction()->setEnabled(!enabledSubMenu->menuAction()->isEnabled());
+ enabledAction->setEnabled(!enabledAction->isEnabled());
+ }
void toggleChecked(bool b)
{
QAction *a = qobject_cast<QAction *>(sender());
@@ -82,6 +106,9 @@ public slots:
m->addAction(QString("Recent File %1").arg(i + 1));
}
}
+private:
+ QMenu *visibleMenu, *visibleSubMenu, *enabledMenu, *enabledSubMenu;
+ QAction *visibleAction, *enabledAction;
};
void createWindow1()
@@ -156,6 +183,39 @@ void createWindow1()
menu2->addAction(checkableAction);
+ QMenu *menu4 = new QMenu("Toggle menu", window);
+ QAction *toggleVisiblity = new QAction("Toggle visibility", window);
+ QAction *toggleEnabled = new QAction("Toggle enabled", window);
+ QObject::connect(toggleVisiblity, SIGNAL(triggered()), r, SLOT(toggleVisiblity()));
+ QObject::connect(toggleEnabled, SIGNAL(triggered()), r, SLOT(toggleEnabled()));
+ menu4->addAction(toggleVisiblity);
+ menu4->addAction(toggleEnabled);
+ window->menuBar()->addMenu(menu4);
+
+ QMenu *menu5 = new QMenu("Visible Menu", window);
+ menu5->addAction("Dummy action");
+ window->menuBar()->addMenu(menu5);
+ QMenu *menu6 = new QMenu("Menu with visible action and submenu", window);
+ QAction *visibleAction = new QAction("Visible action", window);
+ menu6->addAction(visibleAction);
+ QMenu *subMenu6 = new QMenu("Submenu");
+ subMenu6->addAction("Dummy action");
+ menu6->addMenu(subMenu6);
+ window->menuBar()->addMenu(menu6);
+
+ QMenu *menu7 = new QMenu("Enabled Menu", window);
+ menu7->addAction("Dummy action");
+ window->menuBar()->addMenu(menu7);
+ QMenu *menu8 = new QMenu("Menu with enabled action and submenu", window);
+ QAction *enabledAction = new QAction("Enabled action", window);
+ menu8->addAction(enabledAction);
+ QMenu *subMenu8 = new QMenu("Submenu");
+ subMenu8->addAction("Dummy action");
+ menu8->addMenu(subMenu8);
+ window->menuBar()->addMenu(menu8);
+
+ r->setVisibleObjects(menu5, subMenu6, visibleAction);
+ r->setEnabledObjects(menu7, subMenu8, enabledAction);
window->show();
}