aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickwidgets
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@digia.com>2014-03-07 16:46:51 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-10 10:34:59 +0100
commit2df6031b5935fafcada04bc15b281c63bdbfabf9 (patch)
treefbb4069faf8990ce94e8db79fb78eb8ca5196018 /src/quickwidgets
parent4c6c6d9a1743acf712b83e4dc9330a36afa70f80 (diff)
QQuickWidget: handle resize to empty size
Resizing to an empty size needs to be handled as if the widget was hidden. Restoring to a non-empty size is like a show, except that we are rendering synchronously. Task-number: QTBUG-37046 Change-Id: I572e4763c4a28bfe7347868e109acca5b357db50 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quickwidgets')
-rw-r--r--src/quickwidgets/qquickwidget.cpp14
-rw-r--r--src/quickwidgets/qquickwidget_p.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index f25f9a2f35..5f470e46f0 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -98,6 +98,7 @@ QQuickWidgetPrivate::QQuickWidgetPrivate()
, updateTimer(0)
, eventPending(false)
, updatePending(false)
+ , fakeHidden(false)
{
renderControl = new QQuickRenderControl;
offscreenWindow = new QQuickWindow(renderControl);
@@ -713,6 +714,19 @@ void QQuickWidget::resizeEvent(QResizeEvent *e)
if (d->resizeMode == SizeRootObjectToView)
d->updateSize();
+ if (e->size().isEmpty()) {
+ //stop rendering
+ QQuickWindowPrivate::get(d->offscreenWindow)->forceRendering = false;
+ d->fakeHidden = true;
+ return;
+ }
+ if (d->fakeHidden) {
+ //restart rendering
+ QQuickWindowPrivate::get(d->offscreenWindow)->forceRendering = true;
+ d->fakeHidden = false;
+ d->renderControl->sync();
+ }
+
d->createContext();
createFramebufferObject();
d->offscreenWindow->resizeEvent(e);
diff --git a/src/quickwidgets/qquickwidget_p.h b/src/quickwidgets/qquickwidget_p.h
index 1d0b4e1bbe..2d2d6500b2 100644
--- a/src/quickwidgets/qquickwidget_p.h
+++ b/src/quickwidgets/qquickwidget_p.h
@@ -114,6 +114,7 @@ public:
int updateTimer;
bool eventPending;
bool updatePending;
+ bool fakeHidden;
};
QT_END_NAMESPACE