summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow_p.h
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-05-19 11:51:31 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-06-18 20:06:27 +0200
commitbcaf2f08d9189c6d677143cbb8455b2a7fe900b7 (patch)
treeeabe20af458eda0267c67e6f6f8f2d9aed87cfe5 /src/gui/kernel/qwindow_p.h
parenta29b65af05b4d501e6b1d8a72be50366666a3caa (diff)
Fix screen handling for child windows.
Change the semantics of QWindowPrivate::screen to contain the screen of top level window only. Child windows always return the screen of their toplevel window by recursing up. The QPA plugins then no longer need to report screen changes for child windows. Change setScreen() accordingly, bail out for child windows, and emit screenChanged() recursively. Also add a check to setParent() preventing screen changes. Task-number: QTBUG-36659 Change-Id: I19c8e12217cba1513e947a027f2492abc7b98816 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/gui/kernel/qwindow_p.h')
-rw-r--r--src/gui/kernel/qwindow_p.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h
index 4305edea51..0c58745735 100644
--- a/src/gui/kernel/qwindow_p.h
+++ b/src/gui/kernel/qwindow_p.h
@@ -95,7 +95,7 @@ public:
, modality(Qt::NonModal)
, blockedByModalWindow(false)
, transientParent(0)
- , screen(0)
+ , topLevelScreen(0)
#ifndef QT_NO_CURSOR
, cursor(Qt::ArrowCursor)
, hasCursor(false)
@@ -131,7 +131,11 @@ public:
void updateVisibility();
void _q_clearAlert();
- void setScreen(QScreen *newScreen, bool recreate);
+ bool windowRecreationRequired(QScreen *newScreen) const;
+ void setTopLevelScreen(QScreen *newScreen, bool recreate);
+ void connectToScreen(QScreen *topLevelScreen);
+ void disconnectFromScreen();
+ void emitScreenChangedRecursion(QScreen *newScreen);
virtual void clearFocusObject();
@@ -165,7 +169,7 @@ public:
bool blockedByModalWindow;
QPointer<QWindow> transientParent;
- QScreen *screen;
+ QScreen *topLevelScreen;
#ifndef QT_NO_CURSOR
QCursor cursor;