diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 7cd7172ef50..45e3f1b10bd 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -1387,9 +1388,17 @@ bool QDockWidget::event(QEvent *event) d->toggleViewAction->setChecked(false); emit visibilityChanged(false); break; - case QEvent::Show: + case QEvent::Show: { d->toggleViewAction->setChecked(true); - emit visibilityChanged(geometry().right() >= 0 && geometry().bottom() >= 0); + QPoint parentTopLeft(0, 0); + if (isWindow()) { + if (const QWindow *window = windowHandle()) + parentTopLeft = window->screen()->availableVirtualGeometry().topLeft(); + else + parentTopLeft = QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft(); + } + emit visibilityChanged(geometry().right() >= parentTopLeft.x() && geometry().bottom() >= parentTopLeft.y()); +} break; #endif case QEvent::ApplicationLayoutDirectionChange: