diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-06-01 23:36:57 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-06-13 09:34:39 +0000 |
commit | 92fcd0a3fb2ee0d1ba242607c1aa5a29864d3650 (patch) | |
tree | e55ace5afc75cfaa17f2571fda8cfae2d8f4e9f8 /src/quicktemplates2/qquickmenu_p_p.h | |
parent | 23a80af1b5d31621bf1d342706c9541dd5273b86 (diff) |
Add support for cascading sub-menus
This commit adds initial support for cascading sub-menus by allowing
one to nest declarative Menu declarations. A follow-up commit adds
support for adding, inserting, and removing menus programmatically.
[ChangeLog][Controls][Menu] Added support for cascading sub-menus.
Task-number: QTBUG-60351
Change-Id: I0eee4f74d92a97c09333fcc4348b019782448535
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickmenu_p_p.h')
-rw-r--r-- | src/quicktemplates2/qquickmenu_p_p.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h index b9e0512b..9fd10779 100644 --- a/src/quicktemplates2/qquickmenu_p_p.h +++ b/src/quicktemplates2/qquickmenu_p_p.h @@ -51,11 +51,11 @@ #include <QtCore/qvector.h> #include <QtCore/qpointer.h> +#include <QtQuickTemplates2/private/qquickmenu_p.h> #include <QtQuickTemplates2/private/qquickpopup_p_p.h> QT_BEGIN_NAMESPACE -class QQuickMenu; class QQuickAction; class QQmlComponent; class QQmlObjectModel; @@ -68,10 +68,20 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuPrivate : public QQuickPopupPri public: QQuickMenuPrivate(); + static QQuickMenuPrivate *get(QQuickMenu *menu) + { + return menu->d_func(); + } + QQuickItem *itemAt(int index) const; void insertItem(int index, QQuickItem *item); void moveItem(int from, int to); void removeItem(int index, QQuickItem *item); + + QQuickItem *beginCreateItem(); + void completeCreateItem(); + + QQuickItem *createItem(QQuickMenu *menu); QQuickItem *createItem(QQuickAction *action); void resizeItem(QQuickItem *item); @@ -83,10 +93,16 @@ public: void itemDestroyed(QQuickItem *item) override; void itemGeometryChanged(QQuickItem *, QQuickGeometryChange change, const QRectF &diff) override; + bool blockInput(QQuickItem *item, const QPointF &point) const override; + void onItemPressed(); void onItemHovered(); + void onItemTriggered(); void onItemActiveFocusChanged(); + void openSubMenu(QQuickMenuItem *item, bool activate); + void closeSubMenu(QQuickMenu *subMenu); + int currentIndex() const; void setCurrentIndex(int index); @@ -95,6 +111,9 @@ public: static QObject *contentData_at(QQmlListProperty<QObject> *prop, int index); static void contentData_clear(QQmlListProperty<QObject> *prop); + bool cascade; + qreal overlap; + QPointer<QQuickMenu> parentMenu; QPointer<QQuickMenuItem> currentItem; QQuickItem *contentItem; // TODO: cleanup QVector<QObject *> contentData; |