aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickwidgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-21 10:34:41 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-21 10:34:41 +0100
commitc08ec43406c4ebe2e93942a8b07871c73aafde51 (patch)
tree69e84f955ce6d0f66d39eae36b07ae0f8ef65e56 /src/quickwidgets
parent242067390f3bd891b162164a2d01a3a982c64fa2 (diff)
parent5b82c1b7abc515274e6348136356bbf8f1374e4a (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Diffstat (limited to 'src/quickwidgets')
-rw-r--r--src/quickwidgets/qquickwidget.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index 1f9056d062..875b68b3ac 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -1099,6 +1099,12 @@ void QQuickWidget::showEvent(QShowEvent *)
d->render(true);
else
triggerUpdate();
+ QWindowPrivate *offscreenPrivate = QWindowPrivate::get(d->offscreenWindow);
+ if (!offscreenPrivate->visible) {
+ offscreenPrivate->visible = true;
+ emit d->offscreenWindow->visibleChanged(true);
+ offscreenPrivate->updateVisibility();
+ }
}
/*! \reimp */
@@ -1106,6 +1112,12 @@ void QQuickWidget::hideEvent(QHideEvent *)
{
Q_D(QQuickWidget);
d->invalidateRenderControl();
+ QWindowPrivate *offscreenPrivate = QWindowPrivate::get(d->offscreenWindow);
+ if (offscreenPrivate->visible) {
+ offscreenPrivate->visible = false;
+ emit d->offscreenWindow->visibleChanged(false);
+ offscreenPrivate->updateVisibility();
+ }
}
/*! \reimp */
@@ -1145,19 +1157,38 @@ void QQuickWidget::wheelEvent(QWheelEvent *e)
}
#endif
-
+/*!
+ \reimp
+*/
void QQuickWidget::focusInEvent(QFocusEvent * event)
{
Q_D(QQuickWidget);
d->offscreenWindow->focusInEvent(event);
}
+/*!
+ \reimp
+*/
void QQuickWidget::focusOutEvent(QFocusEvent * event)
{
Q_D(QQuickWidget);
d->offscreenWindow->focusOutEvent(event);
}
+static Qt::WindowState resolveWindowState(Qt::WindowStates states)
+{
+ // No more than one of these 3 can be set
+ if (states & Qt::WindowMinimized)
+ return Qt::WindowMinimized;
+ if (states & Qt::WindowMaximized)
+ return Qt::WindowMaximized;
+ if (states & Qt::WindowFullScreen)
+ return Qt::WindowFullScreen;
+
+ // No state means "windowed" - we ignore Qt::WindowActive
+ return Qt::WindowNoState;
+}
+
/*! \reimp */
bool QQuickWidget::event(QEvent *e)
{
@@ -1191,6 +1222,10 @@ bool QQuickWidget::event(QEvent *e)
d->updatePosition();
break;
+ case QEvent::WindowStateChange:
+ d->offscreenWindow->setWindowState(resolveWindowState(windowState()));
+ break;
+
default:
break;
}