aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@digia.com>2013-08-26 10:52:38 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-09 14:30:37 +0200
commit49fad77637be8fc2b0744fb33917dc806b701545 (patch)
treefd9214e59819822e425679ecea4604ea8c0ca22c /src/quick
parentf84c6cdced020feaf526ac8e556405cb21466c34 (diff)
Polish items on screen change.
The window device pixel ratio may change. Repaint all items. Change-Id: I09b782800c15ec6290bf79cb7c7a5d6e6c08b528 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquickwindow.cpp21
-rw-r--r--src/quick/items/qquickwindow.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index aaadae5d1d..21e1a009b0 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -279,6 +279,26 @@ void QQuickWindow::update()
d->windowManager->update(this);
}
+void forcePolishHelper(QQuickItem *item)
+{
+ if (item->flags() & QQuickItem::ItemHasContents) {
+ item->polish();
+ }
+
+ QList <QQuickItem *> items = item->childItems();
+ for (int i=0; i<items.size(); ++i)
+ forcePolishHelper(items.at(i));
+}
+
+/*!
+ Schedules polish events on all items in the scene.
+*/
+void QQuickWindow::forcePolish()
+{
+ Q_D(QQuickWindow);
+ forcePolishHelper(d->contentItem);
+}
+
void forceUpdate(QQuickItem *item)
{
if (item->flags() & QQuickItem::ItemHasContents)
@@ -389,6 +409,7 @@ void QQuickWindowPrivate::init(QQuickWindow *c)
QObject::connect(context, SIGNAL(invalidated()), q, SLOT(cleanupSceneGraph()), Qt::DirectConnection);
QObject::connect(q, SIGNAL(focusObjectChanged(QObject*)), q, SIGNAL(activeFocusItemChanged()));
+ QObject::connect(q, SIGNAL(screenChanged(QScreen*)), q, SLOT(forcePolish()));
}
/*!
diff --git a/src/quick/items/qquickwindow.h b/src/quick/items/qquickwindow.h
index fad67e9734..9ebc03bb07 100644
--- a/src/quick/items/qquickwindow.h
+++ b/src/quick/items/qquickwindow.h
@@ -141,6 +141,7 @@ Q_SIGNALS:
public Q_SLOTS:
void update();
+ void forcePolish();
void releaseResources();
protected: