]> git.sesse.net Git - kdenlive/commitdiff
Spacer should not move locked tracks
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 4 Nov 2009 14:08:42 +0000 (14:08 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 4 Nov 2009 14:08:42 +0000 (14:08 +0000)
svn path=/trunk/kdenlive/; revision=4094

src/abstractgroupitem.cpp
src/abstractgroupitem.h
src/customtrackview.cpp

index 788e015bdb9731ef0e515d3c31d87803240fdf38..f99fd3ee73ac7c8328511989b827bc5732fe3b3e 100644 (file)
@@ -54,6 +54,23 @@ int AbstractGroupItem::track() const
     return (int)(scenePos().y() / KdenliveSettings::trackheight());
 }
 
+void AbstractGroupItem::setItemLocked(bool locked)
+{
+    if (locked) {
+        setSelected(false);
+        setFlag(QGraphicsItem::ItemIsMovable, false);
+        setFlag(QGraphicsItem::ItemIsSelectable, false);
+    } else {
+        setFlag(QGraphicsItem::ItemIsMovable, true);
+        setFlag(QGraphicsItem::ItemIsSelectable, true);
+    }
+}
+
+bool AbstractGroupItem::isItemLocked() const
+{
+    return !(flags() & (QGraphicsItem::ItemIsSelectable));
+}
+
 CustomTrackScene* AbstractGroupItem::projectScene()
 {
     if (scene()) return static_cast <CustomTrackScene*>(scene());
index ba0b213be6d4addb467d3e906a24e107ca20f32a..c6c5952167d6eace483128a5e7d62409af360866 100644 (file)
@@ -41,7 +41,9 @@ public:
     int track() const;
     QPainterPath clipGroupShape(QPointF) const;
     QPainterPath transitionGroupShape(QPointF) const;
-//    ItemInfo info() const;
+    void setItemLocked(bool locked);
+    bool isItemLocked() const;
+    //    ItemInfo info() const;
 
 protected:
     virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
index c91a6cb6ae0353a20447f5e74680c835ab258a73..8234f6ce2116daca6eaa87c01b340fc6f9d99245 100644 (file)
@@ -816,6 +816,12 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
             if (event->modifiers() == Qt::ControlModifier) {
                 // Ctrl + click, select all items on track after click position
                 int track = (int)(mapToScene(m_clickEvent).y() / m_tracksHeight);
+               if (m_document->trackInfoAt(m_document->tracksCount() - track - 1).isLocked) {
+                    // Cannot use spacer on locked track
+                    emit displayMessage(i18n("Cannot use spacer in a locked track"), ErrorMessage);
+                    return;              
+               }  
+  
                 QRectF rect(mapToScene(m_clickEvent).x(), track * m_tracksHeight + m_tracksHeight / 2, sceneRect().width() - mapToScene(m_clickEvent).x(), m_tracksHeight / 2 - 2);
 
                 bool isOk;
@@ -840,11 +846,13 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
             for (int i = 0; i < selection.count(); i++) {
                 if (selection.at(i)->parentItem() == 0 && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET)) {
                     AbstractClipItem *item = static_cast<AbstractClipItem *>(selection.at(i));
+                   if (item->isItemLocked()) continue;
                     offsetList.append(item->startPos());
                     offsetList.append(item->endPos());
                     m_selectionGroup->addToGroup(selection.at(i));
                     selection.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false);
                 } else if (selection.at(i)->parentItem() == 0 && selection.at(i)->type() == GROUPWIDGET) {
+                   if (static_cast<AbstractGroupItem *>(selection.at(i))->isItemLocked()) continue;
                     QList<QGraphicsItem *> children = selection.at(i)->childItems();
                     for (int j = 0; j < children.count(); j++) {
                         AbstractClipItem *item = static_cast<AbstractClipItem *>(children.at(j));
@@ -854,6 +862,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
                     m_selectionGroup->addToGroup(selection.at(i));
                     selection.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false);
                 } else if (selection.at(i)->parentItem()) {
+                   if (static_cast<AbstractGroupItem *>(selection.at(i)->parentItem())->isItemLocked()) continue;
                     m_selectionGroup->addToGroup(selection.at(i)->parentItem());
                     selection.at(i)->parentItem()->setFlag(QGraphicsItem::ItemIsMovable, false);
                 }