mirror of
https://invent.kde.org/multimedia/kdenlive
synced 2025-12-07 08:50:02 +01:00
Compare commits
9 Commits
work/notes
...
v22.04.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
03170f45d2 | ||
|
|
1d82251684 | ||
|
|
13b4602571 | ||
|
|
390af55450 | ||
|
|
331bc423da | ||
|
|
e77e578e1f | ||
|
|
59a39a977d | ||
|
|
5c9135c962 | ||
|
|
aefb843254 |
@@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.16)
|
||||
# KDE Application Version, managed by release script
|
||||
set (RELEASE_SERVICE_VERSION_MAJOR "22")
|
||||
set (RELEASE_SERVICE_VERSION_MINOR "04")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "2")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "3")
|
||||
|
||||
set(KDENLIVE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
|
||||
|
||||
|
||||
@@ -242,10 +242,10 @@
|
||||
</ul>
|
||||
</description>
|
||||
<releases>
|
||||
<release version="22.04.3" date="2022-07-07"/>
|
||||
<release version="22.04.2" date="2022-06-09"/>
|
||||
<release version="22.04.1" date="2022-05-12"/>
|
||||
<release version="22.04.0" date="2022-04-21"/>
|
||||
<release version="21.12.3" date="2022-03-03"/>
|
||||
</releases>
|
||||
<url type="homepage">https://kdenlive.org/</url>
|
||||
<url type="bugtracker">https://bugs.kde.org</url>
|
||||
|
||||
@@ -647,7 +647,7 @@ const QSize ClipController::getFrameSize() const
|
||||
width = m_masterProducer->get_int("kdenlive:original.width");
|
||||
}
|
||||
if (height == 0) {
|
||||
width = m_masterProducer->get_int("kdenlive:original.height");
|
||||
height = m_masterProducer->get_int("kdenlive:original.height");
|
||||
}
|
||||
if (width > 0 && height > 0) {
|
||||
return QSize(width, height);
|
||||
|
||||
@@ -42,23 +42,28 @@ PythonDependencyMessage::PythonDependencyMessage(QWidget *parent, AbstractPython
|
||||
}
|
||||
});
|
||||
|
||||
connect(m_interface, &AbstractPythonInterface::dependenciesMissing, this, [&](const QStringList &messages){
|
||||
m_installAction->setEnabled(true);
|
||||
m_installAction->setText(i18n("Install missing dependencies"));
|
||||
addAction(m_installAction);
|
||||
connect(m_interface, &AbstractPythonInterface::dependenciesMissing, this, [&](const QStringList &messages) {
|
||||
if (!m_interface->installDisabled()) {
|
||||
m_installAction->setEnabled(true);
|
||||
m_installAction->setText(i18n("Install missing dependencies"));
|
||||
addAction(m_installAction);
|
||||
}
|
||||
|
||||
doShowMessage(messages.join(QStringLiteral("\n")), KMessageWidget::Warning);
|
||||
});
|
||||
|
||||
connect(m_interface, &AbstractPythonInterface::proposeUpdate, this, [&](const QString &message){
|
||||
// only allow upgrading python modules once
|
||||
m_installAction->setText(i18n("Check for update"));
|
||||
m_installAction->setEnabled(true);
|
||||
addAction(m_installAction);
|
||||
doShowMessage(message, KMessageWidget::Warning);
|
||||
});
|
||||
if (!m_interface->installDisabled()) {
|
||||
connect(m_interface, &AbstractPythonInterface::proposeUpdate, this, [&](const QString &message) {
|
||||
// only allow upgrading python modules once
|
||||
m_installAction->setText(i18n("Check for update"));
|
||||
m_installAction->setEnabled(true);
|
||||
addAction(m_installAction);
|
||||
doShowMessage(message, KMessageWidget::Warning);
|
||||
});
|
||||
}
|
||||
|
||||
connect(m_interface, &AbstractPythonInterface::dependenciesAvailable, this, [&](){
|
||||
if (!m_updated) {
|
||||
connect(m_interface, &AbstractPythonInterface::dependenciesAvailable, this, [&]() {
|
||||
if (!m_updated && !m_interface->installDisabled()) {
|
||||
// only allow upgrading python modules once
|
||||
m_installAction->setText(i18n("Check for update"));
|
||||
m_installAction->setEnabled(true);
|
||||
@@ -109,6 +114,7 @@ AbstractPythonInterface::AbstractPythonInterface(QObject *parent)
|
||||
: QObject{parent}
|
||||
, m_dependencies()
|
||||
, m_versions(new QMap<QString, QString>())
|
||||
, m_disableInstall(pCore->packageType() == QStringLiteral("flatpak"))
|
||||
, m_scripts(new QMap<QString, QString>())
|
||||
{
|
||||
addScript(QStringLiteral("checkpackages.py"));
|
||||
@@ -138,7 +144,7 @@ bool AbstractPythonInterface::checkSetup()
|
||||
"listed in PATH environment variable"));
|
||||
return false;
|
||||
}
|
||||
if (m_pip3Exec.isEmpty()) {
|
||||
if (m_pip3Exec.isEmpty() && !m_disableInstall) {
|
||||
emit setupError(i18n("Cannot find pip3, please install it on your system.\n"
|
||||
"If already installed, check it is installed in a directory "
|
||||
"listed in PATH environment variable"));
|
||||
@@ -242,6 +248,9 @@ int AbstractPythonInterface::versionToInt(const QString &version) {
|
||||
|
||||
void AbstractPythonInterface::checkVersions(bool signalOnResult)
|
||||
{
|
||||
if (installDisabled()) {
|
||||
return;
|
||||
}
|
||||
QString output = runPackageScript(QStringLiteral("--details"));
|
||||
if (output.isEmpty()) {
|
||||
return;
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
QString runScript(const QString &scriptpath, QStringList args = {}, const QString &firstarg = {});
|
||||
QString pythonExec() { return m_pyExec; };
|
||||
void proposeMaybeUpdate(const QString &dependency, const QString &minVersion);
|
||||
bool installDisabled() { return m_disableInstall; };
|
||||
|
||||
friend class PythonDependencyMessage;
|
||||
|
||||
@@ -55,6 +56,7 @@ private:
|
||||
QMap<QString, QString> m_dependencies;
|
||||
QStringList m_missing;
|
||||
QMap<QString, QString> *m_versions;
|
||||
bool m_disableInstall;
|
||||
|
||||
void installMissingDependencies();
|
||||
QString locateScript(const QString &script);
|
||||
|
||||
@@ -938,9 +938,12 @@ bool TimelineModel::mixClip(int idToMove, const QString &mixId, int delta)
|
||||
}
|
||||
// Make sure we have enough space in clip to resize
|
||||
// leftMax is the maximum frames we have to expand first clip on the right
|
||||
leftMax = m_allClips[s]->getPlaytime();
|
||||
leftMax = m_allClips[previousClip]->m_endlessResize
|
||||
? m_allClips[s]->getPlaytime()
|
||||
: qMin(m_allClips[s]->getPlaytime(), m_allClips[previousClip]->getMaxDuration() - m_allClips[previousClip]->getOut() - 1);
|
||||
// rightMax is the maximum frames we have to expand second clip on the left
|
||||
rightMax = m_allClips[previousClip]->getPlaytime();
|
||||
rightMax = m_allClips[s]->m_endlessResize ? m_allClips[previousClip]->getPlaytime()
|
||||
: qMin(m_allClips[previousClip]->getPlaytime(), m_allClips[s]->getIn());
|
||||
if (getTrackById_const(selectedTrack)->hasStartMix(previousClip)) {
|
||||
int spaceBeforeMix = m_allClips[s]->getPosition() - (m_allClips[previousClip]->getPosition() + m_allClips[previousClip]->getMixDuration());
|
||||
rightMax = rightMax == -1 ? spaceBeforeMix : qMin(rightMax, spaceBeforeMix);
|
||||
@@ -965,9 +968,10 @@ bool TimelineModel::mixClip(int idToMove, const QString &mixId, int delta)
|
||||
// Mix at end of selected clip
|
||||
// Make sure we have enough space in clip to resize
|
||||
// leftMax is the maximum frames we have to expand first clip on the right
|
||||
leftMax = m_allClips[nextClip]->getPlaytime();
|
||||
leftMax = m_allClips[s]->m_endlessResize ? m_allClips[nextClip]->getPlaytime()
|
||||
: qMin(m_allClips[nextClip]->getPlaytime(), m_allClips[s]->getMaxDuration() - m_allClips[s]->getOut() - 1);
|
||||
// rightMax is the maximum frames we have to expand second clip on the left
|
||||
rightMax = m_allClips[s]->getPlaytime();
|
||||
rightMax = m_allClips[nextClip]->m_endlessResize ? m_allClips[s]->getPlaytime() : qMin(m_allClips[s]->getPlaytime(), m_allClips[nextClip]->getIn());
|
||||
if (getTrackById_const(selectedTrack)->hasStartMix(s)) {
|
||||
int spaceBeforeMix = m_allClips[nextClip]->getPosition() - (m_allClips[s]->getPosition() + m_allClips[s]->getMixDuration());
|
||||
rightMax = rightMax == -1 ? spaceBeforeMix : qMin(rightMax, spaceBeforeMix);
|
||||
|
||||
@@ -175,7 +175,8 @@ bool DragValue::eventFilter(QObject *watched, QEvent *event)
|
||||
m_label->slotValueDec();
|
||||
}
|
||||
// Stop processing, event accepted
|
||||
return false;
|
||||
event->accept();
|
||||
return true;
|
||||
}
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user