[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdenlive/refactoring_timeline] src/timeline2: groups are now moved by the model and not the view. M
From:       Nicolas Carion <null () kde ! org>
Date:       2018-05-01 0:16:43
Message-ID: E1fDIyJ-0002J9-Lk () code ! kde ! org
[Download RAW message or body]

Git commit 0b413c8b5b5c130bf48379c0201fc8b50bad27f5 by Nicolas Carion.
Committed on 01/05/2018 at 00:17.
Pushed by alcinos into branch 'refactoring_timeline'.

groups are now moved by the model and not the view. Moving av group has the intended \
effect

M  +26   -13   src/timeline2/model/timelinemodel.cpp
M  +2    -2    src/timeline2/view/qml/timeline.qml

https://commits.kde.org/kdenlive/0b413c8b5b5c130bf48379c0201fc8b50bad27f5

diff --git a/src/timeline2/model/timelinemodel.cpp \
b/src/timeline2/model/timelinemodel.cpp index de4761631..665276262 100644
--- a/src/timeline2/model/timelinemodel.cpp
+++ b/src/timeline2/model/timelinemodel.cpp
@@ -627,7 +627,7 @@ bool TimelineModel::requestClipInsertion(const QString \
&binClipId, int trackId,  audioDrop = true;
             }
         }
-        if (res && logUndo && !audioDrop) {
+        if (res && !audioDrop) {
             QList<int> possibleTracks = m_audioTarget >= 0 ? QList<int>() << \
m_audioTarget : getLowerTracksId(trackId, TrackType::AudioTrack);  if \
(possibleTracks.isEmpty()) {  // No available audio track for splitting, abort
@@ -682,7 +682,6 @@ bool TimelineModel::requestItemDeletion(int clipId, Fun &undo, \
Fun &redo)  return requestGroupDeletion(clipId, undo, redo);
     }
     return requestClipDeletion(clipId, undo, redo);
-
 }
 
 bool TimelineModel::requestItemDeletion(int itemId, bool logUndo)
@@ -826,7 +825,7 @@ bool TimelineModel::requestGroupMove(int clipId, int groupId, int \
delta_track, i  return !(track_pos1 <= track_pos2) == !(delta_track <= 0);
     });
     // Parse all tracks then check none is locked. Maybe find a better way/place to \
                do this
