summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qguiapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r--src/gui/kernel/qguiapplication.cpp52
1 files changed, 22 insertions, 30 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 75311616a4..19f15d88bf 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1646,10 +1646,6 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv
QGuiApplicationPrivate::reportGeometryChange(
static_cast<QWindowSystemInterfacePrivate::ScreenGeometryEvent *>(e));
break;
- case QWindowSystemInterfacePrivate::ScreenAvailableGeometry:
- QGuiApplicationPrivate::reportAvailableGeometryChange(
- static_cast<QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *>(e));
- break;
case QWindowSystemInterfacePrivate::ScreenLogicalDotsPerInch:
QGuiApplicationPrivate::reportLogicalDotsPerInchChange(
static_cast<QWindowSystemInterfacePrivate::ScreenLogicalDotsPerInchEvent *>(e));
@@ -2546,40 +2542,36 @@ void QGuiApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate:
return;
QScreen *s = e->screen.data();
- s->d_func()->geometry = e->geometry;
- Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
- s->d_func()->updatePrimaryOrientation();
+ bool geometryChanged = e->geometry != s->d_func()->geometry;
+ s->d_func()->geometry = e->geometry;
- emit s->geometryChanged(s->geometry());
- emit s->physicalSizeChanged(s->physicalSize());
- emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch());
- emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch());
- foreach (QScreen* sibling, s->virtualSiblings())
- emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
+ bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry;
+ s->d_func()->availableGeometry = e->availableGeometry;
- if (s->primaryOrientation() != primaryOrientation)
- emit s->primaryOrientationChanged(s->primaryOrientation());
+ if (geometryChanged) {
+ Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
+ s->d_func()->updatePrimaryOrientation();
- if (s->d_func()->orientation == Qt::PrimaryOrientation)
- updateFilteredScreenOrientation(s);
-}
+ emit s->geometryChanged(s->geometry());
+ emit s->physicalSizeChanged(s->physicalSize());
+ emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch());
+ emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch());
-void QGuiApplicationPrivate::reportAvailableGeometryChange(
- QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *e)
-{
- // This operation only makes sense after the QGuiApplication constructor runs
- if (QCoreApplication::startingUp())
- return;
+ if (s->primaryOrientation() != primaryOrientation)
+ emit s->primaryOrientationChanged(s->primaryOrientation());
- if (!e->screen)
- return;
+ if (s->d_func()->orientation == Qt::PrimaryOrientation)
+ updateFilteredScreenOrientation(s);
+ }
- QScreen *s = e->screen.data();
- s->d_func()->availableGeometry = e->availableGeometry;
+ if (availableGeometryChanged)
+ emit s->availableGeometryChanged(s->geometry());
- foreach (QScreen* sibling, s->virtualSiblings())
- emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
+ if (geometryChanged || availableGeometryChanged) {
+ foreach (QScreen* sibling, s->virtualSiblings())
+ emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
+ }
}
void QGuiApplicationPrivate::reportLogicalDotsPerInchChange(QWindowSystemInterfacePrivate::ScreenLogicalDotsPerInchEvent *e)