Hello community,

here is the log from the commit of package kdenlive for openSUSE:Factory 
checked in at 2015-06-04 11:24:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdenlive (Old)
 and      /work/SRC/openSUSE:Factory/.kdenlive.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdenlive"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdenlive/kdenlive.changes        2015-05-15 
10:05:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kdenlive.new/kdenlive.changes   2015-06-04 
11:24:06.000000000 +0200
@@ -1,0 +2,8 @@
+Sat May 30 15:11:42 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.04.2
+   * KDE Applications 15.04.2
+   * https://www.kde.org/announcements/announce-applications-15.04.2.php
+
+
+-------------------------------------------------------------------

Old:
----
  kdenlive-15.04.1.tar.xz

New:
----
  kdenlive-15.04.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdenlive.spec ++++++
--- /var/tmp/diff_new_pack.peVLiL/_old  2015-06-04 11:24:07.000000000 +0200
+++ /var/tmp/diff_new_pack.peVLiL/_new  2015-06-04 11:24:07.000000000 +0200
@@ -19,13 +19,13 @@
 %define mlt_version 0.9.6
 
 Name:           kdenlive
-Version:        15.04.1
+Version:        15.04.2
 Release:        0
 Summary:        Non-linear video editor
 License:        GPL-3.0+
 Group:          Productivity/Multimedia/Video/Editors and Convertors
 Url:            http://www.kdenlive.org/
-Source0:        
http://download.kde.org/stable/applications/15.04.1/src/%{name}-%{version}.tar.xz
+Source0:        
http://download.kde.org/stable/applications/15.04.2/src/%{name}-%{version}.tar.xz
 Patch1:         use-mlt_datadir.patch
 BuildRequires:  desktop-file-utils
 BuildRequires:  fdupes

++++++ kdenlive-15.04.1.tar.xz -> kdenlive-15.04.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/CMakeLists.txt 
new/kdenlive-15.04.2/CMakeLists.txt
--- old/kdenlive-15.04.1/CMakeLists.txt 2015-05-04 23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/CMakeLists.txt 2015-05-27 22:44:47.000000000 +0200
@@ -2,7 +2,7 @@
 
 # An odd patch version number means development version, while an even one 
means
 # stable release. An additional number can be used for bugfix-only releases.
-set(KDENLIVE_VERSION 15.04.1)
+set(KDENLIVE_VERSION 15.04.2)
 cmake_minimum_required(VERSION 2.8.12)
 # Minimum versions of main dependencies.
 set(MLT_MIN_MAJOR_VERSION 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/data/kdenlive.appdata.xml 
new/kdenlive-15.04.2/data/kdenlive.appdata.xml
--- old/kdenlive-15.04.1/data/kdenlive.appdata.xml      2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/data/kdenlive.appdata.xml      2015-05-27 
22:44:47.000000000 +0200
@@ -11,6 +11,7 @@
   <name xml:lang="de">Kdenlive</name>
   <name xml:lang="en-GB">Kdenlive</name>
   <name xml:lang="es">Kdenlive</name>
+  <name xml:lang="fi">Kdenlive</name>
   <name xml:lang="it">Kdenlive</name>
   <name xml:lang="nl">Kdenlive</name>
   <name xml:lang="pl">Kdenlive</name>
@@ -32,6 +33,7 @@
   <summary xml:lang="cs">Editor videí</summary>
   <summary xml:lang="de">Video-Editor</summary>
   <summary xml:lang="en-GB">Video Editor</summary>
+  <summary xml:lang="fi">Videoeditori</summary>
   <summary xml:lang="it">Editor video</summary>
   <summary xml:lang="nl">Videobewerker</summary>
   <summary xml:lang="pl">Edytor wideo</summary>
@@ -49,6 +51,7 @@
     <p>Kdenlive is a non linear video editor. It is based on the MLT framework 
and accepts many audio and video formats, allows you to add effects, 
transitions and render into the format of your choice.</p>
     <p xml:lang="ca">El Kdenlive és un editor no lineal de vídeo. Està basat 
en l'entorn de treball MLT i accepta molts formats d'àudio i vídeo, permetent 
afegir efectes, transicions i representacions en el format de la vostra 
elecció.</p>
     <p xml:lang="en-GB">Kdenlive is a non linear video editor. It is based on 
the MLT framework and accepts many audio and video formats, allows you to add 
effects, transitions and render into the format of your choice.</p>
+    <p xml:lang="fi">Kdenlive on epälineaarinen videoeditori. Se perustuu 
MLT-frameworkiin ja toimii monen eri ääni- ja videoformaatin kanssa. Voit 
lisätä efektejä ja siirtymiä, sekä renderöidä projektin haluamaasi 
tiedostomuotoon.</p>
     <p xml:lang="it">Kdenlive è un editor video non lineare. È basato 
sull'infrastruttura MLT e accetta numerosi formati audio e video, consente di 
aggiungere effetti, transizioni e produrre il formato che si desidera.</p>
     <p xml:lang="nl">Kdenlive is een niet lineaire videobewerker. Het is 
gebaseerd op het MLT-framework en accepteert vele audio- en video-formaten, 
biedt de mogelijkheid effecten en overgangen toe te voegen en om te zetten naar 
het formaat van uw keuze.</p>
     <p xml:lang="pl">Kdenlive jest nieliniowym edytorem wideo. Oparty jest na 
szkielecie MLT i może pracować na wielu formatach obrazu i dźwięku, umożliwia 
dodawanie efektów, przejść i renderowanie ich do dowolnego formatu.</p>
@@ -70,6 +73,7 @@
     <p xml:lang="cs">Vlastnosti:</p>
     <p xml:lang="de">Funktionen:</p>
     <p xml:lang="en-GB">Features:</p>
+    <p xml:lang="fi">Ominaisuuksia:</p>
     <p xml:lang="it">Funzionalità:</p>
     <p xml:lang="nl">Mogelijkheden:</p>
     <p xml:lang="pl">Możliwości:</p>
@@ -88,6 +92,7 @@
       <li xml:lang="ca">Interfície multipista intuïtiva.</li>
       <li xml:lang="de">Intuitive Benutzerschnittstelle für mehrere 
Spuren.</li>
       <li xml:lang="en-GB">Intuitive multitrack interface.</li>
+      <li xml:lang="fi">Selkeä moniraitainen käyttöliittymä</li>
       <li xml:lang="it">Interfaccia multitraccia intuitiva.</li>
       <li xml:lang="nl">Intuïtief interface met meerdere tracks.</li>
       <li xml:lang="pl">Intuicyjny interfejs wielościeżkowy.</li>
@@ -106,6 +111,7 @@
       <li xml:lang="ca">Molts efectes i transicions.</li>
       <li xml:lang="de">Viele Effekte und Übergänge.</li>
       <li xml:lang="en-GB">Many effects and transitions.</li>
+      <li xml:lang="fi">Monia erilaisia efektejä ja siirtymiä</li>
       <li xml:lang="it">Numerosi effetti e transizioni.</li>
       <li xml:lang="nl">Veel effecten en overgangen.</li>
       <li xml:lang="pl">Wiele efektów i przejść.</li>
@@ -123,6 +129,7 @@
       <li xml:lang="ar">نطاقات الألوان</li>
       <li xml:lang="ca">Àmbits de color</li>
       <li xml:lang="en-GB">Colour scopes</li>
+      <li xml:lang="fi">Väriavaruuksien säätömahdollisuus</li>
       <li xml:lang="it">Diagrammi di colore</li>
       <li xml:lang="nl">Kleurreeksen</li>
       <li xml:lang="pl">Zakresy barw</li>
@@ -141,6 +148,7 @@
       <li xml:lang="ast">Encontu básicu pa DVD</li>
       <li xml:lang="ca">Assistent bàsic per als DVD</li>
       <li xml:lang="en-GB">Basic DVD Wizard</li>
+      <li xml:lang="fi">Yksinkertainen DVD:n luonti</li>
       <li xml:lang="it">Procedura guidata di base DVD</li>
       <li xml:lang="nl">Basis dvd-assistent</li>
       <li xml:lang="pl">Pomocnik podstawowego DVD</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/definitions.h 
new/kdenlive-15.04.2/src/definitions.h
--- old/kdenlive-15.04.1/src/definitions.h      2015-05-04 23:42:42.000000000 
+0200
+++ new/kdenlive-15.04.2/src/definitions.h      2015-05-27 22:44:47.000000000 
+0200
@@ -54,19 +54,20 @@
 
 enum OperationType {
     None = 0,
-    MoveOperation = 1,
-    ResizeStart = 2,
-    ResizeEnd = 3,
-    FadeIn = 4,
-    FadeOut = 5,
-    TransitionStart = 6,
-    TransitionEnd = 7,
-    MoveGuide = 8,
-    KeyFrame = 9,
-    Seek = 10,
-    Spacer = 11,
-    RubberSelection = 12,
-    ScrollTimeline = 13
+    MoveOperation,
+    ResizeStart,
+    ResizeEnd,
+    FadeIn,
+    FadeOut,
+    TransitionStart,
+    TransitionEnd,
+    MoveGuide,
+    KeyFrame,
+    Seek,
+    Spacer,
+    RubberSelection,
+    ScrollTimeline,
+    ZoomTimeline
 };
 
 enum ClipType {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdenlive-15.04.1/src/dialogs/kdenlivesettingsdialog.cpp 
new/kdenlive-15.04.2/src/dialogs/kdenlivesettingsdialog.cpp
--- old/kdenlive-15.04.1/src/dialogs/kdenlivesettingsdialog.cpp 2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/dialogs/kdenlivesettingsdialog.cpp 2015-05-27 
22:44:47.000000000 +0200
@@ -850,8 +850,9 @@
 
 void KdenliveSettingsDialog::saveTranscodeProfiles()
 {
-    KSharedConfigPtr config = 
KSharedConfig::openConfig(QStandardPaths::locate(QStandardPaths::DataLocation, 
"kdenlivetranscodingrc"), KConfig::CascadeConfig);
-    //KSharedConfigPtr config = KSharedConfig::openConfig();
+  
+    QString transcodeFile = 
QStandardPaths::writableLocation(QStandardPaths::DataLocation) + 
"/kdenlivetranscodingrc";
+    KSharedConfigPtr config = KSharedConfig::openConfig(transcodeFile);
     KConfigGroup transConfig(config, "Transcoding");
     // read the entries
     transConfig.deleteGroup();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/dialogs/profilesdialog.cpp 
new/kdenlive-15.04.2/src/dialogs/profilesdialog.cpp
--- old/kdenlive-15.04.1/src/dialogs/profilesdialog.cpp 2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/dialogs/profilesdialog.cpp 2015-05-27 
22:44:47.000000000 +0200
@@ -312,7 +312,7 @@
     }
 
     // List custom profiles
-    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "profiles");
+    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "/profiles/", 
QStandardPaths::LocateDirectory);
     for (int i = 0; i < customProfiles.size(); ++i) {
         QDir customDir(customProfiles.at(i));
         profilesFiles = customDir.entryList(profilesFilter, QDir::Files);
@@ -350,7 +350,7 @@
     }
 
     // Check custom profiles
