summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qdesktopwidget.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-09-03 16:10:47 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-09-22 13:03:21 +0200
commita6316e6e744815c89b2d7bd7946e04549d183769 (patch)
tree8d24badd8a81af8531172015ba7b842ba0af4d9a /src/widgets/kernel/qdesktopwidget.cpp
parent4918623f7637f348977653f4af262871a32e1364 (diff)
Fix emission of QDesktopWidget::workAreaResized().
Connect to QScreen::availableGeometryChanged(). Task-number: QTBUG-32567 Change-Id: I2097d80faa83ae062f7e149122fba26d23432e95 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src/widgets/kernel/qdesktopwidget.cpp')
-rw-r--r--src/widgets/kernel/qdesktopwidget.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp
index 3975e423a0..2ac1893256 100644
--- a/src/widgets/kernel/qdesktopwidget.cpp
+++ b/src/widgets/kernel/qdesktopwidget.cpp
@@ -97,6 +97,8 @@ void QDesktopWidgetPrivate::_q_updateScreens()
screenWidget->setGeometry(qScreen->geometry());
QObject::connect(qScreen, SIGNAL(geometryChanged(QRect)),
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
+ QObject::connect(qScreen, SIGNAL(availableGeometryChanged(QRect)),
+ q, SLOT(_q_availableGeometryChanged()), Qt::QueuedConnection);
QObject::connect(qScreen, SIGNAL(destroyed()),
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
screens.append(screenWidget);
@@ -122,10 +124,15 @@ void QDesktopWidgetPrivate::_q_updateScreens()
if (oldLength != targetLength)
emit q->screenCountChanged(targetLength);
- foreach (int changedScreen, changedScreens) {
+ foreach (int changedScreen, changedScreens)
emit q->resized(changedScreen);
- emit q->workAreaResized(changedScreen);
- }
+}
+
+void QDesktopWidgetPrivate::_q_availableGeometryChanged()
+{
+ Q_Q(QDesktopWidget);
+ if (QScreen *screen = qobject_cast<QScreen *>(q->sender()))
+ emit q->workAreaResized(QGuiApplication::screens().indexOf(screen));
}
QDesktopWidget::QDesktopWidget()