]> git.sesse.net Git - kdenlive/commitdiff
Fix crash when pressing home/end and transition selected:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 3 Sep 2009 10:36:22 +0000 (10:36 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 3 Sep 2009 10:36:22 +0000 (10:36 +0000)
http://www.kdenlive.org/mantis/view.php?id=1114

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

src/customtrackview.cpp
src/customtrackview.h

index 5db740d3db6ce6f30b31eb888095d27916987f5a..fa5dfc466bbd729f84a730e85f5a5629a62f17ae 100644 (file)
@@ -3758,7 +3758,7 @@ void CustomTrackView::slotSeekToNextSnap()
 
 void CustomTrackView::clipStart()
 {
-    ClipItem *item = getMainActiveClip();
+    AbstractClipItem *item = getMainActiveClip();
     if (item != NULL) {
         setCursorPos((int) item->startPos().frames(m_document->fps()));
         checkScrolling();
@@ -3767,7 +3767,7 @@ void CustomTrackView::clipStart()
 
 void CustomTrackView::clipEnd()
 {
-    ClipItem *item = getMainActiveClip();
+    AbstractClipItem *item = getMainActiveClip();
     if (item != NULL) {
         setCursorPos((int) item->endPos().frames(m_document->fps()) - 1);
         checkScrolling();
@@ -4260,17 +4260,18 @@ ClipItem *CustomTrackView::getClipUnderCursor() const
     return NULL;
 }
 
-ClipItem *CustomTrackView::getMainActiveClip() const
+AbstractClipItem *CustomTrackView::getMainActiveClip() const
 {
     QList<QGraphicsItem *> clips = scene()->selectedItems();
     if (clips.isEmpty()) {
         return getClipUnderCursor();
     } else {
-        ClipItem *item = NULL;
+        AbstractClipItem *item = NULL;
         for (int i = 0; i < clips.count(); ++i) {
-            if (clips.at(i)->type() == AVWIDGET)
-                item = static_cast < ClipItem *>(clips.at(i));
-            if (item->startPos().frames(m_document->fps()) <= m_cursorPos && item->endPos().frames(m_document->fps()) >= m_cursorPos) break;
+            if (clips.count() == 1 || clips.at(i)->type() == AVWIDGET) {
+                item = static_cast < AbstractClipItem *>(clips.at(i));
+                if (clips.count() > 1 && item->startPos().frames(m_document->fps()) <= m_cursorPos && item->endPos().frames(m_document->fps()) >= m_cursorPos) break;
+            }
         }
         if (item) return item;
     }
index 6119efa170b7f5a861b0694769cac34e2b1e200d..70ef447cb808369955681fa9b1b2a69dec9f36ed 100644 (file)
@@ -240,7 +240,7 @@ private:
     bool canBePasted(QList<AbstractClipItem *> items, GenTime offset, int trackOffset) const;
     bool canBeMoved(QList<AbstractClipItem *> items, GenTime offset, int trackOffset) const;
     ClipItem *getClipUnderCursor() const;
-    ClipItem *getMainActiveClip() const;
+    AbstractClipItem *getMainActiveClip() const;
     void resetSelectionGroup(bool selectItems = true);
     void groupSelectedItems(bool force = false, bool createNewGroup = false);
     /** Get available space for clip move (min and max free positions) */