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)