aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformmenu.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-05-25 22:53:27 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-06-16 06:50:40 +0000
commita3f27162103286bf4a3f0a74ee44b29077888da2 (patch)
tree5ebdd9666b024128533baa17c6a76f244a2d6d6b /src/imports/platform/qquickplatformmenu.cpp
parente9e68baf652eca70c6a4c080ed9e49c70c8c9984 (diff)
Platform system tray icon
Change-Id: I25190e1ae485e86cfbed524a418884d47f21e83d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/platform/qquickplatformmenu.cpp')
-rw-r--r--src/imports/platform/qquickplatformmenu.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/imports/platform/qquickplatformmenu.cpp b/src/imports/platform/qquickplatformmenu.cpp
index 7849adf0..4409564d 100644
--- a/src/imports/platform/qquickplatformmenu.cpp
+++ b/src/imports/platform/qquickplatformmenu.cpp
@@ -38,6 +38,7 @@
#include "qquickplatformmenubar_p.h"
#include "qquickplatformmenuitem_p.h"
#include "qquickplatformiconloader_p.h"
+#include "qquickplatformsystemtrayicon_p.h"
#include <QtGui/qicon.h>
#include <QtGui/qcursor.h>
@@ -127,6 +128,7 @@ QQuickPlatformMenu::QQuickPlatformMenu(QObject *parent)
m_type(QPlatformMenu::DefaultMenu),
m_menuBar(nullptr),
m_parentMenu(nullptr),
+ m_systemTrayIcon(nullptr),
m_menuItem(nullptr),
m_iconLoader(nullptr),
m_handle(nullptr)
@@ -162,10 +164,13 @@ QPlatformMenu * QQuickPlatformMenu::create()
m_handle = m_menuBar->handle()->createMenu();
else if (m_parentMenu && m_parentMenu->handle())
m_handle = m_parentMenu->handle()->createSubMenu();
+ else if (m_systemTrayIcon && m_systemTrayIcon->handle())
+ m_handle = m_systemTrayIcon->handle()->createMenu();
// TODO: implement ^
// - QCocoaMenuBar::createMenu()
// - QCocoaMenu::createSubMenu()
+ // - QCocoaSystemTrayIcon::createMenu()
if (!m_handle)
m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformMenu();
@@ -208,6 +213,8 @@ void QQuickPlatformMenu::sync()
if (m_menuBar && m_menuBar->handle())
m_menuBar->handle()->syncMenu(m_handle);
+ else if (m_systemTrayIcon && m_systemTrayIcon->handle())
+ m_systemTrayIcon->handle()->updateMenu(m_handle);
for (QQuickPlatformMenuItem *item : m_items)
item->sync();
@@ -284,6 +291,28 @@ void QQuickPlatformMenu::setParentMenu(QQuickPlatformMenu *menu)
/*!
\readonly
+ \qmlproperty SystemTrayIcon Qt.labs.platform::Menu::systemTrayIcon
+
+ This property holds the system tray icon that the menu belongs to, or \c null
+ if the menu is not in a system tray icon.
+*/
+QQuickPlatformSystemTrayIcon *QQuickPlatformMenu::systemTrayIcon() const
+{
+ return m_systemTrayIcon;
+}
+
+void QQuickPlatformMenu::setSystemTrayIcon(QQuickPlatformSystemTrayIcon *icon)
+{
+ if (m_systemTrayIcon == icon)
+ return;
+
+ m_systemTrayIcon = icon;
+ destroy();
+ emit systemTrayIconChanged();
+}
+
+/*!
+ \readonly
\qmlproperty MenuItem Qt.labs.platform::Menu::menuItem
This property holds the item that presents the menu (in a parent menu).