Hello community, here is the log from the commit of package shotcut for openSUSE:Factory checked in at 2018-04-25 10:02:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/shotcut (Old) and /work/SRC/openSUSE:Factory/.shotcut.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "shotcut" Wed Apr 25 10:02:33 2018 rev:12 rq:600678 version:18.03.06 Changes: -------- --- /work/SRC/openSUSE:Factory/shotcut/shotcut.changes 2018-03-06 10:49:23.111738467 +0100 +++ /work/SRC/openSUSE:Factory/.shotcut.new/shotcut.changes 2018-04-25 10:02:37.428042057 +0200 @@ -1,0 +2,14 @@ +Tue Apr 24 10:58:20 UTC 2018 - davejpla...@gmail.com + +- Update to bug fix release 18.03.06 +- Upstream changes: + *Fix multiply handled KeyEvent regression in Fix #344 shortcut + not working with undocked Timeline.Fix multiply handled KeyEvent + regression in Fix #344 shortcut not working with undocked + Timeline. + *Fix added Fade Out Volume shows incorrect on Timeline. + *Fix track name not editable regression in Fix #344 shortcut not + working with undocked Timeline. + *Add Mosaic filter. + +------------------------------------------------------------------- Old: ---- shotcut-18.03.tar.gz New: ---- shotcut-18.03.06.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ shotcut.spec ++++++ --- /var/tmp/diff_new_pack.uem5AY/_old 2018-04-25 10:02:38.440004926 +0200 +++ /var/tmp/diff_new_pack.uem5AY/_new 2018-04-25 10:02:38.456004339 +0200 @@ -22,7 +22,7 @@ %bcond_with x264 Name: shotcut -Version: 18.03 +Version: 18.03.06 Release: 0 # This package creates a build time version from the current date and uses it to check # for updates. See patch1 and prep/build section. For reproducible builds. ++++++ shotcut-18.03.tar.gz -> shotcut-18.03.06.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/mvcp/mvcp_response.c new/shotcut-18.03.06/mvcp/mvcp_response.c --- old/shotcut-18.03/mvcp/mvcp_response.c 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/mvcp/mvcp_response.c 2018-03-06 06:16:11.000000000 +0100 @@ -154,7 +154,7 @@ return length; } -/** Write text to the reponse. +/** Write text to the response. */ int mvcp_response_write( mvcp_response response, const char *text, int size ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/scripts/build-shotcut.sh new/shotcut-18.03.06/scripts/build-shotcut.sh --- old/shotcut-18.03/scripts/build-shotcut.sh 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/scripts/build-shotcut.sh 2018-03-06 06:16:11.000000000 +0100 @@ -73,7 +73,7 @@ MLT_DISABLE_SOX=0 ################################################################################ -# Location of config file - if not overriden on command line +# Location of config file - if not overridden on command line CONFIGFILE=build-shotcut.conf # If defined to 1, outputs trace log lines @@ -285,7 +285,7 @@ else echo "ERROR: $@" fi - feedback_result FAILURE "Some kind of error occured: $@" + feedback_result FAILURE "Some kind of error occurred: $@" exit -1 } @@ -931,7 +931,7 @@ ################################################################# # check_abort # Function that checks if the user wanted to cancel what we are doing. -# returns "stop" or "cont" as appropiate +# returns "stop" or "cont" as appropriate function check_abort { # log "$ARG" echo @@ -1209,7 +1209,7 @@ REPOLOCURL=`svn --non-interactive info | grep URL | awk '{print $2}'` # Now, we have to be a bit clever here, because if the user originally checked it out using # https, we can not change to http. So, we check for https in the current URL - # Note, that beeing clever almost always fails at some point. But, at least we give it a try... + # Note, that being clever almost always fails at some point. But, at least we give it a try... if test "${REPOLOCURL:0:5}" = "https" ; then REPOLOC=${REPOLOC/http/https} fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/snap/snapcraft.yaml new/shotcut-18.03.06/snap/snapcraft.yaml --- old/shotcut-18.03/snap/snapcraft.yaml 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/snap/snapcraft.yaml 2018-03-06 06:16:11.000000000 +0100 @@ -1,5 +1,5 @@ name: shotcut -version: '18.01' +version: '18.03' summary: Free, cross-platform, open source video editor description: > Shotcut is a free, open source, cross-platform video editor for Windows, @@ -13,22 +13,12 @@ apps: shotcut: command: bin/desktop-launch $SNAP/Shotcut.app/shotcut - ffmpeg: - command: $SNAP/Shotcut.app/ffmpeg - ffplay: - command: $SNAP/Shotcut.app/ffplay - ffprobe: - command: $SNAP/Shotcut.app/ffprobe - melt: - command: $SNAP/Shotcut.app/melt - qmelt: - command: $SNAP/Shotcut.app/qmelt parts: shotcut: after: [desktop-qt5] plugin: dump - source: 'https://github.com/mltframework/shotcut/releases/download/v18.01/shotcut-linux-x86_64-180102.tar.bz2' + source: 'https://github.com/mltframework/shotcut/releases/download/v18.03/shotcut-linux-x86_64-180302.tar.bz2' organize: 'Shotcut': './' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/database.cpp new/shotcut-18.03.06/src/database.cpp --- old/shotcut-18.03/src/database.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/database.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -164,7 +164,7 @@ void Database::deleteOldThumbnails() { QSqlQuery query; - // OFFSET is the numner of thumbnails to cache. + // OFFSET is the number of thumbnails to cache. if (!query.exec("DELETE FROM thumbnails WHERE hash IN (SELECT hash FROM thumbnails ORDER BY accessed DESC LIMIT -1 OFFSET 10000);")) LOG_ERROR() << query.lastError(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/docks/timelinedock.cpp new/shotcut-18.03.06/src/docks/timelinedock.cpp --- old/shotcut-18.03/src/docks/timelinedock.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/docks/timelinedock.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -64,16 +64,12 @@ connect(&m_model, SIGNAL(modified()), this, SLOT(clearSelectionIfInvalid())); - m_quickView.setFocusPolicy(Qt::NoFocus); setWidget(&m_quickView); connect(this, SIGNAL(clipMoved(int,int,int,int)), SLOT(onClipMoved(int,int,int,int)), Qt::QueuedConnection); connect(MLT.videoWidget(), SIGNAL(frameDisplayed(const SharedFrame&)), this, SLOT(onShowFrame(const SharedFrame&))); -#ifdef Q_OS_WIN - onVisibilityChanged(true); -#else - connect(this, &QDockWidget::visibilityChanged, this, &TimelineDock::load); -#endif + connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(load(bool))); + connect(this, SIGNAL(topLevelChanged(bool)), this, SLOT(onTopLevelChanged(bool))); LOG_DEBUG() << "end"; } @@ -990,6 +986,7 @@ if (m_quickView.source().isEmpty() || force) { QDir sourcePath = QmlUtilities::qmlDir(); sourcePath.cd("timeline"); + m_quickView.setFocusPolicy(isFloating()? Qt::NoFocus : Qt::StrongFocus); m_quickView.setSource(QUrl::fromLocalFile(sourcePath.filePath("timeline.qml"))); disconnect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool))); connect(m_quickView.rootObject(), SIGNAL(currentTrackChanged()), @@ -1003,8 +1000,7 @@ } } -void TimelineDock::onVisibilityChanged(bool visible) +void TimelineDock::onTopLevelChanged(bool floating) { - if (visible) - load(); + m_quickView.setFocusPolicy(floating? Qt::NoFocus : Qt::StrongFocus); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/docks/timelinedock.h new/shotcut-18.03.06/src/docks/timelinedock.h --- old/shotcut-18.03/src/docks/timelinedock.h 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/docks/timelinedock.h 2018-03-06 06:16:11.000000000 +0100 @@ -150,7 +150,6 @@ private: bool isBlank(int trackIndex, int clipIndex); void pulseLockButtonOnTrack(int trackIndex); - void load(bool force = false); Ui::TimelineDock *ui; QQuickWidget m_quickView; @@ -170,7 +169,8 @@ int m_trimDelta; private slots: - void onVisibilityChanged(bool visible); + void load(bool force = false); + void onTopLevelChanged(bool floating); }; #endif // TIMELINEDOCK_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/mainwindow.cpp new/shotcut-18.03.06/src/mainwindow.cpp --- old/shotcut-18.03/src/mainwindow.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/mainwindow.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -1424,7 +1424,6 @@ { bool handled = true; - switch (event->key()) { case Qt::Key_Home: m_player->seek(0); @@ -1773,19 +1772,24 @@ LOG_DEBUG() << "Current focusWindow:" << QApplication::focusWindow(); break; default: + handled = false; break; } - if (!handled) + if (handled) + event->setAccepted(handled); + else QMainWindow::keyPressEvent(event); } void MainWindow::keyReleaseEvent(QKeyEvent* event) { - if (event->key() == Qt::Key_K) + if (event->key() == Qt::Key_K) { m_isKKeyPressed = false; - else + event->setAccepted(true); + } else { QMainWindow::keyReleaseEvent(event); + } } void MainWindow::hideSetDataDirectory() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/models/multitrackmodel.cpp new/shotcut-18.03.06/src/models/multitrackmodel.cpp --- old/shotcut-18.03/src/models/multitrackmodel.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/models/multitrackmodel.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -1852,7 +1852,7 @@ if (track) { Mlt::Playlist playlist(*track); if (clipIndex > 0) { - // Check if preceeding clip is not blank, not already a transition, + // Check if preceding clip is not blank, not already a transition, // and there is enough frames before in point of current clip. if (!m_isMakingTransition && delta < 0 && !playlist.is_blank(clipIndex - 1) && !isTransition(playlist, clipIndex - 1)) { Mlt::ClipInfo info; @@ -2061,7 +2061,7 @@ roles << FadeInRole; if (!qstrcmp("fadeOutMovit", name) || !qstrcmp("fadeOutBrightness", name) || - !qstrcmp("fadOutVolume", name)) + !qstrcmp("fadeOutVolume", name)) roles << FadeOutRole; if (roles.length()) emit dataChanged(modelIndex, modelIndex, roles); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/mvcp/qconsole.cpp new/shotcut-18.03.06/src/mvcp/qconsole.cpp --- old/shotcut-18.03/src/mvcp/qconsole.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/mvcp/qconsole.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -513,7 +513,7 @@ else { //no selection //when typing normal characters, - //make sure the cursor is positionned in the + //make sure the cursor is positioned in the //edition zone if ( !isInEditionZone() ) { @@ -798,7 +798,7 @@ void QConsole::cut() { //Cut only in the editing zone, - //perfom a copy otherwise + //perform a copy otherwise if(isInEditionZone()) { QTextEdit::cut(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/qml/filters/color/ui.qml new/shotcut-18.03.06/src/qml/filters/color/ui.qml --- old/shotcut-18.03/src/qml/filters/color/ui.qml 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/qml/filters/color/ui.qml 2018-03-06 06:16:11.000000000 +0100 @@ -80,6 +80,8 @@ UndoButton { Layout.alignment: Qt.AlignRight onClicked: { + // Force a color change to make sure the color wheel is updated. + liftRedSpinner.value = 1.0 liftRedSpinner.value = 0.0 liftGreenSpinner.value = 0.0 liftBlueSpinner.value = 0.0 @@ -89,6 +91,8 @@ UndoButton { Layout.alignment: Qt.AlignRight onClicked: { + // Force a color change to make sure the color wheel is updated. + gammaRedSpinner.value = 1.0 / gammaFactor gammaRedSpinner.value = 100.0 / gammaFactor gammaGreenSpinner.value = 100.0 / gammaFactor gammaBlueSpinner.value = 100.0 / gammaFactor @@ -98,6 +102,8 @@ UndoButton { Layout.alignment: Qt.AlignRight onClicked: { + // Force a color change to make sure the color wheel is updated. + gainRedSpinner.value = 1.0 / gainFactor gainRedSpinner.value = 100.0 / gainFactor gainGreenSpinner.value = 100.0 / gainFactor gainBlueSpinner.value = 100.0 / gainFactor diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/qml/filters/mosaic/meta.qml new/shotcut-18.03.06/src/qml/filters/mosaic/meta.qml --- old/shotcut-18.03/src/qml/filters/mosaic/meta.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/shotcut-18.03.06/src/qml/filters/mosaic/meta.qml 2018-03-06 06:16:11.000000000 +0100 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2018 Meltytech, LLC + * Author: Brian Matherly <c...@brianmatherly.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import QtQuick 2.0 +import org.shotcut.qml 1.0 + +Metadata { + type: Metadata.Filter + name: qsTr("Mosaic") + mlt_service: "frei0r.pixeliz0r" + qml: "ui.qml" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/qml/filters/mosaic/ui.qml new/shotcut-18.03.06/src/qml/filters/mosaic/ui.qml --- old/shotcut-18.03/src/qml/filters/mosaic/ui.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/shotcut-18.03.06/src/qml/filters/mosaic/ui.qml 2018-03-06 06:16:11.000000000 +0100 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2018 Meltytech, LLC + * Author: Brian Matherly <c...@brianmatherly.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import QtQuick 2.1 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.0 +import Shotcut.Controls 1.0 + +Item { + property string xSize: '0' + property string ySize: '1' + property real maxFilterPercent: 50.0 + property real maxUserPercent: 20.0 + property real defaultValue: 2.5 / maxFilterPercent + property var defaultParameters: [xSize, ySize] + + width: 200 + height: 50 + Component.onCompleted: { + if (filter.isNew) { + // Set default parameter values + filter.set(xSize, defaultValue) + filter.set(ySize, defaultValue) + filter.savePreset(defaultParameters) + } + wslider.value = filter.getDouble(xSize) * maxFilterPercent + hslider.value = filter.getDouble(ySize) * maxFilterPercent + } + + function setControls() { + wslider.value = filter.getDouble(xSize) * maxFilterPercent + hslider.value = filter.getDouble(ySize) * maxFilterPercent + } + + GridLayout { + columns: 3 + anchors.fill: parent + anchors.margins: 8 + + Label { + text: qsTr('Preset') + Layout.alignment: Qt.AlignRight + } + Preset { + id: preset + parameters: defaultParameters + Layout.columnSpan: 2 + onPresetSelected: setControls() + } + + Label { + text: qsTr('Width') + Layout.alignment: Qt.AlignRight + } + SliderSpinner { + id: wslider + minimumValue: 0.1 + maximumValue: maxUserPercent + stepSize: 0.1 + decimals: 1 + suffix: ' %' + onValueChanged: filter.set(xSize, value / maxFilterPercent) + } + UndoButton { + onClicked: wslider.value = defaultValue * maxFilterPercent + } + + Label { + text: qsTr('Height') + Layout.alignment: Qt.AlignRight + } + SliderSpinner { + id: hslider + minimumValue: 0.1 + maximumValue: maxUserPercent + stepSize: 0.1 + decimals: 1 + suffix: ' %' + onValueChanged: filter.set(ySize, value / maxFilterPercent) + } + UndoButton { + onClicked: hslider.value = defaultValue * maxFilterPercent + } + + Item { + Layout.fillHeight: true + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/qml/timeline/TrackHead.qml new/shotcut-18.03.06/src/qml/timeline/TrackHead.qml --- old/shotcut-18.03/src/qml/timeline/TrackHead.qml 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/qml/timeline/TrackHead.qml 2018-03-06 06:16:11.000000000 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2017 Meltytech, LLC + * Copyright (c) 2013-2018 Meltytech, LLC * Author: Dan Dennedy <d...@dennedy.org> * * This program is free software: you can redistribute it and/or modify @@ -100,15 +100,15 @@ color: 'transparent' width: trackHeadRoot.width - trackHeadColumn.anchors.margins * 2 radius: 2 - border.color: trackNameMouseArea.containsMouse? activePalette.shadow : 'transparent' + border.color: (!timeline.floating && trackNameMouseArea.containsMouse)? activePalette.shadow : 'transparent' height: nameEdit.height MouseArea { id: trackNameMouseArea height: parent.height width: nameEdit.width hoverEnabled: true - onClicked: { - nameEdit.visible = true + onClicked: if (!timeline.floating) { + nameEdit.focus = true nameEdit.selectAll() } } @@ -122,14 +122,13 @@ } TextField { id: nameEdit - visible: false + visible: focus width: trackHeadRoot.width - trackHeadColumn.anchors.margins * 2 text: trackName onAccepted: { timeline.setTrackName(index, text) - visible = false + focus = false } - onFocusChanged: visible = focus } } RowLayout { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shotcut-18.03/src/qmltypes/colorwheelitem.cpp new/shotcut-18.03.06/src/qmltypes/colorwheelitem.cpp --- old/shotcut-18.03/src/qmltypes/colorwheelitem.cpp 2018-03-02 18:42:10.000000000 +0100 +++ new/shotcut-18.03.06/src/qmltypes/colorwheelitem.cpp 2018-03-06 06:16:11.000000000 +0100 @@ -151,9 +151,9 @@ { if (! m_image.valid(point)) return QColor(); if (m_isInWheel) { - qreal w = wheelSize(); - qreal xf = qreal(point.x()) / w; - qreal yf = 1.0 - qreal(point.y()) / w; + qreal w = wheelSize() - m_margin * 2; + qreal xf = qreal(point.x() - m_margin) / w; + qreal yf = 1.0 - qreal(point.y() - m_margin) / w; qreal xp = 2.0 * xf - 1.0; qreal yp = 2.0 * yf - 1.0; qreal rad = qMin(hypot(xp, yp), 1.0); @@ -283,7 +283,7 @@ painter.translate(r, r); painter.rotate(360.0 - m_color.hue()); painter.rotate(-105); - painter.drawEllipse(QPointF(m_color.saturationF() * r, 0.0), 4, 4); + painter.drawEllipse(QPointF(m_color.saturationF() * r - m_margin, 0.0), 4, 4); painter.resetTransform(); }