diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-07-09 11:17:37 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-12 12:41:30 +0200 |
commit | 6c37fb70d695df001999c78a27ca50d6d2ac6517 (patch) | |
tree | 18646ddc6344e9f59a0b3e1383f2dc6527fbcd7b /src | |
parent | e602003f87fe8483be3963bb6b42692b727d1b3d (diff) |
Consider virtual screen when determining dock widget visibility.
Task-number: QTBUG-32260
Change-Id: I8b28e3869a6e3b1ed12a311dfa0100979098fc4b
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 7cd7172ef5..45e3f1b10b 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -49,6 +49,7 @@ #include <qevent.h> #include <qfontmetrics.h> #include <qwindow.h> +#include <qscreen.h> #include <qmainwindow.h> #include <qrubberband.h> #include <qstylepainter.h> @@ -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: |