]> git.sesse.net Git - kdenlive/commitdiff
- Fix "all tracks" in insert space dialog not working
authorTill Theato <root@ttill.de>
Sun, 13 Jun 2010 18:51:09 +0000 (18:51 +0000)
committerTill Theato <root@ttill.de>
Sun, 13 Jun 2010 18:51:09 +0000 (18:51 +0000)
- Do not show insert space command in undo stack if no item was moved

svn path=/trunk/kdenlive/; revision=4515

src/customtrackview.cpp
src/geometryval.h
src/mainwindow.cpp

index bed6afbeffd68e1b393023261474293b65437b55..27bdeddad6d11d188b3427b939321bed01bb141a 100644 (file)
@@ -2776,26 +2776,28 @@ void CustomTrackView::slotInsertSpace()
     GenTime spaceDuration = d.selectedDuration();
     track = d.selectedTrack();
 
-    // TODO: Make "All Tracks" work
-    if (track == -1)
-        return;
-
-    if (m_document->isTrackLocked(m_document->tracksCount() - track - 1)) {
-        emit displayMessage(i18n("Cannot insert space in a locked track"), ErrorMessage);
-        return;
-    }
+    QList<QGraphicsItem *> items;
+    if (track > 0) {
+        if (m_document->isTrackLocked(m_document->tracksCount() - track - 1)) {
+            emit displayMessage(i18n("Cannot insert space in a locked track"), ErrorMessage);
+            return;
+        }
 
-    ClipItem *item = getClipItemAt(pos, track);
-    if (item) pos = item->startPos();
+        ClipItem *item = getClipItemAt(pos, track);
+        if (item) pos = item->startPos();
 
-    // Make sure there is no group in the way
-    QRectF rect(pos.frames(m_document->fps()), track * m_tracksHeight + m_tracksHeight / 2, sceneRect().width() - pos.frames(m_document->fps()), m_tracksHeight / 2 - 2);
-    bool isOk;
-    QList<QGraphicsItem *> items = checkForGroups(rect, &isOk);
-    if (!isOk) {
-        // groups found on track, do not allow the move
-        emit displayMessage(i18n("Cannot insert space in a track with a group"), ErrorMessage);
-        return;
+        // Make sure there is no group in the way
+        QRectF rect(pos.frames(m_document->fps()), track * m_tracksHeight + m_tracksHeight / 2, sceneRect().width() - pos.frames(m_document->fps()), m_tracksHeight / 2 - 2);
+        bool isOk;
+        items = checkForGroups(rect, &isOk);
+        if (!isOk) {
+            // groups found on track, do not allow the move
+            emit displayMessage(i18n("Cannot insert space in a track with a group"), ErrorMessage);
+            return;
+        }
+    } else {
+        QRectF rect(pos.frames(m_document->fps()), 0, sceneRect().width() - pos.frames(m_document->fps()), m_document->tracksCount() * m_tracksHeight);
+        items = scene()->items(rect);
     }
 
     QList<ItemInfo> clipsToMove;
@@ -2805,16 +2807,17 @@ void CustomTrackView::slotInsertSpace()
         if (items.at(i)->type() == AVWIDGET || items.at(i)->type() == TRANSITIONWIDGET) {
             AbstractClipItem *item = static_cast <AbstractClipItem *>(items.at(i));
             ItemInfo info = item->info();
-            if (item->type() == AVWIDGET) {
+            if (item->type() == AVWIDGET)
                 clipsToMove.append(info);
-            } else if (item->type() == TRANSITIONWIDGET) {
+            else if (item->type() == TRANSITIONWIDGET)
                 transitionsToMove.append(info);
-            }
         }
     }
 
-    InsertSpaceCommand *command = new InsertSpaceCommand(this, clipsToMove, transitionsToMove, track, spaceDuration, true);
-    m_commandStack->push(command);
+    if (!clipsToMove.isEmpty() || !transitionsToMove.isEmpty()) {
+        InsertSpaceCommand *command = new InsertSpaceCommand(this, clipsToMove, transitionsToMove, track, spaceDuration, true);
+        m_commandStack->push(command);
+    }
 }
 
 void CustomTrackView::insertSpace(QList<ItemInfo> clipsToMove, QList<ItemInfo> transToMove, int track, const GenTime duration, const GenTime offset)
@@ -2882,7 +2885,8 @@ void CustomTrackView::insertSpace(QList<ItemInfo> clipsToMove, QList<ItemInfo> t
         }
     }
     resetSelectionGroup(false);
-    if (track != -1) track = m_document->tracksCount() - track;
+    if (track != -1)
+        track = m_document->tracksCount() - track;
     m_document->renderer()->mltInsertSpace(trackClipStartList, trackTransitionStartList, track, duration, offset);
 }
 
index af41aa37d97e1c65f1e4cc9d4ecbd83232636803..ee1d7768d48c85a1bdbfe7e789053325f61538a7 100644 (file)
@@ -71,7 +71,7 @@ private:
     bool keyframeSelected();
 
 public slots:
-    void setupParam(const QDomElement, int, int);
+    void setupParam(const QDomElement, int minframe, int maxframe);
 
 private slots:
     void slotNextFrame();
index e5de70cd55c4913dca6dc15888a19d648d46742d..1b4cb3973ab5bef3203f646293195c2292bfca3a 100644 (file)
@@ -1290,6 +1290,7 @@ void MainWindow::setupActions()
     m_saveAction = KStandardAction::save(this,    SLOT(saveFile()),               collection);
     KStandardAction::saveAs(this,                 SLOT(saveFileAs()),             collection);
     KStandardAction::openNew(this,                SLOT(newFile()),                collection);
+    // TODO: make the following connection to slotEditKeys work
     KStandardAction::keyBindings(this,            SLOT(slotEditKeys()),           collection);
     KStandardAction::preferences(this,            SLOT(slotPreferences()),        collection);
     KStandardAction::configureNotifications(this, SLOT(configureNotifications()), collection);