diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2021-12-03 00:59:34 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2021-12-03 00:59:34 +0100 |
commit | 70a1769ea25ac9fe3c66877922eaf4109d664705 (patch) | |
tree | a04b84becaa38e3e86f1969e87737cebecb8ca9b | |
parent | 4710d765b22bc1ee4657fd346b92ec098f7c4c09 (diff) | |
parent | 40c2d9a06bfa3adb4670fdc2e5bef7659d83bd04 (diff) |
Merge remote-tracking branch 'origin/6.0' into qds-2.3
Change-Id: I540441b954a176aabd236cfc7e07e24df7b6592a
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 Binary files differnew file mode 100644 index 0000000000..df1b84e5c9 --- /dev/null +++ b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon.png 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 Binary files differnew file mode 100644 index 0000000000..4b9f31faf3 --- /dev/null +++ b/src/plugins/qmldesigner/components/itemlibrary/images/item-video-icon@2x.png 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 Binary files differdeleted file mode 100644 index d9fd2f57bf..0000000000 --- a/src/plugins/qmldesigner/qtquickplugin/images/audio-16px.png +++ /dev/null diff --git a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png b/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png Binary files differdeleted file mode 100644 index 9e477c806d..0000000000 --- a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px.png +++ /dev/null diff --git a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png b/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png Binary files differdeleted file mode 100644 index 41948718fd..0000000000 --- a/src/plugins/qmldesigner/qtquickplugin/images/audio-24px@2x.png +++ /dev/null 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) |