From d021abf3b7c5757e3b4732fe144ab8999c512ae1 Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Fri, 26 Feb 2016 09:20:50 +0100 Subject: [PATCH] Fixed video z-order stacking --- src/domain/UBGraphicsMediaItem.cpp | 38 ++-------------------------- src/domain/UBGraphicsMediaItem.h | 5 ---- src/domain/UBGraphicsProxyWidget.cpp | 8 ++++-- 3 files changed, 8 insertions(+), 43 deletions(-) diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index f0f7f598..beaa39c9 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -76,10 +76,11 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte mDummyVideoWidget->setMinimumSize(320, 240); mDummyVideoWidget->setWindowOpacity(0.0); - mVideoItem = new QGraphicsVideoItem(); + mVideoItem = new QGraphicsVideoItem(this); // Necessary to allow the video to be displayed on secondary screen mVideoItem->setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); + mVideoItem->setFlag(ItemStacksBehindParent, true); mMediaObject->setVideoOutput(mVideoItem); @@ -179,13 +180,6 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria } } - // Pass on geometry and position changes to the videoItem - else if (mVideoItem && change == QGraphicsItem::ItemTransformChange) - mVideoItem->setTransform(qvariant_cast(value)); - - else if (mVideoItem && change == QGraphicsItem::ItemPositionChange) - mVideoItem->setPos(qvariant_cast(value)); - return UBGraphicsProxyWidget::itemChange(change, value); } @@ -353,34 +347,6 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) } -void UBGraphicsMediaItem::setPos(const QPointF &pos) -{ - QGraphicsItem::setPos(pos); - if (mVideoItem) - mVideoItem->setPos(pos); -} - -void UBGraphicsMediaItem::setPos(qreal x, qreal y) -{ - setPos(QPointF(x, y)); -} - -void UBGraphicsMediaItem::setMatrix(const QMatrix &matrix, bool combine) -{ - QGraphicsItem::setMatrix(matrix, combine); - - if (mVideoItem) - mVideoItem->setMatrix(matrix, combine); -} - -void UBGraphicsMediaItem::setTransform(const QTransform &matrix, bool combine) -{ - QGraphicsItem::setTransform(matrix, combine); - - if (mVideoItem) - mVideoItem->setTransform(matrix, combine); -} - void UBGraphicsMediaItem::resize(const QSizeF & pSize) { // Resize the video, then the rest of the Item diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index d05c1871..8014f85c 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -108,11 +108,6 @@ public: void setSelected(bool selected); - virtual void setPos(const QPointF &pos); - virtual void setPos(qreal x, qreal y); - virtual void setMatrix(const QMatrix &matrix, bool combine = false); - virtual void setTransform(const QTransform &matrix, bool combine = false); - public slots: diff --git a/src/domain/UBGraphicsProxyWidget.cpp b/src/domain/UBGraphicsProxyWidget.cpp index 054ee6d2..efae1bca 100644 --- a/src/domain/UBGraphicsProxyWidget.cpp +++ b/src/domain/UBGraphicsProxyWidget.cpp @@ -89,8 +89,12 @@ QVariant UBGraphicsProxyWidget::itemChange(GraphicsItemChange change, const QVar } } - QVariant newValue = Delegate()->itemChange(change, value); - return QGraphicsProxyWidget::itemChange(change, newValue); + if (Delegate()) { + QVariant newValue = Delegate()->itemChange(change, value); + return QGraphicsProxyWidget::itemChange(change, newValue); + } + else + return QGraphicsProxyWidget::itemChange(change, value); } void UBGraphicsProxyWidget::setUuid(const QUuid &pUuid)