From 92fcd0a3fb2ee0d1ba242607c1aa5a29864d3650 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 1 Jun 2017 23:36:57 +0200 Subject: 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 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickmenu_p_p.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/quicktemplates2/qquickmenu_p_p.h') 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 #include +#include #include 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 *prop, int index); static void contentData_clear(QQmlListProperty *prop); + bool cascade; + qreal overlap; + QPointer parentMenu; QPointer currentItem; QQuickItem *contentItem; // TODO: cleanup QVector contentData; -- cgit v1.2.3