]> git.sesse.net Git - kdenlive/commitdiff
Fix wrong group moving when groups overlap
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 4 Mar 2013 18:59:19 +0000 (19:59 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 4 Mar 2013 18:59:19 +0000 (19:59 +0100)
src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp

index 83b387bedd6732791239b3c02ac2bd2ec592bb70..01e195c81ef2169121f9a15118f94a9bc47da16e 100644 (file)
@@ -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: "<<newPos.x()<<", mapped: "<<mapToScene(newPos.x(), 0).x();
         return newPos;
     }
+    if (change == ItemParentChange) {
+       QGraphicsItem* parent = value.value<QGraphicsItem*>();
+       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();
 }
 
index 084326892d6fdb255085656209b273e71a9cde09..abc7aa954d00058add5d6499cff8968af05744d0 100644 (file)
@@ -216,6 +216,7 @@ private:
     bool m_audioOnly;
     bool m_videoOnly;
     QColor m_baseColor;
+    QColor m_paintColor;
 
     QPixmap m_startPix;
     QPixmap m_endPix;
index a568c2eb42300d3e9ff415a08d1598dcbfc8f568..7178b2f5e7d8b379e7d83c6172b958722029c6c3 100644 (file)
@@ -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<QGraphicsItem *> children = dragGroup->childItems();