summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-06-28 10:19:17 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-03 14:47:49 +0200
commitd3af02f190461c9b98dc2f575aa84945b48ec360 (patch)
treedb37878e0103cf27dba1d04efda01e6dedad5a3f /src/widgets
parent9180d9aa8bfb9e9f66fad13f194398a98698eb77 (diff)
Fix QDockWidgets on XCB.
Do not use native decoration. Task-number: QTBUG-26296 Change-Id: I15a6ace737a08003ee196bde3d0b5ca65aa00408 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qdockwidget.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 551549f97e..c35b761a20 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -207,13 +207,18 @@ bool QDockWidgetLayout::nativeWindowDeco() const
return nativeWindowDeco(parentWidget()->isWindow());
}
+static bool isXcb()
+{
+ static const bool xcb = !QGuiApplication::platformName().compare(QLatin1String("xcb"), Qt::CaseInsensitive);
+ return xcb;
+}
+
bool QDockWidgetLayout::nativeWindowDeco(bool floating) const
{
-#if defined(Q_WS_X11) || defined(Q_OS_WINCE)
- Q_UNUSED(floating);
+#ifdef Q_OS_WINCE
return false;
#else
- return floating && item_list[QDockWidgetLayout::TitleBar] == 0;
+ return !isXcb() && (floating && item_list[QDockWidgetLayout::TitleBar] == 0);
#endif
}
@@ -750,19 +755,19 @@ void QDockWidgetPrivate::endDrag(bool abort)
if (state->ownWidgetItem)
delete state->widgetItem;
mwLayout->restore();
-#ifdef Q_WS_X11
- // get rid of the X11BypassWindowManager window flag and activate the resizer
- Qt::WindowFlags flags = q->windowFlags();
- flags &= ~Qt::X11BypassWindowManagerHint;
- q->setWindowFlags(flags);
- resizer->setActive(QWidgetResizeHandler::Resize, true);
- q->show();
-#else
- QDockWidgetLayout *myLayout
- = qobject_cast<QDockWidgetLayout*>(layout);
- resizer->setActive(QWidgetResizeHandler::Resize,
- myLayout->widgetForRole(QDockWidgetLayout::TitleBar) != 0);
-#endif
+ if (isXcb()) {
+ // get rid of the X11BypassWindowManager window flag and activate the resizer
+ Qt::WindowFlags flags = q->windowFlags();
+ flags &= ~Qt::X11BypassWindowManagerHint;
+ q->setWindowFlags(flags);
+ resizer->setActive(QWidgetResizeHandler::Resize, true);
+ q->show();
+ } else {
+ QDockWidgetLayout *myLayout
+ = qobject_cast<QDockWidgetLayout*>(layout);
+ resizer->setActive(QWidgetResizeHandler::Resize,
+ myLayout->widgetForRole(QDockWidgetLayout::TitleBar) != 0);
+ }
undockedGeometry = q->geometry();
q->activateWindow();
} else {