diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2012-09-05 13:25:03 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-06 14:56:34 +0200 |
commit | bce8b5486d477d20132183110c5bb84b313a5c65 (patch) | |
tree | 93c30d17db5dbd1fa321ce75d5f4a3a8670c0939 /src/imports | |
parent | 06302999da91d6e32ddf9c65171994e375f739ed (diff) | |
download | qtmultimedia-bce8b5486d477d20132183110c5bb84b313a5c65.tar.gz |
Hide the video overlay when the QML element is hidden
An display invalid rect is used for invisible QML
items.
Change-Id: Ifb2a25f1c5387ab8cef1359ac6c3e2f90a42cd10
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@gmail.com>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/multimedia/qdeclarativevideooutput_window.cpp | 17 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativevideooutput_window_p.h | 1 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/imports/multimedia/qdeclarativevideooutput_window.cpp b/src/imports/multimedia/qdeclarativevideooutput_window.cpp index d85a20f54..50c4fd6d1 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_window.cpp +++ b/src/imports/multimedia/qdeclarativevideooutput_window.cpp @@ -48,7 +48,8 @@ QT_BEGIN_NAMESPACE QDeclarativeVideoWindowBackend::QDeclarativeVideoWindowBackend(QDeclarativeVideoOutput *parent) - : QDeclarativeVideoBackend(parent) + : QDeclarativeVideoBackend(parent), + m_visible(true) { } @@ -76,11 +77,21 @@ bool QDeclarativeVideoWindowBackend::init(QMediaService *service) void QDeclarativeVideoWindowBackend::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) { - if (change == QQuickItem::ItemSceneChange && m_videoWindowControl) { + if (!m_videoWindowControl) + return; + + switch (change) { + case QQuickItem::ItemVisibleHasChanged: + m_visible = changeData.boolValue; + updateGeometry(); + break; + case QQuickItem::ItemSceneChange: if (changeData.window) m_videoWindowControl->setWinId(changeData.window->winId()); else m_videoWindowControl->setWinId(0); + break; + default: break; } } @@ -115,7 +126,7 @@ void QDeclarativeVideoWindowBackend::updateGeometry() }; const QRectF canvasRect = q->mapRectToScene(QRectF(0, 0, q->width(), q->height())); - m_videoWindowControl->setDisplayRect(canvasRect.toAlignedRect()); + m_videoWindowControl->setDisplayRect(m_visible ? canvasRect.toAlignedRect() : QRect()); } QSGNode *QDeclarativeVideoWindowBackend::updatePaintNode(QSGNode *oldNode, diff --git a/src/imports/multimedia/qdeclarativevideooutput_window_p.h b/src/imports/multimedia/qdeclarativevideooutput_window_p.h index af2e686f1..c1c7d2fa2 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_window_p.h +++ b/src/imports/multimedia/qdeclarativevideooutput_window_p.h @@ -65,6 +65,7 @@ public: private: QPointer<QVideoWindowControl> m_videoWindowControl; + bool m_visible; }; QT_END_NAMESPACE |