diff options
-rw-r--r-- | src/controls/qquickmenu.cpp | 2 | ||||
-rw-r--r-- | src/controls/qquickmenu_p.h | 1 | ||||
-rw-r--r-- | src/controls/qquickmenuitem.cpp | 25 | ||||
-rw-r--r-- | src/controls/qquickmenuitem_p.h | 11 | ||||
-rw-r--r-- | src/controls/qquickmenuitemcontainer_p.h | 2 |
5 files changed, 21 insertions, 20 deletions
diff --git a/src/controls/qquickmenu.cpp b/src/controls/qquickmenu.cpp index 361c4683..7aa52d56 100644 --- a/src/controls/qquickmenu.cpp +++ b/src/controls/qquickmenu.cpp @@ -236,7 +236,7 @@ QT_BEGIN_NAMESPACE */ QQuickMenu::QQuickMenu(QObject *parent) - : QQuickMenuText(parent), + : QQuickMenuText(parent, QQuickMenuItemType::Menu), m_itemsCount(0), m_selectedIndex(-1), m_parentWindow(0), diff --git a/src/controls/qquickmenu_p.h b/src/controls/qquickmenu_p.h index c1fab0b5..c6bf24e2 100644 --- a/src/controls/qquickmenu_p.h +++ b/src/controls/qquickmenu_p.h @@ -132,7 +132,6 @@ public: QQuickItem *menuContentItem() const { return m_menuContentItem; } bool popupVisible() const { return m_popupVisible; } - QQuickMenuItemType::MenuItemType type() { return QQuickMenuItemType::Menu; } bool isNative() { return m_platformMenu != 0; } protected Q_SLOTS: diff --git a/src/controls/qquickmenuitem.cpp b/src/controls/qquickmenuitem.cpp index 60d882c4..105b66ac 100644 --- a/src/controls/qquickmenuitem.cpp +++ b/src/controls/qquickmenuitem.cpp @@ -51,12 +51,15 @@ QT_BEGIN_NAMESPACE -QQuickMenuBase::QQuickMenuBase(QObject *parent) - : QObject(parent), m_visible(true), m_parentMenu(0), m_container(0), m_visualItem(0) -{ - m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); - if (m_platformItem) - m_platformItem->setRole(QPlatformMenuItem::TextHeuristicRole); +QQuickMenuBase::QQuickMenuBase(QObject *parent, int type) + : QObject(parent), m_visible(true), m_type(static_cast<QQuickMenuItemType::MenuItemType>(type)) + , m_parentMenu(0), m_container(0), m_platformItem(0), m_visualItem(0) +{ + if (type >= 0) { + m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); + if (m_platformItem) + m_platformItem->setRole(QPlatformMenuItem::TextHeuristicRole); + } } QQuickMenuBase::~QQuickMenuBase() @@ -98,7 +101,7 @@ QQuickMenu *QQuickMenuBase::parentMenu() const void QQuickMenuBase::setParentMenu(QQuickMenu *parentMenu) { - if (m_parentMenu && m_parentMenu->platformMenu()) + if (m_platformItem && m_parentMenu && m_parentMenu->platformMenu()) m_parentMenu->platformMenu()->removeMenuItem(m_platformItem); m_parentMenu = parentMenu; @@ -155,14 +158,14 @@ void QQuickMenuBase::setVisualItem(QQuickItem *item) */ QQuickMenuSeparator::QQuickMenuSeparator(QObject *parent) - : QQuickMenuBase(parent) + : QQuickMenuBase(parent, QQuickMenuItemType::Separator) { if (platformItem()) platformItem()->setIsSeparator(true); } -QQuickMenuText::QQuickMenuText(QObject *parent) - : QQuickMenuBase(parent), m_action(new QQuickAction(this)) +QQuickMenuText::QQuickMenuText(QObject *parent, QQuickMenuItemType::MenuItemType type) + : QQuickMenuBase(parent, type), m_action(new QQuickAction(this)) { connect(m_action, SIGNAL(enabledChanged()), this, SLOT(updateEnabled())); connect(m_action, SIGNAL(textChanged()), this, SLOT(updateText())); @@ -417,7 +420,7 @@ void QQuickMenuText::updateIcon() */ QQuickMenuItem::QQuickMenuItem(QObject *parent) - : QQuickMenuText(parent), m_boundAction(0) + : QQuickMenuText(parent, QQuickMenuItemType::Item), m_boundAction(0) { connect(this, SIGNAL(__textChanged()), this, SIGNAL(textChanged())); diff --git a/src/controls/qquickmenuitem_p.h b/src/controls/qquickmenuitem_p.h index a0c70832..3ba719f6 100644 --- a/src/controls/qquickmenuitem_p.h +++ b/src/controls/qquickmenuitem_p.h @@ -66,7 +66,7 @@ class QQuickMenuItemType public: enum MenuItemType { - Separator, + Separator = 0, Item, Menu }; @@ -86,7 +86,7 @@ Q_SIGNALS: void visibleChanged(); public: - QQuickMenuBase(QObject *parent = 0); + QQuickMenuBase(QObject *parent, int type); ~QQuickMenuBase(); bool visible() const { return m_visible; } @@ -105,11 +105,12 @@ public: QQuickItem *visualItem() const; void setVisualItem(QQuickItem *item); - virtual QQuickMenuItemType::MenuItemType type() { return QQuickMenuItemType::Item; } + QQuickMenuItemType::MenuItemType type() { return m_type; } virtual bool isNative() { return m_platformItem != 0; } private: bool m_visible; + QQuickMenuItemType::MenuItemType m_type; QQuickMenu *m_parentMenu; QQuickMenuItemContainer *m_container; QPlatformMenuItem *m_platformItem; @@ -121,8 +122,6 @@ class QQuickMenuSeparator : public QQuickMenuBase Q_OBJECT public: QQuickMenuSeparator(QObject *parent = 0); - - QQuickMenuItemType::MenuItemType type() { return QQuickMenuItemType::Separator; } }; class QQuickMenuText : public QQuickMenuBase @@ -143,7 +142,7 @@ Q_SIGNALS: void __iconChanged(); public: - QQuickMenuText(QObject *parent = 0); + QQuickMenuText(QObject *parent, QQuickMenuItemType::MenuItemType type); ~QQuickMenuText(); bool enabled() const; diff --git a/src/controls/qquickmenuitemcontainer_p.h b/src/controls/qquickmenuitemcontainer_p.h index 9602c3a7..a845994e 100644 --- a/src/controls/qquickmenuitemcontainer_p.h +++ b/src/controls/qquickmenuitemcontainer_p.h @@ -52,7 +52,7 @@ class QQuickMenuItemContainer : public QQuickMenuBase Q_OBJECT public: explicit QQuickMenuItemContainer(QObject *parent = 0) - : QQuickMenuBase(parent) + : QQuickMenuBase(parent, -1) { } ~QQuickMenuItemContainer() |