]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
Fix painting issues (disappearing cursor, clip borders)
[kdenlive] / src / customtrackview.cpp
index df0eb6c5f30595be5be33c55370480063a797bc7..32d5b94b74e54dca560d80aa46c4c20dbc067e39 100644 (file)
@@ -134,6 +134,10 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscen
     verticalScrollBar()->setMaximum(maxWidth);
     m_cursorLine = projectscene->addLine(0, 0, 0, maxWidth);
     m_cursorLine->setZValue(1000);
+    QPen pen1;
+    pen1.setWidthF(1.0);
+    pen1.setCosmetic(true);
+    m_cursorLine->setPen(pen1);
 
     KIcon razorIcon("edit-cut");
     m_razorCursor = QCursor(razorIcon.pixmap(22, 22));
@@ -355,13 +359,14 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event)
                 pos = (br.bottom() - pos) * maxh;
                 m_dragItem->updateKeyFramePos(keyFramePos, pos);
             }
-
+            m_animationTimer->stop();
             delete m_animation;
             m_animation = NULL;
             delete m_visualTip;
             m_visualTip = NULL;
             return;
         } else if (m_operationMode == MOVEGUIDE) {
+            m_animationTimer->stop();
             delete m_animation;
             m_animation = NULL;
             delete m_visualTip;
@@ -593,7 +598,6 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event)
 // virtual
 void CustomTrackView::mousePressEvent(QMouseEvent * event)
 {
-    //kDebug() << "mousePressEvent STARTED";
     setFocus(Qt::MouseFocusReason);
     m_menuPosition = QPoint();
 
@@ -606,6 +610,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
     }
 
     if (event->modifiers() & Qt::ShiftModifier) {
+        // Rectangle selection
         setDragMode(QGraphicsView::RubberBandDrag);
         if (!(event->modifiers() & Qt::ControlModifier)) {
             resetSelectionGroup();
@@ -632,6 +637,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
     QList<QGraphicsItem *> collisionList = items(m_clickEvent);
 
     if (event->modifiers() == Qt::ControlModifier && m_tool != SPACERTOOL && collisionList.count() == 0) {
+        // Pressing Ctrl + left mouse button in an empty area scrolls the timeline
         setDragMode(QGraphicsView::ScrollHandDrag);
         QGraphicsView::mousePressEvent(event);
         m_blockRefresh = false;
@@ -805,10 +811,36 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         return;
     }
 
-    if (dragGroup == NULL) updateSnapPoints(m_dragItem);
+    bool itemSelected = false;
+    if (m_dragItem->isSelected()) itemSelected = true;
+    else if (m_dragItem->parentItem() && m_dragItem->parentItem()->isSelected()) itemSelected = true;
+    else if (dragGroup && dragGroup->isSelected()) itemSelected = true;
+
+    if (event->modifiers() == Qt::ControlModifier || itemSelected == false) {
+        if (event->modifiers() != Qt::ControlModifier) {
+            m_scene->clearSelection();
+            resetSelectionGroup(false);
+        } else resetSelectionGroup();
+        dragGroup = NULL;
+        if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) {
+            //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect();
+            dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem());
+        }
+        bool selected = !m_dragItem->isSelected();
+        if (dragGroup) dragGroup->setSelected(selected);
+        else m_dragItem->setSelected(selected);
+
+        groupSelectedItems();
+        ClipItem *clip = static_cast <ClipItem *>(m_dragItem);
+        updateClipTypeActions(dragGroup == NULL ? clip : NULL);
+        m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
+    }
+
+    // Update snap points
+    if (m_selectionGroup == NULL) updateSnapPoints(m_dragItem);
     else {
         QList <GenTime> offsetList;
-        QList<QGraphicsItem *> children = dragGroup->childItems();
+        QList<QGraphicsItem *> children = m_selectionGroup->childItems();
         for (int i = 0; i < children.count(); i++) {
             if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) {
                 AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i));
@@ -830,31 +862,8 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         }
     }
 
-    bool itemSelected = false;
-    if (m_dragItem->isSelected()) itemSelected = true;
-    else if (m_dragItem->parentItem() && m_dragItem->parentItem()->isSelected()) itemSelected = true;
-    else if (dragGroup && dragGroup->isSelected()) itemSelected = true;
-    if (event->modifiers() == Qt::ControlModifier || itemSelected == false) {
-        if (event->modifiers() != Qt::ControlModifier) m_scene->clearSelection();
-        resetSelectionGroup();
-        dragGroup = NULL;
-        if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) {
-            //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect();
-            dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem());
-        }
-        bool selected = !m_dragItem->isSelected();
-        if (dragGroup) dragGroup->setSelected(selected);
-        else m_dragItem->setSelected(selected);
-
-        groupSelectedItems();
-        ClipItem *clip = static_cast <ClipItem *>(m_dragItem);
-        updateClipTypeActions(dragGroup == NULL ? clip : NULL);
-        m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
-    }
-
     if (collisionClip != NULL || m_dragItem == NULL) {
         if (m_dragItem && m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) {
-            kDebug() << "//////// CLIP ITEM SELECTED, TRANSMITTING . . . . . . .";
             ClipItem *selected = static_cast <ClipItem*>(m_dragItem);
             emit clipItemSelected(selected);
         } else emit clipItemSelected(NULL);