-    QList <int> trackList;
+    QList<int> trackList;
     for (int clip : sorted_clips) {
         int current_track_id = getItemTrackId(clip);
         if (!trackList.contains(current_track_id)) {
@@ -839,20 +838,35 @@ bool TimelineModel::requestGroupMove(int clipId, int groupId, \
int delta_track, i  return false;
         }
     }
+    int audio_delta, video_delta;
+    audio_delta = video_delta = delta_track;
+    // if the topmost group is a AVSplit, then we will apply opposite movement to \
audio and video +    if (m_groups->getType(groupId) == GroupType::AVSplit) {
+        if (getTrackById(getItemTrackId(clipId))->isAudioTrack()) {
+            video_delta = -delta_track;
+        } else {
+            audio_delta = -delta_track;
+        }
+    }
     for (int clip : sorted_clips) {
         int current_track_id = getItemTrackId(clip);
         int current_track_position = getTrackPosition(current_track_id);
-        int target_track_position = current_track_position + delta_track;
+        int d = getTrackById(current_track_id)->isAudioTrack() ? audio_delta : \
video_delta; +        int target_track_position = current_track_position + d;
+        bool updateThisView = true;
+        if (clip == clipId) {
+            updateThisView = updateView;
+        }
         if (target_track_position >= 0 && target_track_position < getTracksCount()) \
{  auto it = m_allTracks.cbegin();
             std::advance(it, target_track_position);
             int target_track = (*it)->getId();
             if (isClip(clip)) {
                 int target_position = m_allClips[clip]->getPosition() + delta_pos;
-                ok = requestClipMove(clip, target_track, target_position, \
updateView, finalMove, undo, redo); +                ok = requestClipMove(clip, \
target_track, target_position, updateThisView, finalMove, undo, redo);  } else {
                 int target_position = m_allCompositions[clip]->getPosition() + \
                delta_pos;
-                ok = requestCompositionMove(clip, target_track, \
m_allCompositions[clip]->getForcedTrack(), target_position, updateView, undo, redo); \
+                ok = requestCompositionMove(clip, target_track, \
m_allCompositions[clip]->getForcedTrack(), target_position, updateThisView, undo, \
redo);  }
         } else {
             qDebug() << "// ABORTING; MOVE TRIED ON TRACK: " << \
target_track_position << "..\n..\n.."; @@ -943,7 +957,7 @@ int \
                TimelineModel::requestItemResize(int itemId, int size, bool right, \
                bool logU
               << (snapDistance > 0 ? "true" : "false") << " ); " << std::endl;
 #endif
     if (logUndo) {
-        qDebug()<<"---------------------\n---------------------\nRESIZE W/UNDO \
CALLED\n++++++++++++++++\n++++"; +        qDebug() << \
"---------------------\n---------------------\nRESIZE W/UNDO \
CALLED\n++++++++++++++++\n++++";  }
     QWriteLocker locker(&m_lock);
     Q_ASSERT(isClip(itemId) || isComposition(itemId));
@@ -958,7 +972,7 @@ int TimelineModel::requestItemResize(int itemId, int size, bool \
right, bool logU  // only test move if proposed_size is valid
             bool success = false;
             if (isClip(itemId)) {
-                qDebug()<<"+++MODEL REQUEST RESIZE (LOGUNDO) "<<logUndo<<", SIZE: \
"<<proposed_size; +                qDebug() << "+++MODEL REQUEST RESIZE (LOGUNDO) " \
                << logUndo << ", SIZE: " << proposed_size;
                 success = m_allClips[itemId]->requestResize(proposed_size, right, \
temp_undo, temp_redo, false);  } else {
                 success = m_allCompositions[itemId]->requestResize(proposed_size, \
right, temp_undo, temp_redo, false); @@ -1050,8 +1064,8 @@ int \
TimelineModel::requestClipsGroup(const std::unordered_set<int> &ids, bool lo  if \
(m_temporarySelectionGroup > -1) {  \
m_groups->destructGroupItem(m_temporarySelectionGroup);  // We don't log in undo the \
                selection changes
-        //int firstChild = \
                *m_groups->getDirectChildren(m_temporarySelectionGroup).begin();
-        //requestClipUngroup(firstChild, undo, redo);
+        // int firstChild = \
*m_groups->getDirectChildren(m_temporarySelectionGroup).begin(); +        // \
requestClipUngroup(firstChild, undo, redo);  m_temporarySelectionGroup = -1;
     }
     int result = requestClipsGroup(ids, undo, redo, type);
@@ -2081,7 +2095,7 @@ QStringList TimelineModel::extractCompositionLumas() const
 
 void TimelineModel::adjustAssetRange(int clipId, int in, int out)
 {
-    //pCore->adjustAssetRange(clipId, in, out);
+    // pCore->adjustAssetRange(clipId, in, out);
 }
 
 void TimelineModel::requestClipReload(int clipId)
@@ -2189,7 +2203,6 @@ bool TimelineModel::changeItemSpeed(int clipId, int speed)
     return false;
 }
 
-
 const QString TimelineModel::getTrackTagById(int trackId) const
 {
     Q_ASSERT(isTrack(trackId));
@@ -2212,5 +2225,5 @@ const QString TimelineModel::getTrackTagById(int trackId) const
         }
         it++;
     }
-    return isAudio ? QStringLiteral("A%1").arg(totalAudio - count) : \
QStringLiteral("V%1").arg(count-1); +    return isAudio ? \
QStringLiteral("A%1").arg(totalAudio - count) : QStringLiteral("V%1").arg(count - 1); \
                }
diff --git a/src/timeline2/view/qml/timeline.qml \
b/src/timeline2/view/qml/timeline.qml index dfa866b6e..6df17b282 100644
--- a/src/timeline2/view/qml/timeline.qml
+++ b/src/timeline2/view/qml/timeline.qml
@@ -934,7 +934,7 @@ Rectangle {
                         clip.y = track.y - \
Logic.getTrackById(clip.originalTrackId).y  clip.trackId = track.trackId
                         clip.currentFrame = frame
-                        if (root.dragList.length > 1) {
+                        /*if (root.dragList.length > 1) {
                             var currentMasterY = track.y
                             var sourceTrack = \
                Logic.getTrackIndexFromId(clip.originalTrackId)
                             var destTrack = Logic.getTrackIndexFromId(clip.trackId)
@@ -960,7 +960,7 @@ Rectangle {
                                     }
                                 }
                             }
-                        }
+                        }*/
                     } else {
                         if (track.trackId != clip.trackId) {
                             // check if we can move on existing track


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic