summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/controls/qquickmenu.cpp2
-rw-r--r--src/controls/qquickmenu_p.h1
-rw-r--r--src/controls/qquickmenuitem.cpp25
-rw-r--r--src/controls/qquickmenuitem_p.h11
-rw-r--r--src/controls/qquickmenuitemcontainer_p.h2
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()