diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-25 12:27:20 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-25 12:14:06 +0000 |
commit | 68abe8164943e50f3bac4260a6985c795f5abe3e (patch) | |
tree | b9d19329ddac05a44c1c5119958b08c474848d16 | |
parent | 1d61e0052b6a94546f264c3a37a19db09003d7c8 (diff) |
Disable platform menus on XCB
Context menus and combobox popups no longer work with QDBusPlatformMenu,
which only works in the global menubar or system tray icon.
Change-Id: I65d037c8eb9e8f0f462ddc2dfb36843c062714b3
Task-number: QTBUG-51372
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
-rw-r--r-- | src/controls/qquickmenu.cpp | 15 | ||||
-rw-r--r-- | src/controls/qquickmenubar.cpp | 4 | ||||
-rw-r--r-- | src/controls/qquickmenuitem.cpp | 2 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/controls/qquickmenu.cpp b/src/controls/qquickmenu.cpp index 03b8c9d70..af6514257 100644 --- a/src/controls/qquickmenu.cpp +++ b/src/controls/qquickmenu.cpp @@ -259,6 +259,7 @@ QT_BEGIN_NAMESPACE QQuickMenu1::QQuickMenu1(QObject *parent) : QQuickMenuText(parent, QQuickMenuItemType::Menu), + m_platformMenu(0), m_itemsCount(0), m_selectedIndex(-1), m_parentWindow(0), @@ -274,12 +275,14 @@ QQuickMenu1::QQuickMenu1(QObject *parent) { connect(this, SIGNAL(__textChanged()), this, SIGNAL(titleChanged())); - m_platformMenu = QGuiApplicationPrivate::platformTheme()->createPlatformMenu(); - if (m_platformMenu) { - connect(m_platformMenu, SIGNAL(aboutToShow()), this, SIGNAL(aboutToShow())); - connect(m_platformMenu, SIGNAL(aboutToHide()), this, SLOT(hideMenu())); - if (platformItem()) - platformItem()->setMenu(m_platformMenu); + if (QGuiApplication::platformName() != QStringLiteral("xcb")) { // QTBUG-51372 + m_platformMenu = QGuiApplicationPrivate::platformTheme()->createPlatformMenu(); + if (m_platformMenu) { + connect(m_platformMenu, SIGNAL(aboutToShow()), this, SIGNAL(aboutToShow())); + connect(m_platformMenu, SIGNAL(aboutToHide()), this, SLOT(hideMenu())); + if (platformItem()) + platformItem()->setMenu(m_platformMenu); + } } if (const QFont *font = QGuiApplicationPrivate::platformTheme()->font(QPlatformTheme::MenuItemFont)) m_font = *const_cast<QFont*>(font); diff --git a/src/controls/qquickmenubar.cpp b/src/controls/qquickmenubar.cpp index d13787731..60673366d 100644 --- a/src/controls/qquickmenubar.cpp +++ b/src/controls/qquickmenubar.cpp @@ -99,6 +99,10 @@ void QQuickMenuBar1::setNative(bool native) void QQuickMenuBar1::setNativeNoNotify(bool native) { + // QTBUG-51372 + if (QGuiApplication::platformName() == QStringLiteral("xcb")) + return; + if (native) { if (!m_platformMenuBar) { m_platformMenuBar = QGuiApplicationPrivate::platformTheme()->createPlatformMenuBar(); diff --git a/src/controls/qquickmenuitem.cpp b/src/controls/qquickmenuitem.cpp index 47365da76..b4b40ae0e 100644 --- a/src/controls/qquickmenuitem.cpp +++ b/src/controls/qquickmenuitem.cpp @@ -53,7 +53,7 @@ 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) { + if (type >= 0 && QGuiApplication::platformName() != QStringLiteral("xcb")) { // QTBUG-51372) m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); if (m_platformItem) m_platformItem->setRole(QPlatformMenuItem::TextHeuristicRole); |