diff options
Diffstat (limited to 'src/widgets/widgets/qdockwidget.cpp')
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index f98e0e44db..28a7cee2a0 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -267,9 +267,11 @@ QDockWidgetLayout::~QDockWidgetLayout() bool QDockWidgetLayout::nativeWindowDeco() const { bool floating = parentWidget()->isWindow(); +#if QT_CONFIG(tabbar) if (auto groupWindow = qobject_cast<const QDockWidgetGroupWindow *>(parentWidget()->parentWidget())) floating = floating || groupWindow->tabLayoutInfo(); +#endif return nativeWindowDeco(floating); } @@ -1535,10 +1537,10 @@ bool QDockWidget::event(QEvent *event) d->toggleViewAction->setChecked(true); QPoint parentTopLeft(0, 0); if (isWindow()) { - if (const QWindow *window = windowHandle()) - parentTopLeft = window->screen()->availableVirtualGeometry().topLeft(); - else - parentTopLeft = QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft(); + const QScreen *screen = d->associatedScreen(); + parentTopLeft = screen + ? screen->availableVirtualGeometry().topLeft() + : QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft(); } emit visibilityChanged(geometry().right() >= parentTopLeft.x() && geometry().bottom() >= parentTopLeft.y()); } @@ -1556,8 +1558,10 @@ bool QDockWidget::event(QEvent *event) const QObjectList &siblings = win->children(); onTop = siblings.count() > 0 && siblings.last() == (QObject*)this; } +#if QT_CONFIG(tabbar) if (!isFloating() && layout != 0 && onTop) layout->raise(this); +#endif break; } case QEvent::WindowActivate: @@ -1590,7 +1594,7 @@ bool QDockWidget::event(QEvent *event) // This is a workaround for loosing the mouse on Vista. QPoint pos = QCursor::pos(); QMouseEvent fake(QEvent::MouseMove, mapFromGlobal(pos), pos, Qt::NoButton, - QApplication::mouseButtons(), QApplication::keyboardModifiers()); + QGuiApplication::mouseButtons(), QGuiApplication::keyboardModifiers()); d->mouseMoveEvent(&fake); } break; |