From c97f0af531ec41fdc3619fd989bd681c409f029b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 21 Apr 2022 15:24:40 +0200 Subject: [PATCH 01/13] ClangCodeModel: Don't ignore changes to clangd doc update threshold Changing the document update threshold value had no effect in the per- project settings. Change-Id: Ibd6e47bba3e0a77ed18b97486eda17718c46c59d Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: David Schulz --- src/plugins/cppeditor/cppcodemodelsettingspage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/cppeditor/cppcodemodelsettingspage.cpp b/src/plugins/cppeditor/cppcodemodelsettingspage.cpp index 780ae671ccd..bea6d5fe33d 100644 --- a/src/plugins/cppeditor/cppcodemodelsettingspage.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettingspage.cpp @@ -381,6 +381,8 @@ ClangdSettingsWidget::ClangdSettingsWidget(const ClangdSettings::Data &settingsD this, &ClangdSettingsWidget::settingsDataChanged); connect(&d->threadLimitSpinBox, qOverload(&QSpinBox::valueChanged), this, &ClangdSettingsWidget::settingsDataChanged); + connect(&d->documentUpdateThreshold, qOverload(&QSpinBox::valueChanged), + this, &ClangdSettingsWidget::settingsDataChanged); connect(&d->clangdChooser, &Utils::PathChooser::pathChanged, this, &ClangdSettingsWidget::settingsDataChanged); } From ae30e3073c1cf381b0ea04f0369fd62916a57d08 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 3 May 2022 15:12:40 +0300 Subject: [PATCH 02/13] QmlDesigner: Do not assume QmlBuildSystem is current build system It's possible to open qml files for visual editing from qmake/cmake based projects as well. Fixes: QDS-6836 Change-Id: I15840dbe0f67711b162f7f7f492f7ab813ea7fca Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Thomas Hartmann --- .../qmldesigner/designercore/instances/nodeinstanceview.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 8dbe236ca0a..11af3586799 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -2025,6 +2025,8 @@ void NodeInstanceView::updateQsbPathToFilterMap() m_qsbPathToFilterMap.clear(); if (m_currentTarget && !m_qsbPath.isEmpty()) { const auto bs = qobject_cast(m_currentTarget->buildSystem()); + if (!bs) + return; const QStringList shaderToolFiles = bs->shaderToolFiles(); #ifndef QMLDESIGNER_TEST @@ -2056,6 +2058,9 @@ void NodeInstanceView::handleShaderChanges() return; const auto bs = qobject_cast(m_currentTarget->buildSystem()); + if (!bs) + return; + QStringList baseArgs = bs->shaderToolArgs(); if (baseArgs.isEmpty()) return; From a904a8510079c0953dd68d6db2103ee9e60d9772 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 3 May 2022 17:35:45 +0200 Subject: [PATCH 03/13] QmlDesigner: Remove prefix for property types Since Qt 6 in some cases also literal properties like float have this prefix. Change-Id: I580099569c5c865b4f42e97aaf07d101c973a456 Reviewed-by: Reviewed-by: Knud Dollereder --- .../designercore/model/qmltimelinekeyframegroup.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp b/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp index 55e147eeeed..2f0ab2500b9 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltimelinekeyframegroup.cpp @@ -210,10 +210,15 @@ TypeName QmlTimelineKeyframeGroup::valueType() const const ModelNode targetNode = target(); - if (targetNode.isValid() && targetNode.hasMetaInfo()) - return targetNode.metaInfo().propertyTypeName(propertyName()); + TypeName typeName; - return TypeName(); + if (targetNode.isValid() && targetNode.hasMetaInfo()) + typeName = targetNode.metaInfo().propertyTypeName(propertyName()); + + if (typeName.startsWith(".")) + typeName.remove(0, 6); + + return typeName; } bool QmlTimelineKeyframeGroup::hasKeyframe(qreal frame) From 59161e22f224754323dfaea053b1dcdaaaf7d4ac Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 4 May 2022 14:04:37 +0200 Subject: [PATCH 04/13] QmlDesigner: Remove debug output Change-Id: I2f4195b642febfff06bb9f79f94652d0edd4aacf Reviewed-by: Knud Dollereder --- src/plugins/qmldesigner/qmldesignerplugin.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index ee1d1041a59..8a2bc21ea15 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -653,7 +653,6 @@ void QmlDesignerPlugin::emitUsageStatistics(const QString &identifier) { QTC_ASSERT(instance(), return); emit instance()->usageStatisticsNotifier(normalizeIdentifier(identifier)); - qDebug() << normalizeIdentifier(identifier); } void QmlDesignerPlugin::emitUsageStatisticsContextAction(const QString &identifier) @@ -680,7 +679,6 @@ void QmlDesignerPlugin::emitUsageStatisticsTime(const QString &identifier, int e { QTC_ASSERT(instance(), return); emit instance()->usageStatisticsUsageTimer(normalizeIdentifier(identifier), elapsed); - qDebug() << normalizeIdentifier(identifier); } QmlDesignerPlugin *QmlDesignerPlugin::instance() From 1346ffc15906b11aa74dc59e37893c813d18a8d4 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 5 May 2022 09:04:18 +0200 Subject: [PATCH 05/13] Dumper: Fix offsets for QFile members Change-Id: I890b3f387505cf5acc8783e3dc7088515d6934cc Reviewed-by: hjk --- share/qtcreator/debugger/qttypes.py | 18 +++++++++++++----- tests/auto/debugger/tst_offsets.cpp | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index d940341e202..2c7725260d2 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -656,17 +656,25 @@ def qdump__QFile(d, value): # 9fc0965 and a373ffcd change the layout of the private structure qtVersion = d.qtVersion() is32bit = d.ptrSize() == 4 - if qtVersion >= 0x060000: - # FIXME: values 0 are wrong. As the file name is the - # only direct member of QFilePrivate, the offsets are - # equal to sizeof(QFileDevicePrivate), the base class. + # FIXME: values 0 are wrong. As the file name is the + # only direct member of QFilePrivate, the offsets are + # equal to sizeof(QFileDevicePrivate), the base class. + if qtVersion >= 0x060300 and d.qtTypeInfoVersion() >= 22: + if d.isWindowsTarget(): + if d.isMsvcTarget(): + offset = 0 if is32bit else 424 + else: + offset = 0 if is32bit else 424 + else: + offset = 300 if is32bit else 424 + elif qtVersion >= 0x060000 and d.qtTypeInfoVersion() >= 20: if d.isWindowsTarget(): if d.isMsvcTarget(): offset = 0 if is32bit else 304 else: offset = 0 if is32bit else 304 else: - offset = 0 if is32bit else 304 + offset = 196 if is32bit else 304 elif qtVersion >= 0x050600 and d.qtTypeInfoVersion() >= 17: # Some QRingBuffer member got removed in 8f92baf5c9 if d.isWindowsTarget(): diff --git a/tests/auto/debugger/tst_offsets.cpp b/tests/auto/debugger/tst_offsets.cpp index 36beacd8e6d..8490e90b2a7 100644 --- a/tests/auto/debugger/tst_offsets.cpp +++ b/tests/auto/debugger/tst_offsets.cpp @@ -157,7 +157,17 @@ void tst_offsets::offsets_data() const int qtVersion = QT_VERSION; const quintptr qtTypeVersion = qtHookData[6]; - if (qtTypeVersion >= 20) + if (qtTypeVersion >= 22) +#ifdef Q_OS_WIN +# ifdef Q_CC_MSVC + OFFSET_TEST(QFilePrivate, fileName) << 0 << 424; +# else // MinGW + OFFSET_TEST(QFilePrivate, fileName) << 0 << 424; +# endif +#else + OFFSET_TEST(QFilePrivate, fileName) << 300 << 424; +#endif + else if (qtTypeVersion >= 20) #ifdef Q_OS_WIN # ifdef Q_CC_MSVC OFFSET_TEST(QFilePrivate, fileName) << 0 << 304; @@ -165,7 +175,7 @@ void tst_offsets::offsets_data() OFFSET_TEST(QFilePrivate, fileName) << 0 << 304; # endif #else - OFFSET_TEST(QFilePrivate, fileName) << 0 << 304; + OFFSET_TEST(QFilePrivate, fileName) << 196 << 304; #endif else if (qtVersion > 0x50600 && qtTypeVersion >= 17) #ifdef Q_OS_WIN From f378245b6c567c25ec81528752f9a953151d0546 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 4 May 2022 14:49:38 +0200 Subject: [PATCH 06/13] QmlDesigner: Rename UseDefaultPuppet to UseDefaultQml2Puppet This ensures that this is not accidently set, by older QDS versions. Change-Id: I36690eee62a21c949d59edcdcf09fc507e5bf69d Reviewed-by: Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designersettings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designersettings.h b/src/plugins/qmldesigner/designersettings.h index 2fbc09f248c..e3fd4470da0 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -50,7 +50,7 @@ const char WARNING_FOR_DESIGNER_FEATURES_IN_EDITOR[] = "WarnAboutQtQuickDesigner const char SHOW_DEBUGVIEW[] = "ShowQtQuickDesignerDebugView"; const char ENABLE_DEBUGVIEW[] = "EnableQtQuickDesignerDebugView"; const char ALWAYS_SAVE_IN_CRUMBLEBAR[] = "AlwaysSaveInCrumbleBar"; -const char USE_DEFAULT_PUPPET[] = "UseDefaultPuppet"; +const char USE_DEFAULT_PUPPET[] = "UseDefaultQml2Puppet"; const char PUPPET_TOPLEVEL_BUILD_DIRECTORY[] = "PuppetToplevelBuildDirectory"; const char PUPPET_DEFAULT_DIRECTORY[] = "PuppetDefaultDirectory"; const char CONTROLS_STYLE[] = "ControlsStyle"; From ed398280b78005b04c41493f0393fa8cee9e612a Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Thu, 5 May 2022 17:43:42 +0200 Subject: [PATCH 07/13] Fix extra tokens at end of #include directive Change-Id: I82623ac124334dfba046883233e779cb7066461b Reviewed-by: hjk --- src/plugins/languageclient/languageclientoutline.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 56905738e26..9331ad69e58 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -31,7 +31,7 @@ #include #include #include -#include > +#include #include #include #include From 20c6ad2dfe6db629a6abdfe1313f2ecaf906d16c Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 4 May 2022 12:56:46 +0200 Subject: [PATCH 08/13] LanguageClient: track running function hint processor A tracked assist processor gets indirectly deleted in the client destructor and the reset function. This makes sure no processor accesses a deleted or restarted client. Fixes: QTCREATORBUG-27404 Change-Id: Ib264eb4b166f1705bd734299642b93bca0a402c3 Reviewed-by: Reviewed-by: Christian Kandeler --- src/plugins/languageclient/languageclientfunctionhint.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/languageclient/languageclientfunctionhint.cpp b/src/plugins/languageclient/languageclientfunctionhint.cpp index f554d4a3b0e..9c33b632314 100644 --- a/src/plugins/languageclient/languageclientfunctionhint.cpp +++ b/src/plugins/languageclient/languageclientfunctionhint.cpp @@ -95,6 +95,7 @@ IAssistProposal *FunctionHintProcessor::perform(const AssistInterface *interface auto uri = DocumentUri::fromFilePath(interface->filePath()); SignatureHelpRequest request((TextDocumentPositionParams(TextDocumentIdentifier(uri), Position(cursor)))); request.setResponseCallback([this](auto response) { this->handleSignatureResponse(response); }); + m_client->addAssistProcessor(this); m_client->sendContent(request); m_currentRequest = request.id(); return nullptr; From aed87f257ab896641b0b21dc56116b1597de9848 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 5 May 2022 14:26:46 +0300 Subject: [PATCH 09/13] QmlDesigner: Skip watcher setup for shaders when not inside a project Fixes: QDS-6871 Change-Id: I25c677ecac30fc4496467f888060b0b4d8fb5df7 Reviewed-by: Mahmoud Badri Reviewed-by: --- .../qmldesigner/designercore/instances/nodeinstanceview.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 11af3586799..2b490f5f96f 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -1907,6 +1907,9 @@ void NodeInstanceView::updateWatcher(const QString &path) const QString projPath = QFileInfo(model()->fileUrl().toLocalFile()).absolutePath(); #endif + if (projPath.isEmpty()) + return; + const QStringList files = m_fileSystemWatcher->files(); const QStringList directories = m_fileSystemWatcher->directories(); if (path.isEmpty()) { @@ -2034,6 +2037,9 @@ void NodeInstanceView::updateQsbPathToFilterMap() #else const QString projPath = QFileInfo(model()->fileUrl().toLocalFile()).absolutePath(); #endif + if (projPath.isEmpty()) + return; + // Parse ShaderTool files from project configuration. // Separate files to path and file name (called filter here as it can contain wildcards) // and group filters by paths. Blank path indicates project-wide file wildcard. From 2e0633907f3dbb3035bc7204194d2c20c7d42796 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 6 May 2022 11:40:19 +0200 Subject: [PATCH 10/13] VCS: Fix possible crash on shutdown Similar to how it is done for the WindowTitleAdditionHandler and SessionTitleHandler. Fixes: QTCREATORBUG-27048 Change-Id: Ic8c140b99c7c6edbc43bed5f1b9275b4af5ce831 Reviewed-by: Thomas Hartmann Reviewed-by: Orgad Shaneh Reviewed-by: --- src/plugins/vcsbase/vcsbaseplugin.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index b058600d0b2..b371c8b2f64 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -197,6 +197,7 @@ class StateListener : public QObject public: explicit StateListener(QObject *parent); + ~StateListener(); static QString windowTitleVcsTopic(const QString &filePath); @@ -221,10 +222,14 @@ StateListener::StateListener(QObject *parent) : QObject(parent) connect(SessionManager::instance(), &SessionManager::startupProjectChanged, this, &StateListener::slotStateChanged); - EditorManager::setWindowTitleVcsTopicHandler(&StateListener::windowTitleVcsTopic); } +StateListener::~StateListener() +{ + EditorManager::setWindowTitleVcsTopicHandler({}); +} + QString StateListener::windowTitleVcsTopic(const QString &filePath) { FilePath searchPath; From 61282a893fd50ef52529aea5a961cdb5dd28ffdc Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 6 May 2022 10:18:38 +0200 Subject: [PATCH 11/13] Make "X occurrences replaced" indicator less annoying - make smaller - make transparent for mouse events - reduce opacity Affects a few other indicators too (zoom, -presentationMode). Fixes: QTCREATORBUG-27513 Change-Id: Iec516202e047c5d9aa0a0b8cab42891c9bac5be3 Reviewed-by: Artem Sokolovskii Reviewed-by: David Schulz --- src/libs/utils/fadingindicator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/fadingindicator.cpp b/src/libs/utils/fadingindicator.cpp index 31ebbb79163..0d6f4ff89ee 100644 --- a/src/libs/utils/fadingindicator.cpp +++ b/src/libs/utils/fadingindicator.cpp @@ -47,13 +47,14 @@ public: FadingIndicatorPrivate(QWidget *parent, FadingIndicator::TextSize size) : QWidget(parent) { + setAttribute(Qt::WA_TransparentForMouseEvents, true); m_effect = new QGraphicsOpacityEffect(this); setGraphicsEffect(m_effect); m_effect->setOpacity(.999); m_label = new QLabel; QFont font = m_label->font(); - font.setPixelSize(size == FadingIndicator::LargeText ? 45 : 22); + font.setPixelSize(size == FadingIndicator::LargeText ? 30 : 18); m_label->setFont(font); QPalette pal = palette(); pal.setColor(QPalette::WindowText, pal.color(QPalette::Window)); @@ -67,6 +68,7 @@ public: { m_pixmap = QPixmap(); m_label->setText(text); + m_effect->setOpacity(.6); // because of the fat opaque background color layout()->setSizeConstraint(QLayout::SetFixedSize); adjustSize(); QWidget *parent = parentWidget(); From f52c9e70619f1ba6c15f762b8407e75759d9980c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 5 May 2022 21:15:25 +0200 Subject: [PATCH 12/13] Squish: Fix typo in Readme Change-Id: Idbbd93318959fdddf967d7d6271cddfac2197645 Reviewed-by: Reviewed-by: hjk --- tests/system/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/README b/tests/system/README index 2d71245cb34..890dc3caa6c 100644 --- a/tests/system/README +++ b/tests/system/README @@ -77,7 +77,7 @@ Attention! If any of these prerequisites cannot be satisfied the tests will like Prerequisites - debugging and analyzing ----------------------------------------- -In tst_simple_debug from suite_debbugger, Creator needs to read data from an application it +In tst_simple_debug from suite_debugger, Creator needs to read data from an application it started. On Windows, this has the following prerequisites: Either: * have no firewall at all enabled (sure that's a bad idea) From 03f0997b1e6c03e39140ebaa3ebb9202cb7e4417 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 5 May 2022 20:55:53 +0200 Subject: [PATCH 13/13] QtcProcess: Don't read error channel when MergedChannels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: QTCREATORBUG-27383 Change-Id: I5034c50fc876c5580148bb7806479da3163b08fc Reviewed-by: Robert Löhning Reviewed-by: Reviewed-by: Eike Ziller Reviewed-by: hjk --- src/libs/utils/qtcprocess.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 6e2e38ff7a9..63af544cf26 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -378,7 +378,12 @@ public: } QByteArray readAllStandardOutput() override { return m_process->readAllStandardOutput(); } - QByteArray readAllStandardError() override { return m_process->readAllStandardError(); } + QByteArray readAllStandardError() override + { + if (m_process->processChannelMode() == QProcess::MergedChannels) + return {}; + return m_process->readAllStandardError(); + } void setProcessEnvironment(const QProcessEnvironment &environment) override { m_process->setProcessEnvironment(environment); }