From 04f3889c3bd800c94bb4c36d5a0e93ebd9dd92ca Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 4 Mar 2013 19:59:19 +0100 Subject: [PATCH] Fix wrong group moving when groups overlap --- src/clipitem.cpp | 26 ++++++++++++++++++-------- src/clipitem.h | 1 + src/customtrackview.cpp | 4 +++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 83b387be..01e195c8 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -119,6 +119,7 @@ ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, i m_baseColor = QColor(141, 215, 166); connect(m_clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData())); } + m_paintColor = m_baseColor; } @@ -789,23 +790,21 @@ void ClipItem::paint(QPainter *painter, QWidget *) { QPalette palette = scene()->palette(); - QColor paintColor; + QColor paintColor = m_paintColor; QColor textColor; QColor textBgColor; QPen framePen; - if (parentItem()) paintColor = QColor(255, 248, 149); - else paintColor = m_baseColor; if (isSelected() || (parentItem() && parentItem()->isSelected())) { textColor = palette.highlightedText().color(); textBgColor = palette.highlight().color(); - paintColor = paintColor.darker(); framePen.setColor(textBgColor); + paintColor.setRed(qMin(paintColor.red() * 2, 255)); } else { textColor = palette.text().color(); textBgColor = palette.window().color(); textBgColor.setAlpha(200); - framePen.setColor(paintColor.darker()); + framePen.setColor(m_paintColor.darker()); } const QRectF exposed = option->exposedRect; const QTransform transformation = painter->worldTransform(); @@ -820,7 +819,7 @@ void ClipItem::paint(QPainter *painter, painter->setClipPath(p.intersected(q)); painter->setPen(Qt::NoPen); painter->fillRect(mappedExposed, paintColor); - painter->setPen(paintColor.darker()); + painter->setPen(m_paintColor.darker()); // draw thumbnails if (KdenliveSettings::videothumbnails() && !isAudioOnly()) { QRectF thumbRect; @@ -1386,8 +1385,10 @@ void ClipItem::resizeEnd(int posx, bool emitChange) QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == QGraphicsItem::ItemSelectedChange) { - if (value.toBool()) setZValue(10); - else setZValue(2); + if (value.toBool()) + setZValue(10); + else + setZValue(2); } if (change == ItemPositionChange && scene()) { // calculate new position. @@ -1464,6 +1465,11 @@ QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value) //kDebug()<<"// ITEM NEW POS: "<(); + if (parent) m_paintColor = m_baseColor.lighter(135); + else m_paintColor = m_baseColor; + } return QGraphicsItem::itemChange(change, value); } @@ -1865,6 +1871,10 @@ void ClipItem::setAudioOnly(bool force) } else if (m_clipType == AUDIO) m_baseColor = QColor(141, 215, 166); else m_baseColor = QColor(141, 166, 215); } + if (parentItem()) + m_paintColor = m_baseColor.lighter(135); + else + m_paintColor = m_baseColor; m_audioThumbCachePic.clear(); } diff --git a/src/clipitem.h b/src/clipitem.h index 08432689..abc7aa95 100644 --- a/src/clipitem.h +++ b/src/clipitem.h @@ -216,6 +216,7 @@ private: bool m_audioOnly; bool m_videoOnly; QColor m_baseColor; + QColor m_paintColor; QPixmap m_startPix; QPixmap m_endPix; diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index a568c2eb..7178b2f5 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -799,7 +799,6 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) QGraphicsView::mousePressEvent(event); return; } - // if a guide and a clip were pressed, just select the guide for (int i = 0; i < collisionList.count(); ++i) { if (collisionList.at(i)->type() == GUIDEITEM) { @@ -1057,7 +1056,10 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) }*/ bool selected = !m_dragItem->isSelected(); + m_dragItem->setZValue(99); + if (m_dragItem->parentItem()) m_dragItem->parentItem()->setZValue(99); QGraphicsView::mousePressEvent(event); + if (dragGroup) { dragGroup->setSelected(selected); QList children = dragGroup->childItems(); -- 2.39.2