Hello Paul,

Am 12.04.2023 um 21:09 schrieb Paul Gevers:
Control: tags -1 moreinfo

Hi Patrick

On 27-03-2023 17:06, Patrick Matthäi wrote:
as mentioned in my unblock #1033554 for mlt I were a bit too stupid to read the freeze policy correctly. I would like to see kdenlive 22.12.3-2 in bookworm, it just fixes some upstream bugs and two Debian bugs (missing dependencies).

Can you please elaborate? It appears that this is a bug fix only release, can you confirm? What's the upstream policy for such releases? I didn't spot any upstream changelog, can you describe what the changes are supposed to achieve?

Yes, normaly the minor versions just contains bugfixes. Here are the release notes: https://kdenlive.org/de/2023/03/kdenlive-22-12-3/



The debdiff is - except of the translation files - small.

Might have been nice to filter them out :).

Attached :)


Fixing annoying upstream bugs and missing dependencies in the packaging.

Any pointers to which bugs those are?

 * Fix subtitle scrolling. Commit.
   <http://commits.kde.org/kdenlive/bdbf0bf5122ae5fce7334203a7d990dd7032a129>
 * Fix language model combobox too small. Commit.
   
<http://commits.kde.org/kdenlive/7432631c675d034bfbf266443cc2f7ab6774128b>Fixes
   bug #465787 <https://bugs.kde.org/465787>
 * Scroll timeline when moving a subtitle. Related to #1634. Commit.
   <http://commits.kde.org/kdenlive/b53e78e697793e8fff51dc5ef7cc8eb3584147df>
 * Fix subtitles overlap on import. Commit.
   <http://commits.kde.org/kdenlive/ffda87a8de2bed6812edc23cc9536a01d3d58f0c>
 * Fix subtitle move regression. Commit.
   <http://commits.kde.org/kdenlive/cbc0201a7179834dc63a517919238400bb233d5b>
 * Fix subtitle offset on group move. Commit.
   <http://commits.kde.org/kdenlive/56d4646ec9ac56b09c64a7cae39fda98848e927e>
 * Fix subtitles snapping. Commit.
   <http://commits.kde.org/kdenlive/c3cfcd9e0254b2b74a5b58d49591bbc08d4c719c>
 * Fix compilation. Commit.
   <http://commits.kde.org/kdenlive/7e2421b2aa82e2658a31291f0a769543e3cddada>
 * Fix crash and offset when moving a group with subtitle. Commit.
   <http://commits.kde.org/kdenlive/998ddfa5e0471b7dba34ebb16909931cae3d7922>




[ Risks ]
If mlt is not allowed to enter bookworm the "risk" would be that I would like
to request a upload of this kdenlive version directly to testing?

You may have guessed from the silence (see also our FAQ [1]) that we're not enthusiastic about mlt. I'm currently leaning towards the tpu route for kdenlive.

Paul

[1] https://release.debian.org/testing/FAQ.html

Yes especially for the mlt case it is understandable for me.

