summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-25 12:27:20 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-25 12:14:06 +0000
commit68abe8164943e50f3bac4260a6985c795f5abe3e (patch)
treeb9d19329ddac05a44c1c5119958b08c474848d16
parent1d61e0052b6a94546f264c3a37a19db09003d7c8 (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.cpp15
-rw-r--r--src/controls/qquickmenubar.cpp4
-rw-r--r--src/controls/qquickmenuitem.cpp2
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);