-    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "profiles");
+    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "/profiles/", 
QStandardPaths::LocateDirectory);
     for (int i = 0; i < customProfiles.size(); ++i) {
         profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, 
QDir::Files);
         for (int j = 0; j < profilesFiles.size(); ++j) {
@@ -388,7 +388,7 @@
     }
 
     // List custom profiles
-    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "profiles");
+    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "/profiles/", 
QStandardPaths::LocateDirectory);
     for (int i = 0; i < customProfiles.size(); ++i) {
         profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, 
QDir::Files);
         for (int j = 0; j < profilesFiles.size(); ++j) {
@@ -457,7 +457,7 @@
     }
 
     // List custom profiles
-    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "profiles");
+    QStringList customProfiles = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "/profiles/", 
QStandardPaths::LocateDirectory);
     for (int i = 0; i < customProfiles.size(); ++i) {
         QStringList profiles = 
QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
         for (int j = 0; j < profiles.size(); ++j) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/doc/kdenlivedoc.cpp 
new/kdenlive-15.04.2/src/doc/kdenlivedoc.cpp
--- old/kdenlive-15.04.1/src/doc/kdenlivedoc.cpp        2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/doc/kdenlivedoc.cpp        2015-05-27 
22:44:47.000000000 +0200
@@ -588,7 +588,7 @@
 
     for (int i = 0; i < guides.count(); ++i) {
         e = m_guidesXml.createElement("guide");
-        e.setAttribute("time", guides.at(i)->position().ms() / 1000);
+        e.setAttribute("time", QString::number(guides.at(i)->position().ms() / 
1000));
         e.setAttribute("comment", guides.at(i)->label());
         guideNode.appendChild(e);
     }
@@ -769,7 +769,7 @@
         QList < CommentedTime > marks = list.at(i)->commentedSnapMarkers();
         for (int j = 0; j < marks.count(); ++j) {
             QDomElement marker = sceneList.createElement("marker");
-            marker.setAttribute("time", marks.at(j).time().ms() / 1000);
+            marker.setAttribute("time", 
QString::number(marks.at(j).time().ms() / 1000));
             marker.setAttribute("comment", marks.at(j).comment());
             marker.setAttribute("id", e.attribute("id"));
             marker.setAttribute("type", marks.at(j).markerType());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/mainwindow.cpp 
new/kdenlive-15.04.2/src/mainwindow.cpp
--- old/kdenlive-15.04.1/src/mainwindow.cpp     2015-05-04 23:42:42.000000000 
+0200
+++ new/kdenlive-15.04.2/src/mainwindow.cpp     2015-05-27 22:44:47.000000000 
+0200
@@ -458,7 +458,7 @@
     KSharedConfigPtr config = KSharedConfig::openConfig(theme);
     setPalette(KColorScheme::createApplicationPalette(config));
     qApp->setPalette(palette());
-    
KdenliveSettings::setColortheme(ThemeManager::instance()->currentThemeName());
+    KdenliveSettings::setColortheme(theme);
     QPalette plt = palette();
     if (m_effectStack) m_effectStack->updatePalette();
     if (m_effectList) m_effectList->updatePalette();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/statusbarmessagelabel.cpp 
new/kdenlive-15.04.2/src/statusbarmessagelabel.cpp
--- old/kdenlive-15.04.1/src/statusbarmessagelabel.cpp  2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/statusbarmessagelabel.cpp  2015-05-27 
22:44:47.000000000 +0200
@@ -44,9 +44,9 @@
     m_closeButton(0)
 {
     setMinimumHeight(KIconLoader::SizeSmall);
-    QPalette palette;
+    /*QPalette palette);
     palette.setColor(QPalette::Background, Qt::transparent);
-    setPalette(palette);
+    setPalette(palette);*/
 
     m_closeButton = new QPushButton(i18nc("@action:button", "Confirm"), this);
     m_closeButton->hide();
@@ -224,7 +224,7 @@
         backgroundColor = KStatefulBrush(KColorScheme::Window, 
KColorScheme::NegativeBackground, 
KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
     }
     if (m_state == Desaturate && m_illumination > 0) {
-        backgroundColor.setAlpha(m_illumination * 2);
+        backgroundColor.setAlpha(qMax(m_illumination * 2, 255));
     }
     painter.fillRect(0, 0, width(), height(), backgroundColor);
 
@@ -238,7 +238,7 @@
     }
 
     // draw text
-    painter.setPen(palette().windowText().color());
+    painter.setPen(palette().text().color());
     int flags = Qt::AlignVCenter;
     if (height() > m_minTextHeight) {
         flags = flags | Qt::TextWordWrap;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/abstractgroupitem.cpp 
new/kdenlive-15.04.2/src/timeline/abstractgroupitem.cpp
--- old/kdenlive-15.04.1/src/timeline/abstractgroupitem.cpp     2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/abstractgroupitem.cpp     2015-05-27 
22:44:47.000000000 +0200
@@ -184,10 +184,20 @@
 QVariant AbstractGroupItem::itemChange(GraphicsItemChange change, const 
QVariant &value)
 {
     if (change == QGraphicsItem::ItemSelectedChange) {
-        if (value.toBool()) setZValue(10);
+        if (value.toBool()) setZValue(3);
         else setZValue(1);
     }
-    if (change == ItemPositionChange && scene() && parentItem() == 0) {
+    CustomTrackScene *scene = NULL;
+    if (change == ItemPositionChange && parentItem() == 0) {
+        scene = projectScene();
+    }
+    if (scene) {
+        // calculate new position.
+        if (scene->isZooming) {
+            // For some reason, mouse wheel on selected itm sometimes triggered
+            // a position change event corrupting timeline, so discard it
+            return pos();
+        }
         // calculate new position.
         const int trackHeight = KdenliveSettings::trackheight();
         QPointF start = sceneBoundingRect().topLeft();
@@ -277,7 +287,7 @@
         QPainterPath shape;
         if (projectScene()->editMode() == NormalEdit) {
             shape = clipGroupShape(newPos - pos());
-            collidingItems = scene()->items(shape, Qt::IntersectsItemShape);
+            collidingItems = scene->items(shape, Qt::IntersectsItemShape);
             collidingItems.removeAll(this);
             for (int i = 0; i < children.count(); ++i) {
                 if (children.at(i)->type() == GroupWidget) {
@@ -315,7 +325,7 @@
                     newPos.setX(newPos.x() + offset);
                 }
                 // If there is still a collision after our position adjust, 
restore original pos
-                collidingItems = scene()->items(clipGroupShape(newPos - 
pos()), Qt::IntersectsItemShape);
+                collidingItems = scene->items(clipGroupShape(newPos - pos()), 
Qt::IntersectsItemShape);
                 collidingItems.removeAll(this);
                 for (int i = 0; i < children.count(); ++i) {
                     if (children.at(i)->type() == GroupWidget) {
@@ -333,7 +343,7 @@
 
         if (projectScene()->editMode() == NormalEdit) {
             shape = transitionGroupShape(newPos - pos());
-            collidingItems = scene()->items(shape, Qt::IntersectsItemShape);
+            collidingItems = scene->items(shape, Qt::IntersectsItemShape);
             collidingItems.removeAll(this);
             for (int i = 0; i < children.count(); ++i) {
                 if (children.at(i)->type() == GroupWidget) {
@@ -372,7 +382,7 @@
                     newPos.setX(newPos.x() + offset);
                 }
                 // If there is still a collision after our position adjust, 
restore original pos
-                collidingItems = scene()->items(transitionGroupShape(newPos - 
pos()), Qt::IntersectsItemShape);
+                collidingItems = scene->items(transitionGroupShape(newPos - 
pos()), Qt::IntersectsItemShape);
                 for (int i = 0; i < children.count(); ++i) {
                     collidingItems.removeAll(children.at(i));
                 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/clipitem.cpp 
new/kdenlive-15.04.2/src/timeline/clipitem.cpp
--- old/kdenlive-15.04.1/src/timeline/clipitem.cpp      2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/clipitem.cpp      2015-05-27 
22:44:47.000000000 +0200
@@ -1368,23 +1368,32 @@
 {
     if (change == QGraphicsItem::ItemSelectedChange) {
         if (value.toBool())
-            setZValue(10);
+            setZValue(3);
         else
             setZValue(2);
     }
-    if (change == ItemPositionChange && scene()) {
+    CustomTrackScene *scene = NULL;
+    if (change == ItemPositionChange) {
+        scene = projectScene();
+    }
+    if (scene) {
         // calculate new position.
         //if (parentItem()) return pos();
+        if (scene->isZooming) {
+            // For some reason, mouse wheel on selected itm sometimes triggered
+            // a position change event corrupting timeline, so discard it
+            return pos();
+        }
         if (property("resizingEnd").isValid()) return pos();
         QPointF newPos = value.toPointF();
         ////qDebug() << "/// MOVING CLIP ITEM.------------\n++++++++++";
-        int xpos = projectScene()->getSnapPointForPos((int) newPos.x(), 
KdenliveSettings::snaptopoints());
+        int xpos = scene->getSnapPointForPos((int) newPos.x(), 
KdenliveSettings::snaptopoints());
         xpos = qMax(xpos, 0);
         newPos.setX(xpos);
         // Warning: newPos gives a position relative to the click event, so 
hack to get absolute pos
         int yOffset = property("y_absolute").toInt() + newPos.y();
         int newTrack = yOffset / KdenliveSettings::trackheight();
-        newTrack = qMin(newTrack, projectScene()->tracksCount() - 1);
+        newTrack = qMin(newTrack, scene->tracksCount() - 1);
         newTrack = qMax(newTrack, 0);
         QStringList lockedTracks = property("locked_tracks").toStringList();
         if (lockedTracks.contains(QString::number(newTrack))) {
@@ -1396,8 +1405,8 @@
         QRectF sceneShape = rect();
         sceneShape.translate(newPos);
         QList<QGraphicsItem*> items;
-        if (projectScene()->editMode() == NormalEdit) {
-            items = scene()->items(sceneShape, Qt::IntersectsItemShape);
+        if (scene->editMode() == NormalEdit) {
+            items = scene->items(sceneShape, Qt::IntersectsItemShape);
        }
         items.removeAll(this);
         bool forwardMove = newPos.x() > pos().x();
@@ -1425,7 +1434,7 @@
                             sceneShape.translate(QPointF(offset, 0));
                             newPos.setX(newPos.x() + offset);
                         }
-                        QList<QGraphicsItem*> subitems = 
scene()->items(sceneShape, Qt::IntersectsItemShape);
+                        QList<QGraphicsItem*> subitems = 
scene->items(sceneShape, Qt::IntersectsItemShape);
                         subitems.removeAll(this);
                         for (int j = 0; j < subitems.count(); ++j) {
                             if (!subitems.at(j)->isEnabled()) continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/customtrackscene.cpp 
new/kdenlive-15.04.2/src/timeline/customtrackscene.cpp
--- old/kdenlive-15.04.1/src/timeline/customtrackscene.cpp      2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/customtrackscene.cpp      2015-05-27 
22:44:47.000000000 +0200
@@ -25,7 +25,8 @@
         QGraphicsScene(parent),
         m_document(doc),
         m_scale(1.0, 1.0),
-        m_editMode(NormalEdit)
+        m_editMode(NormalEdit),
+        isZooming(false)
 {
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/customtrackscene.h 
new/kdenlive-15.04.2/src/timeline/customtrackscene.h
--- old/kdenlive-15.04.1/src/timeline/customtrackscene.h        2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/customtrackscene.h        2015-05-27 
22:44:47.000000000 +0200
@@ -59,6 +59,7 @@
     MltVideoProfile profile() const;
     void setEditMode(EditMode mode);
     EditMode editMode() const;
+    bool isZooming;
 
 private:
     KdenliveDoc *m_document;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/customtrackview.cpp 
new/kdenlive-15.04.2/src/timeline/customtrackview.cpp
--- old/kdenlive-15.04.1/src/timeline/customtrackview.cpp       2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/customtrackview.cpp       2015-05-27 
22:44:47.000000000 +0200
@@ -315,14 +315,32 @@
 void CustomTrackView::wheelEvent(QWheelEvent * e)
 {
     if (e->modifiers() == Qt::ControlModifier) {
-        if (e->delta() > 0) emit zoomIn();
-        else emit zoomOut();
+        if (m_operationMode == None || m_operationMode == ZoomTimeline) {
+            if (e->delta() > 0) emit zoomIn();
+            else emit zoomOut();
+        }
     } else {
+        if (m_operationMode == ResizeStart || m_operationMode == ResizeEnd) {
+            // Don't allow scrolling + resizing
+            return;
+        }
+        if (m_operationMode == None || m_operationMode == ZoomTimeline) {
+            // Prevent unwanted object move
+            m_scene->isZooming = true;
+        }
         if (e->delta() <= 0) 
horizontalScrollBar()->setValue(horizontalScrollBar()->value() + 
horizontalScrollBar()->singleStep());
         else  horizontalScrollBar()->setValue(horizontalScrollBar()->value() - 
horizontalScrollBar()->singleStep());
+        if (m_operationMode == None || m_operationMode == ZoomTimeline) {
+            m_scene->isZooming = false;
+        }
     }
 }
 
+void CustomTrackView::setOperation(OperationType op)
+{
+    m_operationMode = op;
+}
+
 int CustomTrackView::getPreviousVideoTrack(int track)
 {
     track = m_document->tracksCount() - track - 1;
@@ -501,7 +519,6 @@
         QGraphicsView::mouseMoveEvent(event);
         return;
     }
-
     if (event->buttons() & Qt::MidButton) return;
     if (dragMode() == QGraphicsView::RubberBandDrag || (event->modifiers() == 
Qt::ControlModifier && m_tool != SpacerTool && m_operationMode != ResizeStart 
&& m_operationMode != ResizeEnd)) {
         event->setAccepted(true);
@@ -512,7 +529,7 @@
 
     if (event->buttons() != Qt::NoButton) {
         bool move = (event->pos() - m_clickEvent).manhattanLength() >= 
QApplication::startDragDistance();
-        if (m_dragItem && move) m_clipDrag = true;
+        if (m_dragItem && move && m_operationMode != ZoomTimeline) m_clipDrag 
= true;
         if (m_dragItem && m_tool == SelectTool) {
             if (m_operationMode == MoveOperation && m_clipDrag) {
                 QGraphicsView::mouseMoveEvent(event);
@@ -607,7 +624,7 @@
         return;
     }
 
-    if (item && event->buttons() == Qt::NoButton) {
+    if (item && event->buttons() == Qt::NoButton && m_operationMode != 
ZoomTimeline) {
         AbstractClipItem *clip = static_cast <AbstractClipItem*>(item);
         if (m_tool == RazorTool) {
             // razor tool over a clip, display current frame in monitor
@@ -1002,7 +1019,7 @@
         }
         QGraphicsView::mousePressEvent(event);
         event->ignore();
-        return;      
+        return;
     }
     
     if (m_tool == SpacerTool) {
@@ -3664,15 +3681,14 @@
   }
 
   clearSelection();
-  m_operationMode = None;  
-  
+  m_operationMode = None;
   return;
 }
 
 void CustomTrackView::mouseReleaseEvent(QMouseEvent * event)
 {
     if (m_moveOpMode == Seek) m_moveOpMode = None;
-    if (m_operationMode == ScrollTimeline) {
+    if (m_operationMode == ScrollTimeline || m_operationMode == ZoomTimeline) {
         m_operationMode = None;
         setDragMode(QGraphicsView::NoDrag);
         QGraphicsView::mouseReleaseEvent(event);
@@ -5805,8 +5821,10 @@
 
 void CustomTrackView::setScale(double scaleFactor, double verticalScale)
 {
+
     QMatrix newmatrix;
     newmatrix = newmatrix.scale(scaleFactor, verticalScale);
+    m_scene->isZooming = true;
     m_scene->setScale(scaleFactor, verticalScale);
     removeTipAnimation();
     bool adjust = false;
@@ -5830,6 +5848,7 @@
     }
     double verticalPos = mapToScene(QPoint(0, viewport()->height() / 2)).y();
     centerOn(QPointF(cursorPos(), verticalPos));
+    m_scene->isZooming = false;
 }
 
 void CustomTrackView::slotRefreshGuides()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/customtrackview.h 
new/kdenlive-15.04.2/src/timeline/customtrackview.h
--- old/kdenlive-15.04.1/src/timeline/customtrackview.h 2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/customtrackview.h 2015-05-27 
22:44:47.000000000 +0200
@@ -220,6 +220,8 @@
     void createGroupForSelectedItems(QList<QGraphicsItem *> &selection);
     void selectItemsRightOfFrame(int frame);
     void resetSelectionGroup(bool selectItems = true);
+    /** @brief We are performing a timeline operation. */
+    void setOperation(OperationType op);
 
 public slots:
     /** @brief Send seek request to MLT. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/timeline/transition.cpp 
new/kdenlive-15.04.2/src/timeline/transition.cpp
--- old/kdenlive-15.04.1/src/timeline/transition.cpp    2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/timeline/transition.cpp    2015-05-27 
22:44:47.000000000 +0200
@@ -37,7 +37,7 @@
     m_automaticTransition(automaticTransition),
     m_transitionTrack(transitiontrack)
 {
-    setZValue(3);
+    setZValue(4);
     m_info.cropDuration = info.endPos - info.startPos;
     setPos(info.startPos.frames(fps), (int)(info.track * 
KdenliveSettings::trackheight() + itemOffset() + 1));
 
@@ -204,11 +204,20 @@
 QVariant Transition::itemChange(GraphicsItemChange change, const QVariant 
&value)
 {
     if (change == QGraphicsItem::ItemSelectedChange) {
-        if (value.toBool()) setZValue(10);
-        else setZValue(3);
+        if (value.toBool()) setZValue(5);
+        else setZValue(4);
     }
-    if (change == ItemPositionChange && scene()) {
+    CustomTrackScene *scene = NULL;
+    if (change == ItemPositionChange) {
+        scene = projectScene();
+    }
+    if (scene) {
         // calculate new position.
+        if (scene->isZooming) {
+            // For some reason, mouse wheel on selected itm sometimes triggered
+            // a position change event corrupting timeline, so discard it
+            return pos();
+        }
         QPointF newPos = value.toPointF();
         int xpos = projectScene()->getSnapPointForPos((int) newPos.x(), 
KdenliveSettings::snaptopoints());
         xpos = qMax(xpos, 0);
@@ -228,7 +237,7 @@
         QList<QGraphicsItem*> items;
         // TODO: manage transitions in OVERWRITE MODE
         //if (projectScene()->editMode() == NORMALEDIT)
-        items = scene()->items(sceneShape, Qt::IntersectsItemShape);
+        items = scene->items(sceneShape, Qt::IntersectsItemShape);
         items.removeAll(this);
 
         bool forwardMove = newPos.x() > pos().x();
@@ -256,7 +265,7 @@
                             sceneShape.translate(QPointF(offset, 0));
                             newPos.setX(newPos.x() + offset);
                         }
-                        QList<QGraphicsItem*> subitems = 
scene()->items(sceneShape, Qt::IntersectsItemShape);
+                        QList<QGraphicsItem*> subitems = 
scene->items(sceneShape, Qt::IntersectsItemShape);
                         subitems.removeAll(this);
                         for (int j = 0; j < subitems.count(); ++j) {
                             if (!subitems.at(j)->isEnabled()) continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/ui/profiledialog_ui.ui 
new/kdenlive-15.04.2/src/ui/profiledialog_ui.ui
--- old/kdenlive-15.04.1/src/ui/profiledialog_ui.ui     2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/ui/profiledialog_ui.ui     2015-05-27 
22:44:47.000000000 +0200
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>334</width>
-    <height>296</height>
+    <width>376</width>
+    <height>458</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -243,26 +243,13 @@
      </property>
     </widget>
    </item>
-   <item row="2" column="2">
-    <spacer name="horizontalSpacer_2">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>40</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
    <item row="2" column="4" colspan="3">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="standardButtons">
-      <set>QDialogButtonBox::Ok</set>
+      <set>QDialogButtonBox::Close</set>
      </property>
     </widget>
    </item>
@@ -293,6 +280,19 @@
      </property>
     </widget>
    </item>
+   <item row="2" column="2" colspan="2">
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
   </layout>
  </widget>
  <customwidgets>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdenlive-15.04.1/src/utils/thememanager.cpp 
new/kdenlive-15.04.2/src/utils/thememanager.cpp
--- old/kdenlive-15.04.1/src/utils/thememanager.cpp     2015-05-04 
23:42:42.000000000 +0200
+++ new/kdenlive-15.04.2/src/utils/thememanager.cpp     2015-05-27 
22:44:47.000000000 +0200
@@ -111,13 +111,12 @@
                     : action->text().remove('&'));
 }
 
-void ThemeManager::setCurrentTheme(const QString& name)
+void ThemeManager::setCurrentTheme(const QString& filename)
 {
     if (!d->themeMenuAction || !d->themeMenuActionGroup)
         return;
-
+    QString name = d->themeMap.key(filename, d->defaultThemeName);
     QList<QAction*> list = d->themeMenuActionGroup->actions();
-
     foreach(QAction* const action, list)
     {
         if (action->text().remove('&') == name)


Reply via email to