--
/*
Mit freundlichem Gruß / With kind regards,
 Patrick Matthäi
 GNU/Linux Debian Developer

  Blog:https://www.linux-dev.org/
E-Mail:pmatth...@debian.org
        patr...@linux-dev.org
*/
diff -Nru kdenlive-22.12.2/debian/changelog kdenlive-22.12.3/debian/changelog
--- kdenlive-22.12.2/debian/changelog   2023-02-03 09:49:23.000000000 +0100
+++ kdenlive-22.12.3/debian/changelog   2023-03-10 09:43:45.000000000 +0100
@@ -1,3 +1,19 @@
+kdenlive (22.12.3-2) unstable; urgency=medium
+
+  * Add missing dependency on qml-module-org-kde-newstuff.
+    Closes: #1032470
+
+ -- Patrick Matthäi <pmatth...@debian.org>  Fri, 10 Mar 2023 09:43:45 +0100
+
+kdenlive (22.12.3-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Add dependency on qml-module-org-kde-kcm.
+    Closes: #1030782
+  * Update signing-key.asc.
+
+ -- Patrick Matthäi <pmatth...@debian.org>  Tue, 07 Mar 2023 09:13:27 +0100
+
 kdenlive (22.12.2-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru kdenlive-22.12.2/debian/control kdenlive-22.12.3/debian/control
--- kdenlive-22.12.2/debian/control     2023-02-03 09:49:23.000000000 +0100
+++ kdenlive-22.12.3/debian/control     2023-03-10 09:43:45.000000000 +0100
@@ -60,6 +60,8 @@
  qml-module-qtquick-dialogs,
  qml-module-qtquick-layouts,
  qml-module-qtquick-window2,
+ qml-module-org-kde-kcm,
+ qml-module-org-kde-newstuff,
  breeze,
  breeze-icon-theme (>= 4:5.83.0),
  kinit,
diff -Nru kdenlive-22.12.2/debian/upstream/signing-key.asc 
kdenlive-22.12.3/debian/upstream/signing-key.asc
--- kdenlive-22.12.2/debian/upstream/signing-key.asc    2023-02-03 
09:49:23.000000000 +0100
+++ kdenlive-22.12.3/debian/upstream/signing-key.asc    2023-03-10 
09:43:45.000000000 +0100
@@ -11,19 +11,147 @@
 P0B3l1E4Ccw1ne2/O1BdsnXeUaI3YVYz9aZkVlL7ywda3h/goRKxc1b18bmgu/Ed
 QmcTEMj29B3szMpetWNt1ZbaMJzfDw+z+SiQ3toOTUiqMuWq+l+JK0dVUzOvpGhG
 VHv5m9CtJFP671ivEc4it0hJRH5kdW9aNbeG0g9TxHQqQMJIpeLvRq5WKwARAQAB
-tCFBbGJlcnQgQXN0YWxzIENpZCA8YWFjaWRAa2RlLm9yZz6JAlQEEwEIAD4CGwMF
-CwkIBwIGFQgJCgsCBBYCAwECHgECF4AWIQTKJixsg95NL7KKMyo6ak24Oeqm1wUC
-Yv52/wUJDRPXIAAKCRA6ak24Oeqm1zksD/95HdsLbCMlQWImftxAY0wUNVLTvt7+
-9rjpt/unyCqdtD9uS7J6Tfldmd2zPxIJFxpDx3AK5gJGAl8hBuARBTG6mzDSyohy
-0ldLAroab2zKn/hGfnAlxZtsa8DGmNhKKb8zEyKraM2grdc2bCF/sQ5yKmC0THAQ
-wMBjLHoszKYV+y/R34o1nZZaufPrNWMPd3hmiyCl5vzmRDQJatmkDvueYyPMt3Ff
-JovWtixWFHsdnQ72l2kelkhpNc51RpgZ6lCm9ghWWTLvOEPhR5tpYQ+CykPatmzh
-LXUthnfTCphQNf6nX7jjllq7Sd4MaTAmnj0yfoTyHjdqPAYv26dMbBlR2lAxXz2S
-oyQZVHgGQeEW4nll6Xej25d1yKnOXwO4g3RBt/dv4Q8IQKHyDZY5hJotg2OrA1hL
-9zsb+6lKjMr0UEJa8lhhwSKhlVzD0fdrOaP7pJUfjyd0CrPrlrgdNoo4eV0bXV5k
-uFKfCgmwRHKWyJKDc1CmnJReFMJQGfFMiuOyvYhVhUxNBzS7sV3IF28r1n1iKN9e
-GSgcBjAVW2LKaq0ThW1QXWcWT7vudcXjbq9kQuOTh7fBEM47wHhyqhLP5TOIBBaI
-xW2x87Ag4i2HKUM2PsV+j6rzMwiCfzINUS+IEfUTX52Mc3JUKCqOrqVlNJ1d/4+m
-kshlzwQA2oFzEQ==
-=rmmH
+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
+hC+sXh0NMOq4pxE=
+=Wqdv
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFlRpEYBCACecX3F5xzF6wzeXiuBAuHq74bVHON7I89U+ROloEWYUYMRNTz2
+l1BkNHWRTTqfmPO7LhMY6g4gOPeQVCwgTGVjI8bn6sJd3SFdeiRvvaFBpmn7SjBd
+s1rkKKJIjeMUl1w8dFnmf22V0PnhSSepmNwmd8RQnl1umCTSihDJydGxixw6ZNhr
+4tzbn+Rfadybli61H2hc6/JJHe91i+V1ltgkHwGcs6MUCqXgSL0dUIJs49gSrla0
+gkrcJYF5MWyGxKlajbCjkMCJtN+8bhEmpc4Oe8NZ33arEWnlyh1RVgi5p3RTNApY
+Pxctcg57ExczbKn9R8VLYmPJ7Di3gX0cmotrABEBAAG0HkNocmlzdG9waCBGZWNr
+IDxjZmVja0BrZGUub3JnPokBTgQTAQgAOBYhBPIydeS/EK/B32kUptvSzok+LRyH
+BQJZUaRGAhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJENvSzok+LRyHeWcH
+/A1E2d5UL2oHsrLIolIiWMmheRorcac+0Hgll1mMUQ5tfPH+LVzgrlMMG7g1Amky
+Hk1qZ5oszrXUg2H/28/cOF/WVlHgQcSGr7aQbHieUivPtZMua+lHUdILC3UV2l1V
+22Zz8HIDl4kxmK6EpoNIOK5Mo550S3e3AKYq5pa/FlckCV9/JoK9+thRCsoAAj3g
+oWwTx9RY5pmLPtklqyC5961Je7KHSIVqapJ/G5DX+yfOC1Psc+vIfyQVqnaefZPW
+dIxXQQhn46i6IRRimw94Gkwca+wslkimt/L/Z7ByZqBsXMyixSQPq+dtSO9CMgr0
+WxTX78wATkTGzh5oSwKCMga5AQ0EWVGkRgEIAMuUnfNfrdx8xn7Jjcm6MGkB/Yep
+XVysrlHxUUS6q7629JdSlVWnQo9GFO927GZClWI9rCGLQMfZZk/jfgKV/nkpLod3
+I51remOg7ohSkwRLAdwJ7xCuNrafhKntFh5/NxuaXxaVIY1muvZbTAsIRyks2jCE
+pUoK43Z8dr4/QPhBstssB8czDME1Tw4r7X+RwjFrQqDItFv6f0BIdEwR462khLEw
+vbXRN1nzs+6Y0foJbJCS3VDZC9scsrrMVMV+OEBF3DXp9ypSWsLnkuBPPIus6Y8G
+j7JvYUBtrUhKL5a7o5G3Te9YhwGgOKVqWlncs6ZLiOV6HnG0BO3xdPcn09cAEQEA
+AYkBNgQYAQgAIBYhBPIydeS/EK/B32kUptvSzok+LRyHBQJZUaRGAhsMAAoJENvS
+zok+LRyHaRMIAI5YaTfGeQDmR08I2LvztOEH/3YF63cNCP/Vp+WAtF/Kr8mMFpFS
+oTHJNMi7p964lHYTTPzPeQzLzV3ayiQjq+DHs6HFmYl73ukzlGGc7KDlyhugQjm6
+AqNtqqXAVykaixnFj8jf2WtQGl1hqpm8GhDRBmZycqMqne4tZokujhtpdC6suRvc
+AB0S+lRZUwrY05k6Nc1A8J8k/lxXXa9KzXNaqKsqppgBZoqKN3zS4146uEjvuLsh
+CarZ/6uUidvP0LBTR7HKye5A9Qdbjlg9qvtR7YF3hqy4g1PRNZWRlsQ1pkCdCTfN
+TA+HYUzK0ESVpY72lWvH49lNg+ufZ1bKvKI=
+=MZJ5
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=PVLg
 -----END PGP PUBLIC KEY BLOCK-----
diff -Nru kdenlive-22.12.2/src/bin/model/subtitlemodel.cpp 
kdenlive-22.12.3/src/bin/model/subtitlemodel.cpp
--- kdenlive-22.12.2/src/bin/model/subtitlemodel.cpp    2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/bin/model/subtitlemodel.cpp    2023-02-27 
05:00:53.000000000 +0100
@@ -205,9 +205,9 @@
                     srtTime = timeLine.split(separator);
                     if (srtTime.count() > endIndex) {
                         start = srtTime.at(0);
-                        startPos = stringtoTime(start)/transformMult;
+                        startPos = stringtoTime(start, transformMult);
                         end = srtTime.at(endIndex);
-                        endPos = stringtoTime(end)/transformMult;
+                        endPos = stringtoTime(end, transformMult);
                     } else {
                         continue;
                     }
@@ -328,9 +328,9 @@
                         if (dialogue.count() > textIndex) {
                             // TIME
                             start = dialogue.at(1);
-                            startPos = stringtoTime(start)/transformMult;
+                            startPos = stringtoTime(start, transformMult);
                             end = dialogue.at(2);
-                            endPos = stringtoTime(end)/transformMult;
+                            endPos = stringtoTime(end, transformMult);
                             // Text field is always the last field, since it 
can have commas
                             comment = line.section(",", numEventFields - 1);
                             // qDebug()<<"Start: "<< start << "End: "<<end << 
comment;
@@ -389,7 +389,7 @@
     return m_subtitleFilter->get("av.filename");
 }
 
-GenTime SubtitleModel::stringtoTime(QString &str)
+GenTime SubtitleModel::stringtoTime(QString &str, const double factor)
 {
     QStringList total, secs;
     double hours = 0, mins = 0, seconds = 0, ms = 0;
@@ -419,8 +419,10 @@
     }
 
     total_sec = hours * 3600 + mins * 60 + seconds + ms * 0.001;
-    pos = GenTime(total_sec);
-    return pos;
+    pos = GenTime(total_sec) / factor;
+    // Ensure times are aligned with our project's frames
+    int frames = pos.frames(pCore->getCurrentFps());
+    return GenTime(frames, pCore->getCurrentFps());
 }
 
 bool SubtitleModel::addSubtitle(GenTime start, GenTime end, const QString 
&str, Fun &undo, Fun &redo, bool updateFilter)
@@ -950,7 +952,6 @@
 
 bool SubtitleModel::moveSubtitle(int subId, GenTime newPos, bool updateModel, 
bool updateView)
 {
-    qDebug() << "Moving Subtitle";
     if (m_timeline->m_allSubtitles.count(subId) == 0 || isLocked()) {
         return false;
     }
diff -Nru kdenlive-22.12.2/src/bin/model/subtitlemodel.hpp 
kdenlive-22.12.3/src/bin/model/subtitlemodel.hpp
--- kdenlive-22.12.2/src/bin/model/subtitlemodel.hpp    2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/bin/model/subtitlemodel.hpp    2023-02-27 
05:00:53.000000000 +0100
@@ -41,7 +41,7 @@
     bool addSubtitle(int id, GenTime start, GenTime end, const QString &str, 
bool temporary = false, bool updateFilter = true);
     bool addSubtitle(GenTime start, GenTime end, const QString &str, Fun 
&undo, Fun &redo, bool updateFilter = true);
     /** @brief Converts string of time to GenTime */
-    GenTime stringtoTime(QString &str);
+    GenTime stringtoTime(QString &str, const double factor = 1.);
     /** @brief Return model data item according to the role passed */
     QVariant data(const QModelIndex &index, int role) const override;
     QHash<int, QByteArray> roleNames() const override; // override the same 
function of QAbstractListModel
diff -Nru kdenlive-22.12.2/src/dialogs/textbasededit.cpp 
kdenlive-22.12.3/src/dialogs/textbasededit.cpp
--- kdenlive-22.12.2/src/dialogs/textbasededit.cpp      2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/dialogs/textbasededit.cpp      2023-02-27 
05:00:53.000000000 +0100
@@ -605,6 +605,7 @@
     connect(pCore.get(), &Core::voskModelUpdate, this, [&](const QStringList 
&models) {
         language_box->clear();
         language_box->addItems(models);
+
         if (models.isEmpty()) {
             showMessage(i18n("Please install speech recognition models"), 
KMessageWidget::Information, m_voskConfig);
         } else {
diff -Nru kdenlive-22.12.2/src/timeline2/model/timelinemodel.cpp 
kdenlive-22.12.3/src/timeline2/model/timelinemodel.cpp
--- kdenlive-22.12.2/src/timeline2/model/timelinemodel.cpp      2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/timeline2/model/timelinemodel.cpp      2023-02-27 
05:00:53.000000000 +0100
@@ -1204,7 +1204,7 @@
     return -1;
 }
 
-bool TimelineModel::requestSubtitleMove(int clipId, int position, bool 
updateView, bool logUndo, bool invalidateTimeline)
+bool TimelineModel::requestSubtitleMove(int clipId, int position, bool 
updateView, bool logUndo, bool finalMove)
 {
     QWriteLocker locker(&m_lock);
     Q_ASSERT(m_allSubtitles.count(clipId) > 0);
@@ -1221,21 +1221,24 @@
     }
     std::function<bool(void)> undo = []() { return true; };
     std::function<bool(void)> redo = []() { return true; };
-    bool res = requestSubtitleMove(clipId, position, updateView, logUndo, 
logUndo, invalidateTimeline, undo, redo);
+    bool res = requestSubtitleMove(clipId, position, updateView, logUndo, 
logUndo, finalMove, undo, redo);
     if (res && logUndo) {
         PUSH_UNDO(undo, redo, i18n("Move subtitle"));
     }
     return res;
 }
 
-bool TimelineModel::requestSubtitleMove(int clipId, int position, bool 
updateView, bool first, bool last, bool invalidateTimeline, Fun &undo, Fun 
&redo)
+bool TimelineModel::requestSubtitleMove(int clipId, int position, bool 
updateView, bool first, bool last, bool finalMove, Fun &undo, Fun &redo)
 {
-    Q_UNUSED(invalidateTimeline)
     QWriteLocker locker(&m_lock);
     GenTime oldPos = m_allSubtitles.at(clipId);
     GenTime newPos(position, pCore->getCurrentFps());
-    Fun local_redo = [this, clipId, newPos, last, updateView]() { return 
m_subtitleModel->moveSubtitle(clipId, newPos, last, updateView); };
-    Fun local_undo = [this, oldPos, clipId, first, updateView]() { return 
m_subtitleModel->moveSubtitle(clipId, oldPos, first, updateView); };
+    Fun local_redo = [this, clipId, newPos, reloadSubFile = last && finalMove, 
updateView]() {
+        return m_subtitleModel->moveSubtitle(clipId, newPos, reloadSubFile, 
updateView);
+    };
+    Fun local_undo = [this, oldPos, clipId, reloadSubFile = first && 
finalMove, updateView]() {
+        return m_subtitleModel->moveSubtitle(clipId, oldPos, reloadSubFile, 
updateView);
+    };
     bool res = local_redo();
     if (res) {
         UPDATE_UNDO_REDO(local_redo, local_undo, undo, redo);
@@ -1319,16 +1322,10 @@
             all_items = m_groups->getLeaves(groupId);
         }
         for (int current_clipId : all_items) {
-            if (getItemTrackId(current_clipId) != -1) {
-                if (isClip(current_clipId)) {
-                    m_allClips[current_clipId]->allSnaps(ignored_pts, offset);
-                } else if (isComposition(current_clipId)) {
-                    // Composition
-                    int in = getItemPosition(current_clipId) - offset;
-                    ignored_pts.push_back(in);
-                    ignored_pts.push_back(in + 
getItemPlaytime(current_clipId));
-                }
-            } else if (isSubTitle(current_clipId)) {
+            if (isClip(current_clipId)) {
+                m_allClips[current_clipId]->allSnaps(ignored_pts, offset);
+            } else if (isComposition(current_clipId) || 
isSubTitle(current_clipId)) {
+                // Composition or subtitle
                 int in = getItemPosition(current_clipId) - offset;
                 ignored_pts.push_back(in);
                 ignored_pts.push_back(in + getItemPlaytime(current_clipId));
@@ -1380,20 +1377,13 @@
             all_items = m_groups->getLeaves(groupId);
         }
         for (int current_clipId : all_items) {
-            if (getItemTrackId(current_clipId) != -1) {
-                if (isClip(current_clipId)) {
-                    m_allClips[current_clipId]->allSnaps(ignored_pts, offset);
-                } else if (isComposition(current_clipId)) {
-                    // Composition
-                    int in = getItemPosition(current_clipId) - offset;
-                    ignored_pts.push_back(in);
-                    ignored_pts.push_back(in + 
getItemPlaytime(current_clipId));
-                }
-            } else if (isSubTitle(current_clipId)) {
-                // TODO: Subtitle
-                /*int in = getItemPosition(current_clipId) - offset;
+            if (isClip(current_clipId)) {
+                m_allClips[current_clipId]->allSnaps(ignored_pts, offset);
+            } else if (isComposition(current_clipId) || 
isSubTitle(current_clipId)) {
+                // Composition
+                int in = getItemPosition(current_clipId) - offset;
                 ignored_pts.push_back(in);
-                ignored_pts.push_back(in + getItemPlaytime(current_clipId));*/
+                ignored_pts.push_back(in + getItemPlaytime(current_clipId));
             }
         }
         int snapped = getBestSnapPos(currentPos, position - currentPos, 
ignored_pts, cursorPosition, snapDistance);
@@ -1533,12 +1523,19 @@
         int track_space;
         if (!after) {
             // Check space before the position
-            track_space = i.value() - 
getTrackById_const(i.key())->getBlankStart(i.value() - 1);
+            if (isSubtitleTrack(i.key())) {
+                track_space = i.value();
+            } else {
+                track_space = i.value() - 
getTrackById_const(i.key())->getBlankStart(i.value() - 1);
+            }
             if (blank_length == 0 || blank_length > track_space) {
                 blank_length = track_space;
             }
         } else {
             // Check space after the position
+            if (isSubtitleTrack(i.key())) {
+                continue;
+            }
             track_space = getTrackById(i.key())->getBlankEnd(i.value() + 1) - 
i.value();
             if (blank_length == 0 || blank_length > track_space) {
                 blank_length = track_space;
@@ -2419,13 +2416,11 @@
         }
         return true;
     };
-    // Move subtitles
-    if (!sorted_subtitles.empty()) {
-        std::vector<std::pair<int, GenTime>>::iterator ptr;
-        auto last = std::prev(sorted_subtitles.end());
-        for (ptr = sorted_subtitles.begin(); ptr < sorted_subtitles.end(); 
ptr++) {
-            requestSubtitleMove((*ptr).first, 
(*ptr).second.frames(pCore->getCurrentFps()) + delta_pos, updateView, ptr == 
sorted_subtitles.begin(),
-                                ptr == last, finalMove, local_undo, 
local_redo);
+    // Check that we don't move subtitles before 0
+    if (!sorted_subtitles.empty() && 
sorted_subtitles.front().second.frames(pCore->getCurrentFps()) + delta_pos < 0) 
{
+        delta_pos = 
-sorted_subtitles.front().second.frames(pCore->getCurrentFps());
+        if (delta_pos == 0) {
+            return false;
         }
     }
 
@@ -2481,6 +2476,7 @@
             }
         }
     }
+    bool updateSubtitles = updateView;
     if (delta_track == 0 && updateView) {
         updateView = false;
         allowViewRefresh = false;
@@ -2633,7 +2629,7 @@
         if (ok) {
             sync_mix();
             PUSH_LAMBDA(sync_mix, local_redo);
-
+            // Move compositions
             for (const std::pair<int, std::pair<int, int>> &item : 
sorted_compositions) {
                 int current_track_id = getItemTrackId(item.first);
                 if (!allowedTracks.isEmpty() && 
!allowedTracks.contains(current_track_id)) {
@@ -2703,6 +2699,21 @@
             if (!ok) {
                 bool undone = local_undo();
                 Q_ASSERT(undone);
+                return false;
+            }
+        }
+    }
+    // Move subtitles
+    if (!sorted_subtitles.empty()) {
+        std::vector<std::pair<int, GenTime>>::iterator ptr;
+        auto last = std::prev(sorted_subtitles.end());
+
+        for (ptr = sorted_subtitles.begin(); ptr < sorted_subtitles.end(); 
ptr++) {
+            ok = requestSubtitleMove((*ptr).first, 
(*ptr).second.frames(pCore->getCurrentFps()) + delta_pos, updateSubtitles, ptr 
== sorted_subtitles.begin(),
+                                     ptr == last, finalMove, local_undo, 
local_redo);
+            if (!ok) {
+                bool undone = local_undo();
+                Q_ASSERT(undone);
                 return false;
             }
         }
diff -Nru kdenlive-22.12.2/src/timeline2/model/timelinemodel.hpp 
kdenlive-22.12.3/src/timeline2/model/timelinemodel.hpp
--- kdenlive-22.12.2/src/timeline2/model/timelinemodel.hpp      2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/timeline2/model/timelinemodel.hpp      2023-02-27 
05:00:53.000000000 +0100
@@ -384,8 +384,8 @@
     */
     Q_INVOKABLE bool requestClipMove(int clipId, int trackId, int position, 
bool moveMirrorTracks = true, bool updateView = true, bool logUndo = true,
                                      bool invalidateTimeline = false, bool 
revertMove = false);
-    Q_INVOKABLE bool requestSubtitleMove(int clipId, int position, bool 
updateView = true, bool logUndo = true, bool invalidateTimeline = false);
-    bool requestSubtitleMove(int clipId, int position, bool updateView, bool 
first, bool last, bool invalidateTimeline, Fun &undo, Fun &redo);
+    Q_INVOKABLE bool requestSubtitleMove(int clipId, int position, bool 
updateView = true, bool logUndo = true, bool finalMove = false);
+    bool requestSubtitleMove(int clipId, int position, bool updateView, bool 
first, bool last, bool finalMove, Fun &undo, Fun &redo);
     int cutSubtitle(int position, Fun &undo, Fun &redo);
     bool requestClipMix(const QString &mixId, std::pair<int, int> clipIds, 
std::pair<int, int> mixDurations, int trackId, int position, bool updateView,
                         bool invalidateTimeline, bool finalMove, Fun &undo, 
Fun &redo, bool groupMove);
diff -Nru kdenlive-22.12.2/src/timeline2/view/qml/SubTitle.qml 
kdenlive-22.12.3/src/timeline2/view/qml/SubTitle.qml
--- kdenlive-22.12.2/src/timeline2/view/qml/SubTitle.qml        2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/timeline2/view/qml/SubTitle.qml        2023-02-27 
05:00:53.000000000 +0100
@@ -73,13 +73,14 @@
             property int diff: -1
             property int oldStartFrame
             property int snappedFrame
+            // Used for continuous scrolling
+            property int incrementalOffset
             property double delta: -1
             property double oldDelta: 0
             property bool startMove: false
             visible: root.activeTool === 0
             acceptedButtons: Qt.LeftButton | Qt.RightButton
             cursorShape: (pressed ? Qt.ClosedHandCursor : 
((startMouseArea.drag.active || endMouseArea.drag.active)? Qt.SizeHorCursor: 
Qt.PointingHandCursor));
-            //drag.target: subtitleBase
             drag.axis: Drag.XAxis
             drag.smoothed: false
             drag.minimumX: 0
@@ -93,11 +94,16 @@
             onPressed: {
                 console.log('ENTERED ITEM CLCKD:', subtitleRoot.subtitle, ' 
ID: ', subtitleRoot.subId, 'START FRM: ', subtitleRoot.startFrame)
                 root.autoScrolling = false
-                oldStartX = mouseX
+                oldStartX = scrollView.contentX + mapToItem(scrollView, 
mouseX, 0).x
                 oldStartFrame = subtitleRoot.startFrame
                 snappedFrame = oldStartFrame
                 x = subtitleBase.x
                 startMove = mouse.button & Qt.LeftButton
+                if (startMove) {
+                    root.subtitleMoving = true
+                    root.subtitleItem = subtitleClipArea
+                    incrementalOffset = 0
+                }
                 if (timeline.selection.indexOf(subtitleRoot.subId) === -1) {
                     controller.requestAddToSelection(subtitleRoot.subId, 
!(mouse.modifiers & Qt.ShiftModifier))
                     timeline.showAsset(subtitleRoot.subId);
@@ -108,14 +114,22 @@
                     timeline.showAsset(subtitleRoot.subId)
                 }
             }
-            onPositionChanged: {
+            function checkOffset(offset) {
                 if (pressed && !subtitleBase.textEditBegin && startMove) {
-                    newStart = Math.max(0, oldStartFrame + (mouseX - 
oldStartX)/ root.timeScale)
+                    incrementalOffset += offset
+                    newStart = Math.max(0, oldStartFrame + 
(scrollView.contentX + mapToItem(scrollView,mouseX, 0).x + incrementalOffset - 
oldStartX)/ root.timeScale)
                     snappedFrame = 
controller.suggestSubtitleMove(subtitleRoot.subId, newStart, 
root.consumerPosition, root.snapping)
+                    root.continuousScrolling(scrollView.contentX + 
mapToItem(scrollView, mouseX, 0).x + incrementalOffset, 0)
                 }
             }
+            onPositionChanged: {
+                incrementalOffset = 0
+                checkOffset(0)
+            }
             onReleased: {
                 root.autoScrolling = timeline.autoScroll
+                root.subtitleMoving = false
+                root.subtitleItem = undefined
                 if (subtitleBase.textEditBegin) {
                     mouse.accepted = false
                     return
@@ -127,7 +141,7 @@
                     if (oldStartFrame != snappedFrame) {
                         console.log("old start 
frame",oldStartFrame/timeline.scaleFactor, "new frame after shifting 
",oldStartFrame/timeline.scaleFactor + delta)
                         controller.requestSubtitleMove(subtitleRoot.subId, 
oldStartFrame, false, false);
-                        controller.requestSubtitleMove(subtitleRoot.subId, 
snappedFrame, true, true);
+                        controller.requestSubtitleMove(subtitleRoot.subId, 
snappedFrame, true, true, true);
                         x = snappedFrame * root.timeScale
                     }
                 }
diff -Nru kdenlive-22.12.2/src/timeline2/view/qml/timeline.qml 
kdenlive-22.12.3/src/timeline2/view/qml/timeline.qml
--- kdenlive-22.12.2/src/timeline2/view/qml/timeline.qml        2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/timeline2/view/qml/timeline.qml        2023-02-27 
05:00:53.000000000 +0100
@@ -22,6 +22,8 @@
     color: activePalette.window
     property bool debugmode: false
     property bool validMenu: false
+    property bool subtitleMoving: false
+    property var subtitleItem
     property color textColor: activePalette.text
     property var groupTrimData
     property bool trimInProgress: false
@@ -2278,8 +2280,12 @@
                     dragProxyArea.moveItem()
                 }
                 if (scrollView.contentX == 0 || (clipBeingMovedId == -1 && 
!rubberSelect.visible)) {
-                    horizontal = 0
-                    stop()
+                    if (root.subtitleMoving) {
+                        root.subtitleItem.checkOffset(horizontal)
+                    } else {
+                        horizontal = 0
+                        stop()
+                    }
                 }
             }
             if (rubberSelect.visible) {
diff -Nru kdenlive-22.12.2/src/ui/guidecategories_ui.ui 
kdenlive-22.12.3/src/ui/guidecategories_ui.ui
--- kdenlive-22.12.2/src/ui/guidecategories_ui.ui       2023-01-30 
08:41:54.000000000 +0100
+++ kdenlive-22.12.3/src/ui/guidecategories_ui.ui       2023-02-27 
05:00:53.000000000 +0100
@@ -10,9 +10,6 @@
     <height>398</height>
    </rect>
   </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
   <layout class="QGridLayout" name="gridLayout">
    <property name="leftMargin">
     <number>0</number>
diff -Nru kdenlive-22.12.2/src/ui/guideslist_ui.ui 
kdenlive-22.12.3/src/ui/guideslist_ui.ui
--- kdenlive-22.12.2/src/ui/guideslist_ui.ui    2023-01-30 08:41:54.000000000 
+0100
+++ kdenlive-22.12.3/src/ui/guideslist_ui.ui    2023-02-27 05:00:53.000000000 
+0100
@@ -10,9 +10,6 @@
     <height>288</height>
    </rect>
   </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
   <layout class="QGridLayout" name="gridLayout">
    <item row="4" column="0" colspan="3">
     <layout class="QHBoxLayout" name="horizontalLayout">
diff -Nru kdenlive-22.12.2/src/ui/textbasededit_ui.ui 
kdenlive-22.12.3/src/ui/textbasededit_ui.ui
--- kdenlive-22.12.2/src/ui/textbasededit_ui.ui 2023-01-30 08:41:54.000000000 
+0100
+++ kdenlive-22.12.3/src/ui/textbasededit_ui.ui 2023-02-27 05:00:53.000000000 
+0100
@@ -10,10 +10,16 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>411</width>
-    <height>422</height>
+    <width>332</width>
+    <height>355</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <widget class="KSqueezedTextLabel" name="clipNameLabel"/>
@@ -94,7 +100,8 @@
          <string>...</string>
         </property>
         <property name="icon">
-         <iconset theme="go-up"/>
+         <iconset theme="go-up">
+          <normaloff>.</normaloff>.</iconset>
         </property>
        </widget>
       </item>
@@ -114,7 +121,8 @@
          <string>...</string>
         </property>
         <property name="icon">
-         <iconset theme="go-down"/>
+         <iconset theme="go-down">
+          <normaloff>.</normaloff>.</iconset>
         </property>
        </widget>
       </item>
@@ -124,19 +132,17 @@
    <item row="6" column="0">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QComboBox" name="language_box"/>
+      <widget class="QComboBox" name="language_box">
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToContents</enum>
+       </property>
+      </widget>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>250</width>
-         <height>20</height>
-        </size>
-       </property>
       </spacer>
      </item>
      <item>
@@ -176,8 +182,8 @@
         </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>244</width>
-          <height>20</height>
+          <width>0</width>
+          <height>0</height>
          </size>
         </property>
        </spacer>
@@ -188,7 +194,8 @@
          <string>...</string>
         </property>
         <property name="icon">
-         <iconset theme="edit-find"/>
+         <iconset theme="edit-find">
+          <normaloff>.</normaloff>.</iconset>
         </property>
         <property name="checkable">
          <bool>true</bool>
diff -Nru kdenlive-22.12.2/tests/trimmingtest.cpp 
kdenlive-22.12.3/tests/trimmingtest.cpp
--- kdenlive-22.12.2/tests/trimmingtest.cpp     2023-01-30 08:41:54.000000000 
+0100
+++ kdenlive-22.12.3/tests/trimmingtest.cpp     2023-02-27 05:00:53.000000000 
+0100
@@ -6,6 +6,7 @@
 */
 #include "doc/kdenlivedoc.h"
 #include "test_utils.hpp"
+#include "timeline2/model/timelinefunctions.hpp"
 
 using namespace fakeit;
 Mlt::Profile profile_trimming;

Reply via email to