diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-21 10:34:41 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-21 10:34:41 +0100 |
commit | c08ec43406c4ebe2e93942a8b07871c73aafde51 (patch) | |
tree | 69e84f955ce6d0f66d39eae36b07ae0f8ef65e56 /src/quickwidgets | |
parent | 242067390f3bd891b162164a2d01a3a982c64fa2 (diff) | |
parent | 5b82c1b7abc515274e6348136356bbf8f1374e4a (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I3567f741394f912d4312460e85555b6c39b61cb4
Diffstat (limited to 'src/quickwidgets')
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 37 |
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; } |