diff options
author | Mitch Curtis <[email protected]> | 2023-11-21 11:12:31 +0800 |
---|---|---|
committer | Mitch Curtis <[email protected]> | 2024-01-16 18:09:10 +0800 |
commit | d84556e6bcc91690e5fccd1a909707698b6be56c (patch) | |
tree | 9047a4e927eed8ca643680a8d0c02cd4ec1a8cd3 /src/quicktemplates/qquickmenu_p_p.h | |
parent | 8ba21bb39fdb92de889c3ba5f3bc10428576a5f3 (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.h | 22 |
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 |