aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates/qquickmenu_p_p.h
diff options
context:
space:
mode:
authorMitch Curtis <[email protected]>2023-11-21 11:12:31 +0800
committerMitch Curtis <[email protected]>2024-01-16 18:09:10 +0800
commitd84556e6bcc91690e5fccd1a909707698b6be56c (patch)
tree9047a4e927eed8ca643680a8d0c02cd4ec1a8cd3 /src/quicktemplates/qquickmenu_p_p.h
parent8ba21bb39fdb92de889c3ba5f3bc10428576a5f3 (diff)
Add beginnings of native Menu backend
This patch gets the basic functionality and initial API in place so that work on MenuBar can begin. Task-number: QTBUG-69558 Change-Id: I94df848f771d38cd1cabb964b695d383f66240f2 Reviewed-by: Richard Moe Gustavsen <[email protected]>
Diffstat (limited to 'src/quicktemplates/qquickmenu_p_p.h')
-rw-r--r--src/quicktemplates/qquickmenu_p_p.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/quicktemplates/qquickmenu_p_p.h b/src/quicktemplates/qquickmenu_p_p.h
index 509614d2d1..cbad7ac597 100644
--- a/src/quicktemplates/qquickmenu_p_p.h
+++ b/src/quicktemplates/qquickmenu_p_p.h
@@ -18,6 +18,8 @@
#include <QtCore/qlist.h>
#include <QtCore/qpointer.h>
+#include <QtGui/qpa/qplatformmenu.h>
+
#include <QtQuickTemplates2/private/qquickmenu_p.h>
#include <QtQuickTemplates2/private/qquickpopup_p_p.h>
@@ -27,6 +29,7 @@ class QQuickAction;
class QQmlComponent;
class QQmlObjectModel;
class QQuickMenuItem;
+class QQuickNativeMenuItem;
class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuPrivate : public QQuickPopupPrivate
{
@@ -42,11 +45,24 @@ public:
void init();
+ bool usingNativeMenu();
+ bool createNativeMenu();
+ void syncWithNativeMenu();
+ void destroyNativeMenu();
+ void setNativeMenuVisible(bool visible);
+
QQuickItem *itemAt(int index) const;
void insertItem(int index, QQuickItem *item);
void moveItem(int from, int to);
void removeItem(int index, QQuickItem *item);
+ int indexOfActionInNativeItems(QQuickAction *action) const;
+ int indexOfMenuInNativeItems(QQuickMenu *menu) const;
+ void insertNativeItem(int index, QQuickAction *action);
+ void insertNativeItem(int index, QQuickMenu *menu);
+ void removeNativeItem(QQuickAction *action);
+ void removeNativeItem(QQuickMenu *menu);
+
QQuickItem *beginCreateItem();
void completeCreateItem();
@@ -94,6 +110,8 @@ public:
QPalette defaultPalette() const override;
bool cascade = false;
+ bool requestNative = false;
+ bool triedToCreateNativeMenu = false;
int hoverTimer = 0;
int currentIndex = -1;
qreal overlap = 0;
@@ -105,6 +123,10 @@ public:
QQmlComponent *delegate = nullptr;
QString title;
QQuickIcon icon;
+
+ // For native menu support.
+ std::unique_ptr<QPlatformMenu> nativeHandle = nullptr;
+ QList<QQuickNativeMenuItem *> nativeItems;
};
QT_END_NAMESPACE