]> git.sesse.net Git - kdenlive/commitdiff
Allow to do a rectangle selection (Shift + click) also when starting the rectangle...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 29 Jun 2009 17:06:33 +0000 (17:06 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 29 Jun 2009 17:06:33 +0000 (17:06 +0000)
svn path=/trunk/kdenlive/; revision=3694

src/abstractclipitem.cpp
src/abstractclipitem.h
src/abstractgroupitem.cpp
src/abstractgroupitem.h
src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp

index bcb42eb2937a3c1700a339a214aedd8988a261b2..d6a8f391f0b58f979f28fece3a54d2da8457a29f 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <QPainter>
 #include <QToolTip>
+#include <QGraphicsSceneMouseEvent>
 
 AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps) :
         QObject(),
@@ -418,3 +419,12 @@ bool AbstractClipItem::isItemLocked() const
     return !(flags() & (QGraphicsItem::ItemIsSelectable));
 }
 
+// virtual
+void AbstractClipItem::mousePressEvent(QGraphicsSceneMouseEvent * event)
+{
+    if (event->modifiers() & Qt::ShiftModifier) {
+        // User want to do a rectangle selection, so ignore the event to pass it to the view
+        event->ignore();
+    } else QGraphicsItem::mousePressEvent(event);
+}
+
index b3f34e5c2ba2287c17efe4e722a842f166f8cd3e..dd3277d5a8a5a64a55a91ad753b8ff3960044c54 100644 (file)
@@ -26,6 +26,7 @@
 #include "gentime.h"
 
 class CustomTrackScene;
+class QGraphicsSceneMouseEvent;
 
 class AbstractClipItem : public QObject , public QGraphicsRectItem
 {
@@ -76,6 +77,7 @@ protected:
     //QRect visibleRect();
     void drawKeyFrames(QPainter *painter, QRectF exposedRect);
     int mouseOverKeyFrames(QPointF pos);
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
 };
 
 #endif
index b33ec93b8102b973343123b4d5d029dbdcf91dca..f49e84d83568442b06c950906d268da461399b3b 100644 (file)
@@ -30,7 +30,7 @@
 #include <QStyleOptionGraphicsItem>
 #include <QDomDocument>
 #include <QMimeData>
-
+#include <QGraphicsSceneMouseEvent>
 
 AbstractGroupItem::AbstractGroupItem(double /* fps */) :
         QObject(),
@@ -234,3 +234,12 @@ void AbstractGroupItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
 {
     Q_UNUSED(event);
 }
+
+// virtual
+void AbstractGroupItem::mousePressEvent(QGraphicsSceneMouseEvent * event)
+{
+    if (event->modifiers() & Qt::ShiftModifier) {
+        // User want to do a rectangle selection, so ignore the event to pass it to the view
+        event->ignore();
+    } else QGraphicsItem::mousePressEvent(event);
+}
index f3ee3cf5fabfd9a4cea74295775244826a684cb8..bd54c9afb8b9a4df1423248ccf01bcbe23cbaa2b 100644 (file)
@@ -28,6 +28,7 @@
 #include <QGraphicsSceneMouseEvent>
 
 class CustomTrackScene;
+class QGraphicsSceneMouseEvent;
 
 class AbstractGroupItem : public QObject , public QGraphicsItemGroup
 {
@@ -46,6 +47,7 @@ protected:
     virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
     virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
     virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
 
 private:
     QPainterPath groupShape(QPointF);
index 217604135f87da8bd2a55bcc88ed0003613450d5..9a92cbd369cedc57aca2c947b23cfb674d76e302 100644 (file)
@@ -39,7 +39,6 @@
 ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, bool generateThumbs) :
         AbstractClipItem(info, QRectF(), fps),
         m_clip(clip),
-        m_resizeMode(NONE),
         m_startFade(0),
         m_endFade(0),
         m_audioOnly(false),
@@ -1072,24 +1071,6 @@ void ClipItem::setFadeOut(int pos)
 
 }
 
-// virtual
-void ClipItem::mousePressEvent(QGraphicsSceneMouseEvent * event)
-{
-    /*m_resizeMode = operationMode(event->pos());
-    if (m_resizeMode == MOVE) {
-      m_maxTrack = scene()->sceneRect().height();
-      m_grabPoint = (int) (event->pos().x() - rect().x());
-    }*/
-    QGraphicsRectItem::mousePressEvent(event);
-}
-
-// virtual
-void ClipItem::mouseReleaseEvent(QGraphicsSceneMouseEvent * event)
-{
-    m_resizeMode = NONE;
-    QGraphicsRectItem::mouseReleaseEvent(event);
-}
-
 /*
 //virtual
 void ClipItem::hoverEnterEvent(QGraphicsSceneHoverEvent *e)
index 144a36b3f61865ce4addfe98ca1c694268dde527..31efc3ae30a0eb486c1f43ab8824a05cc444a4f3 100644 (file)
@@ -112,8 +112,6 @@ public:
 
 protected:
     //virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
-    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
     virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
     virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
     virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
@@ -123,7 +121,6 @@ protected:
 
 private:
     DocClipBase *m_clip;
-    OPERATIONTYPE m_resizeMode;
     QString m_producer;
     CLIPTYPE m_clipType;
     QString m_clipName;
index b85085e127c6c64762a05af54edc7438028b5309..8f7f54c0bc7175d63ab0842769959b388b14170c 100644 (file)
@@ -601,6 +601,18 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         return;
     }
 
+    if (event->modifiers() & Qt::ShiftModifier) {
+        setDragMode(QGraphicsView::RubberBandDrag);
+        if (!(event->modifiers() & Qt::ControlModifier)) {
+            resetSelectionGroup();
+            scene()->clearSelection();
+        }
+        QGraphicsView::mousePressEvent(event);
+        m_blockRefresh = false;
+        m_operationMode = RUBBERSELECTION;
+        return;
+    }
+
     m_blockRefresh = true;
     m_dragItem = NULL;
     m_dragGuide = NULL;
@@ -624,18 +636,6 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         return;
     }
 
-    if (event->modifiers() & Qt::ShiftModifier && collisionList.count() == 0) {
-        setDragMode(QGraphicsView::RubberBandDrag);
-        if (!(event->modifiers() & Qt::ControlModifier)) {
-            resetSelectionGroup();
-            scene()->clearSelection();
-        }
-        QGraphicsView::mousePressEvent(event);
-        m_blockRefresh = false;
-        m_operationMode = RUBBERSELECTION;
-        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) {
@@ -2819,10 +2819,12 @@ void CustomTrackView::deleteSelectedClips()
         if (itemList.at(i)->type() == AVWIDGET) {
             ClipItem *item = static_cast <ClipItem *>(itemList.at(i));
             if (item->parentItem()) resetGroup = true;
+            //kDebug()<<"// DELETE CLP AT: "<<item->info().startPos.frames(25);
             new AddTimelineClipCommand(this, item->xml(), item->clipProducer(), item->info(), item->effectList(), true, true, deleteSelected);
             emit clipItemSelected(NULL);
         } else if (itemList.at(i)->type() == TRANSITIONWIDGET) {
             Transition *item = static_cast <Transition *>(itemList.at(i));
+            //kDebug()<<"// DELETE TRANS AT: "<<item->info().startPos.frames(25);
             if (item->parentItem()) resetGroup = true;
             new AddTransitionCommand(this, item->info(), item->transitionEndTrack(), item->toXML(), true, true, deleteSelected);
             emit transitionItemSelected(NULL);