aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2021-12-03 00:59:34 +0100
committerTim Jenssen <tim.jenssen@qt.io>2021-12-03 00:59:34 +0100
commit70a1769ea25ac9fe3c66877922eaf4109d664705 (patch)
treea04b84becaa38e3e86f1969e87737cebecb8ca9b
parent4710d765b22bc1ee4657fd346b92ec098f7c4c09 (diff)
parent40c2d9a06bfa3adb4670fdc2e5bef7659d83bd04 (diff)
Merge remote-tracking branch 'origin/6.0' into qds-2.3
-rw-r--r--cmake/QtCreatorIDEBranding.cmake4
-rw-r--r--qbs/modules/qtc/qtc.qbs4
-rw-r--r--qtcreator_ide_branding.pri4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.cpp13
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.h27
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp14
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp9
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/AudioSection.qml67
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/MediaPlayerSection.qml36
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/VideoOutputSpecifics.qml (renamed from src/plugins/qmldesigner/qtquickplugin/source/audio.qml)16
-rw-r--r--src/libs/CMakeLists.txt2
-rw-r--r--src/libs/qmljs/qmljscheck.cpp6
-rw-r--r--src/libs/utils/process_stub_unix.c7
-rw-r--r--src/plugins/android/androidconfigurations.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp9
-rw-r--r--src/plugins/qmldesigner/components/componentcore/componentcore_constants.h1
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp5
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp5
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h1
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dview.cpp8
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon.pngbin0 -> 286 bytes
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon@2x.pngbin0 -> 399 bytes
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc2
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsiconprovider.cpp2
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.cpp9
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.h1
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp3
-rw-r--r--src/plugins/qmldesigner/qtquickplugin/images/audio-16px.pngbin267 -> 0 bytes
-rw-r--r--src/plugins/qmldesigner/qtquickplugin/images/audio-24px.pngbin521 -> 0 bytes
-rw-r--r--src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.pngbin1026 -> 0 bytes
-rw-r--r--src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qrc4
-rw-r--r--src/plugins/qmldesigner/qtquickplugin/quick.metainfo18
-rw-r--r--src/plugins/texteditor/texteditor.cpp6
33 files changed, 159 insertions, 126 deletions
diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake
index 270e0fe174..b27542f98f 100644
--- a/cmake/QtCreatorIDEBranding.cmake
+++ b/cmake/QtCreatorIDEBranding.cmake
@@ -1,6 +1,6 @@
-set(IDE_VERSION "6.0.0") # The IDE version.
+set(IDE_VERSION "6.0.1") # The IDE version.
set(IDE_VERSION_COMPAT "6.0.0") # The IDE Compatibility version.
-set(IDE_VERSION_DISPLAY "6.0.0") # The IDE display version.
+set(IDE_VERSION_DISPLAY "6.0.1") # The IDE display version.
set(IDE_COPYRIGHT_YEAR "2021") # The IDE current copyright year.
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.
diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs
index 925d7d615f..18180fbdb9 100644
--- a/qbs/modules/qtc/qtc.qbs
+++ b/qbs/modules/qtc/qtc.qbs
@@ -3,10 +3,10 @@ import qbs.Environment
import qbs.FileInfo
Module {
- property string qtcreator_display_version: '6.0.0'
+ property string qtcreator_display_version: '6.0.1'
property string ide_version_major: '6'
property string ide_version_minor: '0'
- property string ide_version_release: '0'
+ property string ide_version_release: '1'
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
+ ide_version_release
diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri
index 364f1a7069..26d9219422 100644
--- a/qtcreator_ide_branding.pri
+++ b/qtcreator_ide_branding.pri
@@ -1,6 +1,6 @@
-QTCREATOR_VERSION = 6.0.0
+QTCREATOR_VERSION = 6.0.1
QTCREATOR_COMPAT_VERSION = 6.0.0
-QTCREATOR_DISPLAY_VERSION = 6.0.0
+QTCREATOR_DISPLAY_VERSION = 6.0.1
QTCREATOR_COPYRIGHT_YEAR = 2021
IDE_DISPLAY_NAME = Qt Creator
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.cpp
index 4f32513b7e..d8ef223104 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.cpp
@@ -31,8 +31,6 @@ AnimationDriver::AnimationDriver(QObject *parent)
{
setProperty("allowNegativeDelta", true);
install();
- connect(this, SIGNAL(started()), this, SLOT(startTimer()));
- connect(this, SIGNAL(stopped()), this, SLOT(stopTimer()));
}
AnimationDriver::~AnimationDriver()
@@ -49,10 +47,13 @@ void AnimationDriver::timerEvent(QTimerEvent *e)
// Provide same time for all users
if (m_seekerEnabled) {
m_seekerElapsed += (m_seekerPos * 100) / 30;
- if (m_seekerElapsed + m_elapsed < -100) // -100 to allow small negative value
- m_seekerElapsed = -m_elapsed - 100;
+ if (m_seekerElapsed + m_elapsed - m_pauseTime < -100) // -100 to allow small negative value
+ m_seekerElapsed = -(m_elapsed - m_pauseTime) - 100;
} else {
- m_elapsed = QAnimationDriver::elapsed();
+ if (!m_elapsedTimer.isValid())
+ m_elapsedTimer.restart();
+ else
+ m_elapsed = m_elapsedTimer.elapsed();
}
m_delta = elapsed() - old;
advance();
@@ -75,7 +76,7 @@ void AnimationDriver::setSeekerPosition(int position)
return;
if (!m_timer.isActive())
- restart();
+ startTimer();
m_seekerPos = position;
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.h
index f4f50f0afc..e8e84d7dfd 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/animationdriver.h
@@ -27,6 +27,7 @@
#include <qabstractanimation.h>
#include <QtCore/qbasictimer.h>
+#include <QtCore/qelapsedtimer.h>
#include <QtCore/qmath.h>
class AnimationDriver : public QAnimationDriver
@@ -46,17 +47,34 @@ public:
}
void reset()
{
- stop();
+ m_elapsedTimer.invalidate();
+ m_pauseBegin = 0;
+ m_pauseTime = 0;
+ m_elapsed = 0;
+ m_seekerElapsed = 0;
stopTimer();
}
void restart()
{
- start();
+ m_pauseTime = 0;
+ m_elapsed = 0;
+ m_seekerElapsed = 0;
+ startTimer();
+ }
+ void pause()
+ {
+ m_pauseBegin = m_elapsedTimer.elapsed();
+ stopTimer();
+ }
+ void play()
+ {
+ if (m_elapsedTimer.isValid())
+ m_pauseTime += m_elapsedTimer.elapsed() - m_pauseBegin;
startTimer();
}
qint64 elapsed() const override
{
- return m_elapsed + m_seekerElapsed;
+ return m_elapsed + m_seekerElapsed - m_pauseTime;
}
void setSeekerPosition(int position);
void setSeekerEnabled(bool enable)
@@ -79,10 +97,13 @@ private:
Q_SLOT void stopTimer();
QBasicTimer m_timer;
+ QElapsedTimer m_elapsedTimer;
int m_interval = 16;
int m_seekerPos = 0;
bool m_seekerEnabled = false;
qint64 m_elapsed = 0;
qint64 m_seekerElapsed = 0;
qint64 m_delta = 0;
+ qint64 m_pauseTime = 0;
+ qint64 m_pauseBegin = 0;
};
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index afc4adcae0..16dc3dbe5f 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -2078,21 +2078,21 @@ void Qt5InformationNodeInstanceServer::view3DAction(const View3DActionCommand &c
m_particleAnimationPlaying = command.isEnabled();
updatedState.insert("particlePlay", command.isEnabled());
if (m_particleAnimationPlaying) {
- m_particleAnimationDriver->reset();
- m_particleAnimationDriver->restart();
+ m_particleAnimationDriver->play();
m_particleAnimationDriver->setSeekerEnabled(false);
m_particleAnimationDriver->setSeekerPosition(0);
} else {
- m_particleAnimationDriver->reset();
+ m_particleAnimationDriver->pause();
m_particleAnimationDriver->setSeekerEnabled(true);
}
break;
case View3DActionCommand::ParticlesRestart:
resetParticleSystem();
- m_particleAnimationPlaying = true;
- m_particleAnimationDriver->restart();
- m_particleAnimationDriver->setSeekerEnabled(false);
- m_particleAnimationDriver->setSeekerPosition(0);
+ if (m_particleAnimationPlaying) {
+ m_particleAnimationDriver->restart();
+ m_particleAnimationDriver->setSeekerEnabled(false);
+ m_particleAnimationDriver->setSeekerPosition(0);
+ }
break;
case View3DActionCommand::ParticlesSeek:
m_particleAnimationDriver->setSeekerPosition(static_cast<const View3DSeekActionCommand &>(command).position());
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp
index 195fd805f4..03b28bbf65 100644
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp
@@ -61,6 +61,10 @@
#include <private/qqmlmetatype_p.h>
#include <private/qqmltimer_p.h>
+#ifdef QUICK3D_MODULE
+#include <private/qquick3dobject_p.h>
+#endif
+
namespace QmlDesigner {
namespace Internal {
@@ -374,6 +378,11 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
if (item && DesignerSupport::isComponentComplete(item))
return;
+#ifdef QUICK3D_MODULE
+ auto obj3d = qobject_cast<QQuick3DObject *>(object);
+ if (obj3d && QQuick3DObjectPrivate::get(obj3d)->componentComplete)
+ return;
+#endif
if (!nodeInstanceServer->hasInstanceForObject(item))
emitComponentComplete(object);
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/AudioSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/AudioSection.qml
deleted file mode 100644
index db226e755a..0000000000
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/AudioSection.qml
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-import QtQuick 2.15
-import QtQuick.Layouts 1.15
-import HelperWidgets 2.0
-import StudioControls 1.0 as StudioControls
-import StudioTheme 1.0 as StudioTheme
-
-Section {
- caption: qsTr("Audio")
-
- anchors.left: parent.left
- anchors.right: parent.right
-
- SectionLayout {
- PropertyLabel { text: qsTr("Volume") }
-
- SecondColumnLayout {
- SpinBox {
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- backendValue: backendValues.volume
- decimals: 1
- minimumValue: 0.0
- maximumValue: 1.0
- }
-
- ExpandingSpacer {}
- }
-
- PropertyLabel { text: qsTr("Muted") }
-
- SecondColumnLayout {
- CheckBox {
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- backendValue: backendValues.muted
- text: backendValues.muted.valueToString
- }
-
- ExpandingSpacer {}
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/MediaPlayerSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/MediaPlayerSection.qml
index b76a1bd0fb..979a276e6e 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/MediaPlayerSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/MediaPlayerSection.qml
@@ -52,5 +52,41 @@ Section {
ExpandingSpacer {}
}
+
+ PropertyLabel {
+ text: qsTr("Audio Output")
+ tooltip: qsTr("Holds the target audio output.")
+ }
+
+ SecondColumnLayout {
+ ItemFilterComboBox {
+ implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ + StudioTheme.Values.actionIndicatorWidth
+ width: implicitWidth
+ typeFilter: "QtQuick.AudioOutput"
+ validator: RegExpValidator { regExp: /(^$|^[a-z_]\w*)/ }
+ backendValue: backendValues.audioOutput
+ }
+
+ ExpandingSpacer {}
+ }
+
+ PropertyLabel {
+ text: qsTr("Video Output")
+ tooltip: qsTr("Holds the target video output.")
+ }
+
+ SecondColumnLayout {
+ ItemFilterComboBox {
+ implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ + StudioTheme.Values.actionIndicatorWidth
+ width: implicitWidth
+ typeFilter: "QtQuick.VideoOutput"
+ validator: RegExpValidator { regExp: /(^$|^[a-z_]\w*)/ }
+ backendValue: backendValues.videoOutput
+ }
+
+ ExpandingSpacer {}
+ }
}
}
diff --git a/src/plugins/qmldesigner/qtquickplugin/source/audio.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/VideoOutputSpecifics.qml
index b3d1347e85..66f29f1cad 100644
--- a/src/plugins/qmldesigner/qtquickplugin/source/audio.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtMultimedia/VideoOutputSpecifics.qml
@@ -23,13 +23,15 @@
**
****************************************************************************/
-import QtQuick 2.0
-import QtMultimedia 6.0
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
+import HelperWidgets 2.0
+import StudioControls 1.0 as StudioControls
+import StudioTheme 1.0 as StudioTheme
-MediaPlayer {
- audioOutput: output
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
- AudioOutput {
- id: output
- }
+ VideoSection {}
}
diff --git a/src/libs/CMakeLists.txt b/src/libs/CMakeLists.txt
index 1fd49e178e..df1826f734 100644
--- a/src/libs/CMakeLists.txt
+++ b/src/libs/CMakeLists.txt
@@ -31,7 +31,7 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/qlitehtml/src/CMakeLists.txt)
set(QLITEHTML_DEVEL_EXCLUDE_FROM_ALL ON)
set(QLITEHTML_HEADER_PATH "${IDE_HEADER_INSTALL_PATH}/src/lib/qlitehtml")
set(QT_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
- set(BUILD_TESTING OFF) # otherwise litehtml downloads googletest
+ option(BUILD_TESTING "Build litehtml tests" OFF) # otherwise litehtml downloads googletest
add_subdirectory(qlitehtml/src)
endif()
if(TARGET qlitehtml)
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index f280b53c01..21c501791c 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -1236,7 +1236,11 @@ bool Check::visit(FunctionExpression *ast)
}
}
- addMessage(ErrFunctionsNotSupportedInQmlUi, locationFromRange(locfunc, loclparen));
+ const bool isDirectInConnectionsScope =
+ (!m_typeStack.isEmpty() && m_typeStack.last() == "Connections");
+
+ if (!isDirectInConnectionsScope)
+ addMessage(ErrFunctionsNotSupportedInQmlUi, locationFromRange(locfunc, loclparen));
DeclarationsCheck bodyCheck;
addMessages(bodyCheck(ast));
diff --git a/src/libs/utils/process_stub_unix.c b/src/libs/utils/process_stub_unix.c
index 856efa26af..1cb3e8aa26 100644
--- a/src/libs/utils/process_stub_unix.c
+++ b/src/libs/utils/process_stub_unix.c
@@ -325,6 +325,13 @@ int main(int argc, char *argv[])
kill(chldPid, SIGKILL);
}
break;
+ case 'i':
+ if (chldPid > 0) {
+ int res = kill(chldPid, SIGINT);
+ if (res)
+ perror("Stub could not interrupt inferior");
+ }
+ break;
case 'c': {
int res = write(blockingPipe[1], &c, 1);
if (res < 0)
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index 0fb2b476e5..6128109e57 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -590,7 +590,7 @@ FilePath AndroidConfig::openJDKBinPath() const
FilePath AndroidConfig::keytoolPath() const
{
- return openJDKBinPath().pathAppended(keytoolName);
+ return openJDKBinPath().pathAppended(keytoolName).withExecutableSuffix();
}
QVector<AndroidDeviceInfo> AndroidConfig::connectedDevices(QString *error) const
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index f43decd940..6f74bc9126 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -805,6 +805,13 @@ static bool isDocker(const Kit *k)
return DeviceTypeKitAspect::deviceTypeId(k) == Docker::Constants::DOCKER_DEVICE_TYPE;
}
+static bool isWindowsARM64(const Kit *k)
+{
+ const auto targetAbi = ToolChainKitAspect::cxxToolChain(k)->targetAbi();
+ return targetAbi.os() == Abi::WindowsOS && targetAbi.architecture() == Abi::ArmArchitecture
+ && targetAbi.wordWidth() == 64;
+}
+
static QStringList defaultInitialCMakeArguments(const Kit *k, const QString buildType)
{
// Generator:
@@ -991,7 +998,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
initialArgs.append("%{" + QLatin1String(CMAKE_OSX_ARCHITECTURES_FLAG) + "}");
}
- if (isWebAssembly(k) || isQnx(k)) {
+ if (isWebAssembly(k) || isQnx(k) || isWindowsARM64(k)) {
const QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(k);
if (qt && qt->qtVersion().majorVersion >= 6)
initialArgs.append(CMAKE_QT6_TOOLCHAIN_FILE_ARG);
diff --git a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
index 49505d2ca7..6911ab27c7 100644
--- a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
+++ b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
@@ -221,6 +221,7 @@ const int priorityLast = 60;
const char addImagesDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Image Files");
const char addFontsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Font Files");
const char addSoundsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Sound Files");
+const char addVideosDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Video Files");
const char addShadersDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Shader Files");
const char add3DAssetsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "3D Assets");
const char addQt3DSPresentationsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources",
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index 13774c1265..4ac3692589 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -1557,12 +1557,15 @@ void DesignerActionManager::createDefaultAddResourceHandler()
registerHandlers({"*.otf", "*.ttf"},
ModelNodeOperations::addFontToProject,
ComponentCoreConstants::addFontsDisplayString);
- registerHandlers({"*.wav"},
+ registerHandlers({"*.wav", "*.mp3"},
ModelNodeOperations::addSoundToProject,
ComponentCoreConstants::addSoundsDisplayString);
registerHandlers({"*.glsl", "*.glslv", "*.glslf", "*.vsh", "*.fsh", "*.vert", "*.frag"},
ModelNodeOperations::addShaderToProject,
ComponentCoreConstants::addShadersDisplayString);
+ registerHandlers({"*.mp4"},
+ ModelNodeOperations::addVideoToProject,
+ ComponentCoreConstants::addVideosDisplayString);
}
void DesignerActionManager::createDefaultModelNodePreviewImageHandlers()
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
index b486740495..02633df9f8 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
@@ -1077,6 +1077,11 @@ AddFilesResult addImageToProject(const QStringList &fileNames, const QString &de
return addFilesToProject(fileNames, getAssetDefaultDirectory("images", defaultDirectory));
}
+AddFilesResult addVideoToProject(const QStringList &fileNames, const QString &defaultDirectory)
+{
+ return addFilesToProject(fileNames, getAssetDefaultDirectory("videos", defaultDirectory));
+}
+
void createFlowActionArea(const SelectionContext &selectionContext)
{
AbstractView *view = selectionContext.view();
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
index feb7faa556..f9e39c06f4 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
@@ -80,6 +80,7 @@ AddFilesResult addImageToProject(const QStringList &fileNames, const QString &di
AddFilesResult addFontToProject(const QStringList &fileNames, const QString &directory);
AddFilesResult addSoundToProject(const QStringList &fileNames, const QString &directory);
AddFilesResult addShaderToProject(const QStringList &fileNames, const QString &directory);
+AddFilesResult addVideoToProject(const QStringList &fileNames, const QString &directory);
void createFlowActionArea(const SelectionContext &selectionContext);
void addTransition(const SelectionContext &selectionState);
void addFlowEffect(const SelectionContext &selectionState, const TypeName &typeName);
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
index 1c944f49a9..ba5ac595fb 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
@@ -305,12 +305,6 @@ void Edit3DView::createEdit3DActions()
resetPuppet();
};
- SelectionContextOperation particlesRestartTrigger = [this](const SelectionContext &) {
- m_particlesPlayAction->action()->setChecked(true);
- if (m_seeker)
- m_seeker->setEnabled(false);
- };
-
SelectionContextOperation particlesPlayTrigger = [this](const SelectionContext &) {
if (m_seeker)
m_seeker->setEnabled(!m_particlesPlayAction->action()->isChecked());
@@ -334,7 +328,7 @@ void Edit3DView::createEdit3DActions()
QmlDesigner::Constants::EDIT3D_PARTICLES_RESTART, View3DActionCommand::ParticlesRestart,
QCoreApplication::translate("ParticlesRestartAction", "Restart Particles"),
QKeySequence(Qt::Key_E), false, false, Icons::EDIT3D_PARTICLE_RESTART.icon(),
- Icons::EDIT3D_PARTICLE_RESTART.icon(), particlesRestartTrigger);
+ Icons::EDIT3D_PARTICLE_RESTART.icon());
m_particlesPlayAction->action()->setEnabled(particlemode);
m_particlesRestartAction->action()->setEnabled(particlemode);
m_resetAction
diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon.png b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon.png
new file mode 100644
index 0000000000..df1b84e5c9
--- /dev/null
+++ b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon.png
Binary files differ
diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon@2x.png b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon@2x.png
new file mode 100644
index 0000000000..4b9f31faf3
--- /dev/null
+++ b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon@2x.png
Binary files differ
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc
index b1777bbbec..c6d60413d0 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc
@@ -33,5 +33,7 @@
<file>images/x@2x.png</file>
<file>images/browse.png</file>
<file>images/browse@2x.png</file>
+ <file>images/item-video-icon.png</file>
+ <file>images/item-video-icon@2x.png</file>
</qresource>
</RCC>
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsiconprovider.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsiconprovider.cpp
index ece6e8abaa..ad6f313683 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsiconprovider.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsiconprovider.cpp
@@ -54,6 +54,8 @@ QPixmap ItemLibraryAssetsIconProvider::requestPixmap(const QString &id, QSize *s
pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_shader_48.png");
else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix))
pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_sound_48.png");
+ else if (ItemLibraryAssetsModel::supportedVideoSuffixes().contains(suffix))
+ pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/item-video-icon.png");
if (size) {
size->setWidth(pixmap.width());
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.cpp
index caaaa37452..5fa13c3c16 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.cpp
@@ -167,7 +167,13 @@ const QStringList &ItemLibraryAssetsModel::supportedFontSuffixes()
const QStringList &ItemLibraryAssetsModel::supportedAudioSuffixes()
{
- static const QStringList retList {"*.wav"};
+ static const QStringList retList {"*.wav", "*.mp3"};
+ return retList;
+}
+
+const QStringList &ItemLibraryAssetsModel::supportedVideoSuffixes()
+{
+ static const QStringList retList {"*.mp4"};
return retList;
}
@@ -300,6 +306,7 @@ const QSet<QString> &ItemLibraryAssetsModel::supportedSuffixes() const
insertSuffixes(supportedShaderSuffixes());
insertSuffixes(supportedFontSuffixes());
insertSuffixes(supportedAudioSuffixes());
+ insertSuffixes(supportedVideoSuffixes());
insertSuffixes(supportedTexture3DSuffixes());
}
return allSuffixes;
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.h
index c1dcc845da..f762156349 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.h
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetsmodel.h
@@ -66,6 +66,7 @@ public:
static const QStringList &supportedShaderSuffixes();
static const QStringList &supportedFontSuffixes();
static const QStringList &supportedAudioSuffixes();
+ static const QStringList &supportedVideoSuffixes();
static const QStringList &supportedTexture3DSuffixes();
const QSet<QString> &previewableSuffixes() const;
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
index 4c02b25433..c8720385c0 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
@@ -552,6 +552,9 @@ QPair<QString, QByteArray> ItemLibraryWidget::getAssetTypeAndData(const QString
} else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix)) {
// No extra data for sounds
return {"application/vnd.bauhaus.libraryresource.sound", {}};
+ } else if (ItemLibraryAssetsModel::supportedVideoSuffixes().contains(suffix)) {
+ // No extra data for videos
+ return {"application/vnd.bauhaus.libraryresource.video", {}};
} else if (ItemLibraryAssetsModel::supportedTexture3DSuffixes().contains(suffix)) {
// Data: Image format (suffix)
return {"application/vnd.bauhaus.libraryresource.texture3d", suffix.toUtf8()};
diff --git a/src/plugins/qmldesigner/qtquickplugin/images/audio-16px.png b/src/plugins/qmldesigner/qtquickplugin/images/audio-16px.png
deleted file mode 100644
index d9fd2f57bf..0000000000
--- a/src/plugins/qmldesigner/qtquickplugin/images/audio-16px.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png b/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png
deleted file mode 100644
index 9e477c806d..0000000000
--- a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png b/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png
deleted file mode 100644
index 41948718fd..0000000000
--- a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qrc b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qrc
index af2ff0ff41..0098d05a37 100644
--- a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qrc
+++ b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qrc
@@ -31,7 +31,6 @@
<file>images/text-edit-icon16.png</file>
<file>images/text-input-icon16.png</file>
<file>images/webview-icon16.png</file>
- <file>source/audio.qml</file>
<file>source/listview.qml</file>
<file>source/listviewv2.qml</file>
<file>source/gridview.qml</file>
@@ -84,9 +83,6 @@
<file>images/loader-icon.png</file>
<file>images/loader-icon@2x.png</file>
<file>images/loader-icon16.png</file>
- <file>images/audio-16px.png</file>
- <file>images/audio-24px.png</file>
- <file>images/audio-24px@2x.png</file>
<file>images/audio-output-16px.png</file>
<file>images/audio-output-24px.png</file>
<file>images/audio-output-24px@2x.png</file>
diff --git a/src/plugins/qmldesigner/qtquickplugin/quick.metainfo b/src/plugins/qmldesigner/qtquickplugin/quick.metainfo
index 7858ca08ea..d21d8420b4 100644
--- a/src/plugins/qmldesigner/qtquickplugin/quick.metainfo
+++ b/src/plugins/qmldesigner/qtquickplugin/quick.metainfo
@@ -523,8 +523,8 @@ MetaInfo {
}
Type {
- name: "QtMultimedia.MediaPlayer"
- icon: ":/qtquickplugin/images/audio-16px.png"
+ name: "QtMultimedia.AudioOutput"
+ icon: ":/qtquickplugin/images/audio-output-16px.png"
Hints {
visibleInNavigator: true
@@ -534,19 +534,17 @@ MetaInfo {
}
ItemLibraryEntry {
- name: "Audio"
+ name: "Audio Output"
category: "f.Qt Quick - Multimedia"
- libraryIcon: ":/qtquickplugin/images/audio-24px.png"
+ libraryIcon: ":/qtquickplugin/images/audio-output-24px.png"
version: "6.0"
requiredImport: "QtMultimedia"
-
- QmlSource { source: ":/qtquickplugin/source/audio.qml" }
}
}
Type {
- name: "QtMultimedia.AudioOutput"
- icon: ":/qtquickplugin/images/audio-output-16px.png"
+ name: "QtMultimedia.VideoOutput"
+ icon: ":/qtquickplugin/images/video-output-16px.png"
Hints {
visibleInNavigator: true
@@ -556,9 +554,9 @@ MetaInfo {
}
ItemLibraryEntry {
- name: "Audio Output"
+ name: "Video Output"
category: "f.Qt Quick - Multimedia"
- libraryIcon: ":/qtquickplugin/images/audio-output-24px.png"
+ libraryIcon: ":/qtquickplugin/images/video-output-24px.png"
version: "6.0"
requiredImport: "QtMultimedia"
}
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 28fe278cab..c1a272a272 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -6257,10 +6257,10 @@ MultiTextCursor TextEditorWidget::multiTextCursor() const
void TextEditorWidget::setMultiTextCursor(const Utils::MultiTextCursor &cursor)
{
- if (d->m_cursors == cursor)
- return;
- MultiTextCursor oldCursor = d->m_cursors;
+ const MultiTextCursor oldCursor = d->m_cursors;
const_cast<MultiTextCursor &>(d->m_cursors) = cursor;
+ if (oldCursor == d->m_cursors)
+ return;
doSetTextCursor(d->m_cursors.mainCursor(), /*keepMultiSelection*/ true);
QRect updateRect = d->cursorUpdateRect(oldCursor);
if (d->m_highlightCurrentLine)