diff options
author | Andy Shaw <andy.shaw@digia.com> | 2012-09-28 15:58:58 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-26 14:53:09 +0200 |
commit | 356f3c89b83704591e3c37cf8c322b52d6840763 (patch) | |
tree | 05b381f1d5c4086516fa42947ab7937b422fd34e /tests/manual/cocoa | |
parent | a3941c2f6ef31986bd315fa41bc4df7330a89109 (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.cpp | 74 |
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(); } |