traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/commands MoveClip.cpp MoveClip.h


From: Ben Levitt
Subject: [Traverso-commit] traverso/src/commands MoveClip.cpp MoveClip.h
Date: Fri, 21 Nov 2008 16:12:30 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Ben Levitt <benjie>     08/11/21 16:12:30

Modified files:
        src/commands   : MoveClip.cpp MoveClip.h 

Log message:
        Improve Fold Sheet to move markers while dragging
        Fix a segv when folding a sheet from the timelineView

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.cpp?cvsroot=traverso&r1=1.76&r2=1.77
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.h?cvsroot=traverso&r1=1.34&r2=1.35

Patches:
Index: MoveClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.cpp,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -b -r1.76 -r1.77
--- MoveClip.cpp        21 Nov 2008 06:41:05 -0000      1.76
+++ MoveClip.cpp        21 Nov 2008 16:12:29 -0000      1.77
@@ -111,7 +111,23 @@
                
                TimeRef currentLocation = 
TimeRef(cpointer().on_first_input_event_scene_x() * d->sv->timeref_scalefactor);
                
+               if (d->sv->get_trackview_under(cpointer().scene_pos())) {
                d->pointedTrackIndex = 
d->sv->get_trackview_under(cpointer().scene_pos())->get_track()->get_sort_index();
+               } else {
+                       d->pointedTrackIndex = 0;
+               }
+               
+               if (m_actionType == FOLD_SHEET) {
+                       QList<Marker*> movingMarkers = 
d->sv->get_sheet()->get_timeline()->get_markers();
+                       foreach(Marker* marker, movingMarkers) {
+                               if (marker->get_when() > currentLocation) {
+                                       MarkerAndOrigin markerAndOrigin;
+                                       markerAndOrigin.marker = marker;
+                                       markerAndOrigin.origin = 
marker->get_when();
+                                       m_markers.append(markerAndOrigin);
+                               }
+                       }
+               }
                
                if (m_actionType == FOLD_SHEET) {
                        QList<Marker*> movingMarkers = 
d->sv->get_sheet()->get_timeline()->get_markers();
@@ -237,8 +253,8 @@
        }
        
        if (m_actionType == FOLD_SHEET) {
-               foreach(Marker* marker, m_markers) {
-                       marker->set_when(marker->get_when() + m_posDiff);
+               foreach(MarkerAndOrigin markerAndOrigin, m_markers) {
+                       markerAndOrigin.marker->set_when(markerAndOrigin.origin 
+ m_posDiff);
                }
        }
        
@@ -257,8 +273,8 @@
        }
 
        if (m_actionType == FOLD_SHEET) {
-               foreach(Marker* marker, m_markers) {
-                       marker->set_when(marker->get_when() - m_posDiff);
+               foreach(MarkerAndOrigin markerAndOrigin, m_markers) {
+                       
markerAndOrigin.marker->set_when(markerAndOrigin.origin);
                }
        }
        
@@ -315,6 +331,13 @@
        // and used to move the group to it's new location.
        m_group.move_to(m_newTrackIndex, m_trackStartLocation + m_posDiff);
        
+       // and used to move the markers
+       if (m_actionType == FOLD_SHEET) {
+               foreach(MarkerAndOrigin markerAndOrigin, m_markers) {
+                       markerAndOrigin.marker->set_when(markerAndOrigin.origin 
+ m_posDiff);
+               }
+       }
+       
        d->sv->update_shuttle_factor();
        
        
cpointer().get_viewport()->set_holdcursor_pos(d->sv->get_clips_viewport()->mapToScene(cpointer().pos()).toPoint());

Index: MoveClip.h
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- MoveClip.h  21 Nov 2008 06:41:06 -0000      1.34
+++ MoveClip.h  21 Nov 2008 16:12:30 -0000      1.35
@@ -36,6 +36,11 @@
 class ViewItem;
 class Zoom;
 
+typedef struct {
+       Marker* marker;
+       TimeRef origin;
+} MarkerAndOrigin;
+
 class MoveClip : public Command
 {
        Q_OBJECT
@@ -74,7 +79,7 @@
        
        Sheet*          m_sheet;
        AudioClipGroup  m_group;
-       QList<Marker*>  m_markers;
+       QList<MarkerAndOrigin>  m_markers;
         TimeRef        m_trackStartLocation;
         TimeRef        m_posDiff;
        ActionType      m_actionType;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]