From 3daf838cc369ee7f9d31739243405518ab2274f1 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 9 Nov 2020 11:29:11 +0100 Subject: [PATCH 01/18] Doc: Describe "Get Qt" option in Welcome mode Update screenshot. Change-Id: Ia209ba65a27f213c3248d4d2535eac6cebd03774 Reviewed-by: Alessandro Portale --- doc/qtcreator/images/qtcreator-breakdown.png | Bin 37003 -> 33970 bytes doc/qtcreator/src/howto/creator-ui.qdoc | 1 + doc/qtcreator/src/mcu/creator-mcu-dev.qdoc | 6 +++--- .../creator-only/creator-configuring.qdoc | 17 +++++++++-------- .../creator-projects-compilers.qdoc | 12 ++++++------ .../creator-projects-qt-versions.qdoc | 6 +++--- .../src/webassembly/creator-webassembly.qdoc | 4 ++-- .../src/qtbridge/qtbridge-overview.qdoc | 4 ++-- .../src/qtbridge/qtbridge-ps-setup.qdoc | 2 +- .../src/qtbridge/qtbridge-sketch-setup.qdoc | 2 +- 10 files changed, 28 insertions(+), 26 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-breakdown.png b/doc/qtcreator/images/qtcreator-breakdown.png index f8f789150b4b1d63f810f65305bcdc4bef6ac264..ed8f49af7e03ab0efc25b7c92b83d2c6eb4d522f 100644 GIT binary patch literal 33970 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 literal 37003 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 \uicontrol Options > \uicontrol Kits > \uicontrol Add. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc index 357d41ff739..17995bffb15 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -42,9 +42,9 @@ specifies the compiler and other necessary tools for building an application for and running it on a particular platform. - \QC automatically detects the compilers that are registered by your system - or by an installer and lists them in \uicontrol Tools > \uicontrol Options > - \uicontrol Kits > \uicontrol Compilers: + \QC automatically detects the compilers that are registered by your + system or by the Qt Installer and lists them in \uicontrol Tools > + \uicontrol Options > \uicontrol Kits > \uicontrol Compilers: \image qtcreator-toolchains.png @@ -59,8 +59,8 @@ \li \MinGW (Minimalist GNU for Windows) is a native software port of GCC and GNU Binutils for use in the development of native Microsoft - Windows applications on Windows. \MinGW is - distributed together with \QC and Qt installers for Windows. + Windows applications on Windows. \MinGW is distributed together with + \QC and Qt for Windows. \li ICC (Intel C++ Compiler) is a group of C and C++ compilers. Only the GCC-compatible variant, available for Linux and \macos, diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc index 136fc3bda7c..82e007c2ea5 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc @@ -43,8 +43,8 @@ \section1 Registering Installed Qt Versions - \QC automatically detects the Qt versions that are registered by - your system or by installers. To view detailed information for each Qt + \QC automatically detects the Qt versions that are registered by your + system or by the Qt Installer. To view detailed information for each Qt version, select it in the list and select \uicontrol Details in the \uicontrol {Qt version for} section. @@ -137,7 +137,7 @@ output exist. When \QC complains about the installation of a self-built Qt version, try running \c {make install} in the build directory to actually install Qt into the configured location. If you installed Qt using the Qt - installer, run the Qt maintenance tool to check for updates or to reinstall + Installer, run the Qt maintenance tool to check for updates or to reinstall the Qt version. \section1 Minimum Requirements diff --git a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc index 8e5c88246bb..1e2fdc17571 100644 --- a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc +++ b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc @@ -65,8 +65,8 @@ \section1 Setting Up the Development Environment You need to install and configure Qt for WebAssembly and the tool chain for - compiling to WebAssembly. The installer automatically adds a build and run - kit to \QC. + compiling to WebAssembly. The Qt Installer automatically adds a build and + run kit to \QC. \section2 Setting Up Qt for WebAssembly diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc index 4a11c64fc14..7d3509a0060 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc @@ -37,10 +37,10 @@ the 3D graphics tools to save the assets in widely-used 3D graphics formats, and then use \QB to import them into \QDS. - You can use the Qt online installer to install \QB if you have a commercial + You can use the Qt Installer to install \QB if you have a commercial \QDS license. You can also purchase a \QB license separately from the \l{https://marketplace.qt.io/}{Qt Marketplace} and then install \QB using - the Qt online installer. + the Qt Installer. For best results when importing assets, follow the guidelines for creating and exporting them. diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-setup.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-setup.qdoc index a87e0efe71e..cc2d2ee42e8 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-setup.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-setup.qdoc @@ -31,7 +31,7 @@ \title Setting Up \QBPS You can purchase a \QBPS license from the \l{https://marketplace.qt.io/} - {Qt Marketplace}, and then use the Qt online installer to have the \QBPS + {Qt Marketplace}, and then use the Qt Installer to have the \QBPS installation package copied to the following path in your Qt installation folder: \c {QtDesignStudio\photoshop_bridge}. diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-setup.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-setup.qdoc index bb5d83186bf..f8627c5730e 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-setup.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-setup.qdoc @@ -31,7 +31,7 @@ \title Setting Up \QBSK You can purchase a \QBSK license from the \l{https://marketplace.qt.io/} - {Qt Marketplace}, and then use the Qt online installer to have the \QBSK + {Qt Marketplace}, and then use the Qt Installer to have the \QBSK plugin package copied to the following path in your Qt installation folder: \c {QtDesignStudio\sketch_bridge\io.qt.qtbridge.sketchplugin}. From 253a758d89c3c8fd5601d500e58bfa9aeddb2a56 Mon Sep 17 00:00:00 2001 From: Johanna Vanhatapio Date: Wed, 18 Nov 2020 17:03:17 +0200 Subject: [PATCH 02/18] Doc: Update Applying 3D Effects Task-number: QDS-3087 Change-Id: I2e2f4e70f98fbb54b32d22ce64307f48a1c79832 Reviewed-by: Mahmoud Badri --- .../qtdesignstudio-3d-effects.qdoc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-effects.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-effects.qdoc index 77c15f700f2..168113d8a78 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-effects.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-effects.qdoc @@ -35,12 +35,13 @@ \QDS provides a set of Qt Quick 3D effects that inherit the types in the \l {Qt Quick 3D Effects QML Types}{Qt Quick 3D Effects} module. - To apply a visual effect to a component, drag-and-drop an effect from - \uicontrol Library \uicontrol {Qt Quick 3D Effects} under the \uicontrol - {View 3D} object in \uicontrol Navigator. You can apply multiple effects to - one component. The effects you add to the project are listed in \uicontrol - Properties > \uicontrol {Scene Environment} > \uicontrol Effect and are - visible in \uicontrol {Form Editor}. + To apply a visual effect to a scene, drag-and-drop an effect from + the \uicontrol {Qt Quick 3D Effects} tab in \uicontrol Library to a + \uicontrol {View 3D} object in \uicontrol Navigator. You can apply multiple + effects to a scene. Select the \uicontrol {Scene Environment} component in + \uicontrol Navigator to view the applied effects in \uicontrol Properties > + \uicontrol {Scene Environment} > \uicontrol Effect. The effects are visible + in the \uicontrol {Form Editor} view. See the following table for available effects and example images. @@ -222,7 +223,11 @@ \li \image effect-fxaa.png "The Fxaa effect" \li A fast approximate anti-aliasing effect that removes some of the artifacts from the image without impacting performance as heavily as - super-sampling would. + super-sampling would. The Fxaa effect is an easy fix for many aliasing + problems. It also works with moving images. However, it should be noted + that this effect can blur and distort fine text details, and as a + screen-space heuristic technique, it can sometimes leave sharp edges + that ideally would be anti-aliased. \row \li Gaussian Blur From bb9ca6227c015ba35eaff20fe23a33c22d1fe6cb Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 18 Nov 2020 11:27:55 +0100 Subject: [PATCH 03/18] Doc: Describe rotating items in Form Editor Fixes: QDS-3067 Change-Id: Id97876edaccac0d567694a9fcf350701d9df926b Reviewed-by: Johanna Vanhatapio Reviewed-by: Thomas Hartmann --- .../images/qtquick-designer-rotating-items.png | Bin 0 -> 4591 bytes .../src/qtquick/qtquick-form-editor.qdoc | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 doc/qtcreator/images/qtquick-designer-rotating-items.png diff --git a/doc/qtcreator/images/qtquick-designer-rotating-items.png b/doc/qtcreator/images/qtquick-designer-rotating-items.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc8c84c41567a41022def7ed9922429d676a060 GIT binary patch literal 4591 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 RGB7YOc)I$ztaD0e0sw^`dBFex literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc b/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc index 75889753c5a..3349ec15c30 100644 --- a/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc @@ -53,6 +53,23 @@ press \key Alt+Shift. \endif + \section1 Rotating Items + + You can use a rotation tool \inlineimage rotate_on.png + in one of the corners of an item to freely rotate + items around their origin in \uicontrol {Form Editor}. + Drag clockwise or counter-clockwise to rotate the item. + + \image qtquick-designer-rotating-items.png "2D rotation tool" + + Additionally, press \key Shift or \key Alt to rotate items in steps of 5 or + 45 degrees, respectively. + + You can set the \l{Managing 2D Transformations}{origin} in the + \uicontrol Origin field in the \uicontrol Advanced tab in the + \uicontrol Properties view. There, you can also enter the value + of the \uicontrol Rotation property in degrees. + \section1 Snapping to Parent and Sibling Items When you are working on a design, you can use snapping to align From 993b614d94d23f92cf4770dce77cd824e661fb23 Mon Sep 17 00:00:00 2001 From: Leander Schulten Date: Wed, 18 Nov 2020 21:53:51 +0100 Subject: [PATCH 04/18] CppEditor: Remove using namespace quickfix: Don't insert inline namespaces Change-Id: If386d31de723ca928d3c50f55e32205c50937b0a Reviewed-by: Christian Kandeler --- src/libs/cplusplus/LookupContext.cpp | 19 ++++++--- src/libs/cplusplus/LookupContext.h | 7 +++- src/plugins/cppeditor/cppquickfix_test.cpp | 46 ++++++++++++++++++++++ src/plugins/cppeditor/cppquickfixes.cpp | 9 +++-- 4 files changed, 70 insertions(+), 11 deletions(-) diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 2846ea59552..2658b87b322 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -60,15 +60,22 @@ static void addNames(const Name *name, QList *names, bool addAllNa } } -static void path_helper(Symbol *symbol, QList *names) +static void path_helper(Symbol *symbol, + QList *names, + LookupContext::InlineNamespacePolicy policy) { if (! symbol) return; - path_helper(symbol->enclosingScope(), names); + path_helper(symbol->enclosingScope(), names, policy); if (symbol->name()) { if (symbol->isClass() || symbol->isNamespace()) { + if (policy == LookupContext::HideInlineNamespaces) { + auto ns = symbol->asNamespace(); + if (ns && ns->isInline()) + return; + } addNames(symbol->name(), names); } else if (symbol->isObjCClass() || symbol->isObjCBaseClass() || symbol->isObjCProtocol() @@ -206,17 +213,17 @@ LookupContext &LookupContext::operator=(const LookupContext &other) return *this; } -QList LookupContext::fullyQualifiedName(Symbol *symbol) +QList LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy) { - QList qualifiedName = path(symbol->enclosingScope()); + QList qualifiedName = path(symbol->enclosingScope(), policy); addNames(symbol->name(), &qualifiedName, /*add all names*/ true); return qualifiedName; } -QList LookupContext::path(Symbol *symbol) +QList LookupContext::path(Symbol *symbol, InlineNamespacePolicy policy) { QList names; - path_helper(symbol, &names); + path_helper(symbol, &names, policy); return names; } diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index e3224f1bab3..fbdcad2a250 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -314,8 +314,11 @@ public: QSharedPointer bindings() const { return _bindings; } - static QList fullyQualifiedName(Symbol *symbol); - static QList path(Symbol *symbol); + enum InlineNamespacePolicy { ShowInlineNamespaces, HideInlineNamespaces }; + static QList fullyQualifiedName( + Symbol *symbol, InlineNamespacePolicy policy = ShowInlineNamespaces); + static QList path(Symbol *symbol, + InlineNamespacePolicy policy = ShowInlineNamespaces); static const Name *minimalName(Symbol *symbol, ClassOrNamespace *target, Control *control); diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 836b51438f1..77bec26fe79 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -6792,6 +6792,52 @@ void CppEditorPlugin::test_quickfix_removeUsingNamespace_data() expected1 = expected2 = expected3 = ""; QTest::newRow("global scope remove in every file") << h1 << h2 << h3 << expected1 << expected2 << expected3 << 1; + + // test: dont print inline namespaces + h1 = R"--( +namespace test { + inline namespace test { + class Foo{ + void foo1(); + void foo2(); + }; + inline int TEST = 42; + } +} +)--"; + h2 = R"--( +#include "header1.h" +using namespace tes@t; +)--"; + h3 = R"--( +#include "header2.h" +Foo f1; +test::Foo f2; +using T1 = Foo; +using T2 = test::Foo; +int i1 = TEST; +int i2 = test::TEST; +void Foo::foo1(){}; +void test::Foo::foo2(){}; +)--"; + + expected1 = h1; + expected2 = R"--( +#include "header1.h" +)--"; + expected3 = R"--( +#include "header2.h" +test::Foo f1; +test::Foo f2; +using T1 = test::Foo; +using T2 = test::Foo; +int i1 = test::TEST; +int i2 = test::TEST; +void test::Foo::foo1(){}; +void test::Foo::foo2(){}; +)--"; + QTest::newRow("don't insert inline namespaces") + << h1 << h2 << h3 << expected1 << expected2 << expected3 << 0; } void CppEditorPlugin::test_quickfix_removeUsingNamespace() diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index a778caf3dc9..e389926332c 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -7538,7 +7538,9 @@ private: const QList localLookup = m_context.lookup(ast->name->name, scope); QList longestName; for (const LookupItem &item : localLookup) { - QList names = m_context.fullyQualifiedName(item.declaration()); + QList names + = m_context.fullyQualifiedName(item.declaration(), + LookupContext::HideInlineNamespaces); if (names.length() > longestName.length()) longestName = names; } @@ -7574,8 +7576,9 @@ private: const QList lookups = m_context.lookup(wantToLookup, scope); if (!lookups.empty()) { - QList fullName = m_context.fullyQualifiedName( - lookups.first().declaration()); + QList fullName + = m_context.fullyQualifiedName(lookups.first().declaration(), + LookupContext::HideInlineNamespaces); const int currentNameCount = countNames(wantToLookup); const bool needNamespace = needMissingNamespaces(std::move(fullName), currentNameCount); From 5c0ec9210c877c025ad0f0d3f4c32797ade7e989 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 19 Nov 2020 11:33:32 +0100 Subject: [PATCH 05/18] Fix initial directory when using konsole for Open Terminal Here Fixes: QTCREATORBUG-24947 Change-Id: I14f5b47ba2ad71005653faadd5e78fda9570196e Reviewed-by: Christian Kandeler --- src/libs/utils/consoleprocess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/consoleprocess.cpp b/src/libs/utils/consoleprocess.cpp index 084fe3f366a..7fe624ac2d4 100644 --- a/src/libs/utils/consoleprocess.cpp +++ b/src/libs/utils/consoleprocess.cpp @@ -157,7 +157,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QVector, knownTerminals, ( {"rxvt", "", "-e"}, {"urxvt", "", "-e"}, {"xfce4-terminal", "", "-x"}, - {"konsole", "--separate", "-e"}, + {"konsole", "--separate --workdir .", "-e"}, {"gnome-terminal", "", "--"} })); From 552a86f6b3e6f2316e89c190c51d0f6c2a81021f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 29 Oct 2020 16:40:06 +0100 Subject: [PATCH 06/18] Doc: Link to Qbs licenses and attributions Fixes: QTCREATORBUG-24622 Change-Id: Ieeb35e94f1409a849383bc88739047b3b30bbe26 Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- doc/qtcreator/src/overview/creator-acknowledgements.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/qtcreator/src/overview/creator-acknowledgements.qdoc b/doc/qtcreator/src/overview/creator-acknowledgements.qdoc index 9a02f948692..dcb9352fbc6 100644 --- a/doc/qtcreator/src/overview/creator-acknowledgements.qdoc +++ b/doc/qtcreator/src/overview/creator-acknowledgements.qdoc @@ -45,6 +45,11 @@ \l{https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/dist}{change logs} for each release. + \section1 Qbs + + \QC installations deliver Qbs. Its licensing and third party attributions + are listed in \l{https://doc.qt.io/qbs/attributions.html}{Qbs Manual}. + \section1 Third-party Components \QC contains the following third-party components: From 95685898a5e1f678c193e61f5a75dfff1a355568 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 19 Nov 2020 17:29:21 +0100 Subject: [PATCH 07/18] Doc: Edit info about MCU support and add screenshot The QML Types tab displays only the supported types, so that will tell users which types are supported. Change-Id: I49dd1f7d81401a84b8780fdc61f49870c58c3935 Reviewed-by: Thomas Hartmann --- .../images/qmldesigner-mcu-support.png | Bin 0 -> 61037 bytes .../src/mcu/qtquick-mcu-support.qdocinc | 18 +++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 doc/qtcreator/images/qmldesigner-mcu-support.png diff --git a/doc/qtcreator/images/qmldesigner-mcu-support.png b/doc/qtcreator/images/qmldesigner-mcu-support.png new file mode 100644 index 0000000000000000000000000000000000000000..e2dc8fd4d182673cd2d3722d33aa504facb4684c GIT binary patch literal 61037 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/mcu/qtquick-mcu-support.qdocinc b/doc/qtcreator/src/mcu/qtquick-mcu-support.qdocinc index 98dd2fc744a..c5ce96b9d72 100644 --- a/doc/qtcreator/src/mcu/qtquick-mcu-support.qdocinc +++ b/doc/qtcreator/src/mcu/qtquick-mcu-support.qdocinc @@ -32,14 +32,18 @@ types to create UIs for devices that are powered by microcontroller units (MCU). The subset of supported types depends on the Qt for MCUs version that you use for development. In this manual, we indicate which components - are supported at the time of writing, but you should always check the - \l{Qt for MCUs - All QML Types}{listing of supported QML types} for the - latest state. + are supported at the time of writing. - To develop for MCUs, \l{Using Project Wizards}{create an MCU project}. - Only a subset of properties is supported for the supported types. The - properties that are not available on MCUs are marked in the - \uicontrol Properties view by enclosing them in square brackets. + To develop for MCUs, \l{Using Project Wizards}{create an MCU project}. Only + the types available on MCUs are displayed in the \uicontrol {QML Types} tab + in \uicontrol Library. Only a subset of properties is supported for the + supported types. The properties that are not available on MCUs are marked + in the \uicontrol Properties view by enclosing them in square brackets. + + \image qmldesigner-mcu-support.png "QML types and Image type properties supported for MCUs" + + For more information about the supported QML types and their properties, see + \l{Qt for MCUs - All QML Types}. //! [mcu qtquick components] */ From b77d661152766b7529b681bfe11edcaf58011085 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 20 Nov 2020 07:58:49 +0100 Subject: [PATCH 08/18] Don't call virtual method from LocatorPopup's c'tor Rename LocatorPopup::updateGeometry into doUpdateGeometry in order to not clash with QWidget::updateGeometry. Move a call to doUpdateGeometry from LocatorPopup's c'tor into subclasses c'tors. Make subclasses final. Change-Id: I601731e6c883631c3d484ed7f11d82a99bb1f731 Reviewed-by: Eike Ziller --- .../coreplugin/locator/locatorwidget.cpp | 34 ++++++++++--------- .../coreplugin/locator/locatorwidget.h | 2 +- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp index 14d24f79963..39135013cbe 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.cpp +++ b/src/plugins/coreplugin/locator/locatorwidget.cpp @@ -132,25 +132,29 @@ private: QMetaObject::Connection m_updateSizeConnection; }; -class TopLeftLocatorPopup : public LocatorPopup +class TopLeftLocatorPopup final : public LocatorPopup { public: TopLeftLocatorPopup(LocatorWidget *locatorWidget) - : LocatorPopup(locatorWidget, locatorWidget) {} + : LocatorPopup(locatorWidget, locatorWidget) { + doUpdateGeometry(); + } protected: - void updateGeometry() override; + void doUpdateGeometry() override; void inputLostFocus() override; }; -class CenteredLocatorPopup : public LocatorPopup +class CenteredLocatorPopup final : public LocatorPopup { public: CenteredLocatorPopup(LocatorWidget *locatorWidget, QWidget *parent) - : LocatorPopup(locatorWidget, parent) {} + : LocatorPopup(locatorWidget, parent) { + doUpdateGeometry(); + } protected: - void updateGeometry() override; + void doUpdateGeometry() override; }; // =========== LocatorModel =========== @@ -297,22 +301,22 @@ void CompletionList::setModel(QAbstractItemModel *newModel) } } -void LocatorPopup::updateGeometry() +void LocatorPopup::doUpdateGeometry() { m_tree->resizeHeaders(); } -void TopLeftLocatorPopup::updateGeometry() +void TopLeftLocatorPopup::doUpdateGeometry() { QTC_ASSERT(parentWidget(), return); const QSize size = preferredSize(); const int border = m_tree->frameWidth(); const QRect rect(parentWidget()->mapToGlobal(QPoint(-border, -size.height() - border)), size); setGeometry(rect); - LocatorPopup::updateGeometry(); + LocatorPopup::doUpdateGeometry(); } -void CenteredLocatorPopup::updateGeometry() +void CenteredLocatorPopup::doUpdateGeometry() { QTC_ASSERT(parentWidget(), return); const QSize size = preferredSize(); @@ -333,7 +337,7 @@ void CenteredLocatorPopup::updateGeometry() if (rect.left() < available.left()) rect.moveLeft(available.left()); setGeometry(rect); - LocatorPopup::updateGeometry(); + LocatorPopup::doUpdateGeometry(); } void LocatorPopup::updateWindow() @@ -354,17 +358,17 @@ bool LocatorPopup::event(QEvent *event) updateWindow(); else if (event->type() == QEvent::Show) // make sure the popup has correct position before it becomes visible - updateGeometry(); + doUpdateGeometry(); else if (event->type() == QEvent::LayoutRequest) // completion list resizes after first items are shown --> LayoutRequest - QTimer::singleShot(0, this, &LocatorPopup::updateGeometry); + QTimer::singleShot(0, this, &LocatorPopup::doUpdateGeometry); return QWidget::event(event); } bool LocatorPopup::eventFilter(QObject *watched, QEvent *event) { if (watched == m_window && event->type() == QEvent::Resize) - updateGeometry(); + doUpdateGeometry(); return QWidget::eventFilter(watched, event); } @@ -427,8 +431,6 @@ LocatorPopup::LocatorPopup(LocatorWidget *locatorWidget, QWidget *parent) if (isVisible()) locatorWidget->scheduleAcceptEntry(index); }); - - updateGeometry(); } CompletionList *LocatorPopup::completionList() const diff --git a/src/plugins/coreplugin/locator/locatorwidget.h b/src/plugins/coreplugin/locator/locatorwidget.h index 6d5a3a2a745..d28d6a9497e 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.h +++ b/src/plugins/coreplugin/locator/locatorwidget.h @@ -121,7 +121,7 @@ public: protected: QSize preferredSize(); - virtual void updateGeometry(); + virtual void doUpdateGeometry(); virtual void inputLostFocus(); QPointer m_window; From f697a0d46ca2e0f6b9a6e5aa8da6f967cbd4f9a1 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 19 Nov 2020 15:04:11 +0100 Subject: [PATCH 09/18] ClangCodeModel: Fix sorting of includes when auto-completing ... by treating the directory separator specially. Fixes: QTCREATORBUG-21490 Change-Id: Iad6f51f39516a88bd14ba1eddcf2c6656490ee5b Reviewed-by: David Schulz --- .../clangcompletionassistprocessor.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 5dbfd4e94d8..98f50831747 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -60,6 +60,7 @@ #include #include +#include #include namespace ClangCodeModel { @@ -512,11 +513,17 @@ bool ClangCompletionAssistProcessor::completeInclude(const QTextCursor &cursor) completeIncludePath(realPath, suffixes); } - auto includesCompare = [](AssistProposalItemInterface *first, - AssistProposalItemInterface *second) { - return first->text() < second->text(); - }; - std::sort(m_completions.begin(), m_completions.end(), includesCompare); + QList> completionsForSorting; + for (AssistProposalItemInterface * const item : qAsConst(m_completions)) { + QString s = item->text(); + s.replace('/', QChar(0)); // The dir separator should compare less than anything else. + completionsForSorting << qMakePair(item, s); + } + Utils::sort(completionsForSorting, [](const auto &left, const auto &right) { + return left.second < right.second; + }); + for (int i = 0; i < completionsForSorting.count(); ++i) + m_completions[i] = completionsForSorting[i].first; return !m_completions.isEmpty(); } From 1dcb7e5550910c69c3728672231ea8578324422d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 19 Nov 2020 12:49:29 +0100 Subject: [PATCH 10/18] Help: Register at least one set of documentation per major Qt version The default configuration only registers documentation files only once, from the highest registered Qt version. This made sense within the Qt 5 series, since Qt documentation for the higher version included all items from the lower versions. With Qt 6 this changes - some API was removed in Qt 6. To make sure that documentation of all Qt 5 API is still available, we have to register the newest available documentation for Qt 5 and Qt 6, not only of Qt 6 (the overall newest available documentation). Expands 3dfa18818240006d1458f8f9104b4b8c336a60e0 Change-Id: I8b2984b0be11dcc823ef4a206800c84887b632ca Reviewed-by: Leena Miettinen Reviewed-by: Jarek Kobus --- src/plugins/qtsupport/qtversionmanager.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 289affee6b7..20030a46ff3 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -502,14 +502,18 @@ static QList> documentationFiles(BaseQtVersion *v) static QStringList documentationFiles(const QList &vs, bool highestOnly = false) { - QSet includedFileNames; + // if highestOnly is true, register each file only once per major Qt version, even if + // multiple minor or patch releases of that major version are installed + QHash> includedFileNames; // major Qt version -> names QSet filePaths; const QList versions = highestOnly ? QtVersionManager::sortVersions(vs) : vs; for (BaseQtVersion *v : versions) { + const int majorVersion = v->qtVersion().majorVersion; + QSet &majorVersionFileNames = includedFileNames[majorVersion]; for (const std::pair &file : documentationFiles(v)) { - if (!highestOnly || !includedFileNames.contains(file.second)) { + if (!highestOnly || !majorVersionFileNames.contains(file.second)) { filePaths.insert(file.first + file.second); - includedFileNames.insert(file.second); + majorVersionFileNames.insert(file.second); } } } From d981485a89e3f23ae20ec79ea6c4da26708f9f91 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 20 Nov 2020 08:40:59 +0100 Subject: [PATCH 11/18] Help: Remove Qt version check We are requiring Qt 5.14 now Change-Id: I2deb97dec4800ab10c25f7f6223a8c440a3a9c3f Reviewed-by: Jarek Kobus --- src/plugins/help/localhelpmanager.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index b2d317e7329..ee6220c280e 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -342,7 +342,6 @@ QVector LocalHelpManager::viewerBackends() { QVector result; #ifdef QTC_WEBENGINE_HELPVIEWER -#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) static bool schemeRegistered = false; if (!schemeRegistered) { schemeRegistered = true; @@ -350,7 +349,6 @@ QVector LocalHelpManager::viewerBackends() scheme.setFlags(QWebEngineUrlScheme::LocalScheme | QWebEngineUrlScheme::LocalAccessAllowed); QWebEngineUrlScheme::registerScheme(scheme); } -#endif result.append( {kQtWebEngineBackend, tr("QtWebEngine"), []() { return new WebEngineHelpViewer; }}); #endif From ec6b6f3671981b5e3c6d3a884e71e3ce9371d7cb Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 20 Nov 2020 09:10:00 +0100 Subject: [PATCH 12/18] Doc: Add link to Qbs attributions into toplevel Readme.md Task-number: QTCREATORBUG-24622 Change-Id: Icff751b12fc03d18f5d1fd4f8dd191a344a9981b Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8a197626471..88e3afa568f 100644 --- a/README.md +++ b/README.md @@ -762,3 +762,9 @@ SQLite (https://www.sqlite.org) is in the Public Domain. DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + + ### Qbs + + Qt Creator installations deliver Qbs. Its licensing and third party + attributions are listed in Qbs Manual at + https://doc.qt.io/qbs/attributions.html From ff3614ab5ac0f55c4e65f8330365e6026cfb0e79 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 20 Nov 2020 10:26:08 +0100 Subject: [PATCH 13/18] Debugger: Don't use QApplication::alert too often There's an ICore::raiseWindow() call already for spontaneous stops, conditioned on boolSetting(RaiseOnInterrupt). This should be sufficient for normal operation. Task-number: QTCREATORBUG-12769 Change-Id: I33daad2579f9cfdb8fd121b9c9db73c05f9eccb7 Reviewed-by: Eike Ziller --- src/plugins/debugger/debuggerengine.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index c7540e8ae1d..6d7ec190bac 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1513,9 +1513,6 @@ void DebuggerEnginePrivate::updateState() const bool detachable = stopped && !isCore; m_detachAction.setEnabled(detachable); - if (stopped) - QApplication::alert(ICore::dialogParent(), 3000); - updateReverseActions(); const bool canSnapshot = m_engine->hasCapability(SnapshotCapability); From f38d7910fe981e19988ecc5de5124f2a5e12536d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 20 Nov 2020 10:08:04 +0100 Subject: [PATCH 14/18] Help: Make litehtml the default engine above all If available prefer litehtml, even over QtWebEngine. But make the default compile-time configurable with a CMake option DEFAULT_HELPVIEWER_BACKEND. Amends 5e73215a0af6a1bc74d3baebddce4ca20cd09579 Change-Id: I5bfadd3ec1dc21f3a94d04d0da51783223908e6d Reviewed-by: Kai Koehne --- src/plugins/help/CMakeLists.txt | 8 ++++++ src/plugins/help/localhelpmanager.cpp | 36 ++++++++++++--------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/plugins/help/CMakeLists.txt b/src/plugins/help/CMakeLists.txt index 6ed078497b3..2063293dca7 100644 --- a/src/plugins/help/CMakeLists.txt +++ b/src/plugins/help/CMakeLists.txt @@ -31,6 +31,14 @@ extend_qtc_plugin(Help DEFINES HELP_NEW_FILTER_ENGINE ) +set(HELPVIEWER_DEFAULT_BACKEND "litehtml" CACHE STRING "Sets default help viewer backend") +set_property(CACHE HELPVIEWER_DEFAULT_BACKEND PROPERTY STRINGS "litehtml;qtwebengine;textbrowser") + +extend_qtc_plugin(Help + CONDITION HELPVIEWER_DEFAULT_BACKEND + DEFINES QTC_DEFAULT_HELPVIEWER_BACKEND="${HELPVIEWER_DEFAULT_BACKEND}" +) + extend_qtc_plugin(Help CONDITION FWWebKit AND FWAppKit AND Qt5_VERSION VERSION_LESS 6.0.0 FEATURE_INFO "Native WebKit help viewer" diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index ee6220c280e..3368ec82b80 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -92,10 +92,6 @@ static const char kLastShownPagesZoomKey[] = "Help/LastShownPagesZoom"; static const char kLastSelectedTabKey[] = "Help/LastSelectedTab"; static const char kViewerBackend[] = "Help/ViewerBackend"; -static const char kQtWebEngineBackend[] = "qtwebengine"; -static const char kLitehtmlBackend[] = "litehtml"; -static const char kTextBrowserBackend[] = "textbrowser"; - static const int kDefaultFallbackFontSize = 14; static QString defaultFallbackFontFamily() @@ -327,20 +323,16 @@ HelpViewerFactory LocalHelpManager::defaultViewerBackend() } if (!backend.isEmpty()) qWarning("Help viewer backend \"%s\" not found, using default.", backend.constData()); - const Utils::optional webengineFactory = backendForId(kQtWebEngineBackend); - if (webengineFactory) - return *webengineFactory; - - const Utils::optional litehtmlFactory = backendForId(kLitehtmlBackend); - if (litehtmlFactory) - return *litehtmlFactory; - - return backendForId(kTextBrowserBackend).value_or(HelpViewerFactory()); + const QVector backends = viewerBackends(); + return backends.isEmpty() ? HelpViewerFactory() : backends.first(); } QVector LocalHelpManager::viewerBackends() { QVector result; +#ifdef QTC_LITEHTML_HELPVIEWER + result.append({"litehtml", tr("litehtml"), []() { return new LiteHtmlHelpViewer; }}); +#endif #ifdef QTC_WEBENGINE_HELPVIEWER static bool schemeRegistered = false; if (!schemeRegistered) { @@ -349,17 +341,21 @@ QVector LocalHelpManager::viewerBackends() scheme.setFlags(QWebEngineUrlScheme::LocalScheme | QWebEngineUrlScheme::LocalAccessAllowed); QWebEngineUrlScheme::registerScheme(scheme); } - result.append( - {kQtWebEngineBackend, tr("QtWebEngine"), []() { return new WebEngineHelpViewer; }}); -#endif -#ifdef QTC_LITEHTML_HELPVIEWER - result.append({kLitehtmlBackend, tr("litehtml"), []() { return new LiteHtmlHelpViewer; }}); + result.append({"qtwebengine", tr("QtWebEngine"), []() { return new WebEngineHelpViewer; }}); #endif + result.append({"textbrowser", tr("QTextBrowser"), []() { return new TextBrowserHelpViewer; }}); #ifdef QTC_MAC_NATIVE_HELPVIEWER result.append({"native", tr("WebKit"), []() { return new MacWebKitHelpViewer; }}); #endif - result.append( - {kTextBrowserBackend, tr("QTextBrowser"), []() { return new TextBrowserHelpViewer; }}); +#ifdef QTC_DEFAULT_HELPVIEWER_BACKEND + const int index = Utils::indexOf(result, [](const HelpViewerFactory &f) { + return f.id == QByteArray(QTC_DEFAULT_HELPVIEWER_BACKEND); + }); + if (QTC_GUARD(index >= 0)) { + const HelpViewerFactory defaultBackend = result.takeAt(index); + result.prepend(defaultBackend); + } +#endif return result; } From 181fd57cc4f79991de60928330b30b115a77c0e8 Mon Sep 17 00:00:00 2001 From: Aleksei German Date: Wed, 18 Nov 2020 16:28:16 +0100 Subject: [PATCH 15/18] QmlDesigner: Fix for rotation cursor - Added new icons to icon font - Uses new drawing method for rotation cursor Task: QDS-3131 Change-Id: Ifa8dda2630794694dd262396ca314a9b4e6675ad Reviewed-by: Brook Cronin Reviewed-by: Thomas Hartmann --- .../imports/StudioTheme/InternalConstants.qml | 57 +++++++++--------- .../imports/StudioTheme/icons.ttf | Bin 16112 -> 16092 bytes src/libs/utils/stylehelper.cpp | 52 ++++++++++++++++ src/libs/utils/stylehelper.h | 2 + .../components/componentcore/theme.h | 3 +- .../formeditor/rotationcontroller.cpp | 8 +-- 6 files changed, 89 insertions(+), 33 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml index 28f39d89f31..09aedf94008 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml @@ -107,34 +107,35 @@ QtObject { readonly property string pin: "\u0064" readonly property string plus: "\u0065" readonly property string redo: "\u0066" - readonly property string rotation: "\u0067" - readonly property string search: "\u0068" - readonly property string splitColumns: "\u0069" - readonly property string splitRows: "\u006A" - readonly property string startNode: "\u006B" - readonly property string testIcon: "\u006C" - readonly property string textAlignBottom: "\u006D" - readonly property string textAlignCenter: "\u006E" - readonly property string textAlignLeft: "\u006F" - readonly property string textAlignMiddle: "\u0070" - readonly property string textAlignRight: "\u0071" - readonly property string textAlignTop: "\u0072" - readonly property string textBulletList: "\u0073" - readonly property string textFullJustification: "\u0074" - readonly property string textNumberedList: "\u0075" - readonly property string tickIcon: "\u0076" - readonly property string triState: "\u0077" - readonly property string undo: "\u0078" - readonly property string unpin: "\u0079" - readonly property string upDownIcon: "\u007A" - readonly property string upDownSquare2: "\u007B" - readonly property string visibilityOff: "\u007C" - readonly property string visibilityOn: "\u007D" - readonly property string wildcard: "\u007E" - readonly property string zoomAll: "\u007F" - readonly property string zoomIn: "\u0080" - readonly property string zoomOut: "\u0081" - readonly property string zoomSelection: "\u0082" + readonly property string rotationFill: "\u0067" + readonly property string rotationOutline: "\u0068" + readonly property string search: "\u0069" + readonly property string splitColumns: "\u006A" + readonly property string splitRows: "\u006B" + readonly property string startNode: "\u006C" + readonly property string testIcon: "\u006D" + readonly property string textAlignBottom: "\u006E" + readonly property string textAlignCenter: "\u006F" + readonly property string textAlignLeft: "\u0070" + readonly property string textAlignMiddle: "\u0071" + readonly property string textAlignRight: "\u0072" + readonly property string textAlignTop: "\u0073" + readonly property string textBulletList: "\u0074" + readonly property string textFullJustification: "\u0075" + readonly property string textNumberedList: "\u0076" + readonly property string tickIcon: "\u0077" + readonly property string triState: "\u0078" + readonly property string undo: "\u0079" + readonly property string unpin: "\u007A" + readonly property string upDownIcon: "\u007B" + readonly property string upDownSquare2: "\u007C" + readonly property string visibilityOff: "\u007D" + readonly property string visibilityOn: "\u007E" + readonly property string wildcard: "\u007F" + readonly property string zoomAll: "\u0080" + readonly property string zoomIn: "\u0081" + readonly property string zoomOut: "\u0082" + readonly property string zoomSelection: "\u0083" readonly property font iconFont: Qt.font({ "family": controlIcons.name, diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf index baa995bb5c53ea7799f84cbec5c7e332d32bd56e..f5e80745563d26364d520b9d50c90f287f3cd3f5 100644 GIT binary patch delta 4181 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 C%?eNe delta 4294 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 diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 4b317116c42..e89183d5981 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -623,6 +623,58 @@ QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &i return getIconFromIconFont(fontName, iconSymbol, fontSize, iconSize, penColor); } +QIcon StyleHelper::getCursorFromIconFont(const QString &fontName, const QString &cursorFill, const QString &cursorOutline, + int fontSize, int iconSize) +{ + QFontDatabase a; + + QTC_ASSERT(a.hasFamily(fontName), {}); + + const QColor outlineColor = Qt::black; + const QColor fillColor = Qt::white; + + if (a.hasFamily(fontName)) { + + QIcon icon; + QSize size(iconSize, iconSize); + + const int maxDpr = qRound(qApp->devicePixelRatio()); + for (int dpr = 1; dpr <= maxDpr; dpr++) { + QPixmap pixmap(size * dpr); + pixmap.setDevicePixelRatio(dpr); + pixmap.fill(Qt::transparent); + + QFont font(fontName); + font.setPixelSize(fontSize); + + QPainter painter(&pixmap); + painter.save(); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setRenderHint(QPainter::TextAntialiasing, true); + painter.setRenderHint(QPainter::LosslessImageRendering, true); + painter.setRenderHint(QPainter::SmoothPixmapTransform, true); + + painter.setFont(font); + painter.setPen(outlineColor); + painter.drawText(QRectF(QPointF(0.0, 0.0), size), + Qt::AlignCenter, cursorOutline); + + painter.setPen(fillColor); + painter.drawText(QRectF(QPointF(0.0, 0.0), size), + Qt::AlignCenter, cursorFill); + + painter.restore(); + + icon.addPixmap(pixmap); + } + + return icon; + } + + return {}; +} + + QString StyleHelper::dpiSpecificImageFile(const QString &fileName) { // See QIcon::addFile() diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index a1a24a8d5b5..a6549f431a3 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -125,6 +125,8 @@ public: static QIcon getIconFromIconFont(const QString &fontName, const QList ¶meters); static QIcon getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color); static QIcon getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize); + static QIcon getCursorFromIconFont(const QString &fontname, const QString &cursorFill, const QString &cursorOutline, + int fontSize, int iconSize); static QString dpiSpecificImageFile(const QString &fileName); static QString imageFileWithResolution(const QString &fileName, int dpr); diff --git a/src/plugins/qmldesigner/components/componentcore/theme.h b/src/plugins/qmldesigner/components/componentcore/theme.h index 659162d8005..4db7db24835 100644 --- a/src/plugins/qmldesigner/components/componentcore/theme.h +++ b/src/plugins/qmldesigner/components/componentcore/theme.h @@ -116,7 +116,8 @@ public: pin, plus, redo, - rotation, + rotationFill, + rotationOutline, search, splitColumns, splitRows, diff --git a/src/plugins/qmldesigner/components/formeditor/rotationcontroller.cpp b/src/plugins/qmldesigner/components/formeditor/rotationcontroller.cpp index a1869a5bd94..b0db31ba58f 100644 --- a/src/plugins/qmldesigner/components/formeditor/rotationcontroller.cpp +++ b/src/plugins/qmldesigner/components/formeditor/rotationcontroller.cpp @@ -203,11 +203,11 @@ QCursor RotationController::getRotationCursor() const const QString fontName = "qtds_propertyIconFont.ttf"; const int cursorSize = 32; //32 is cursor recommended size - QIcon rotationIcon = Utils::StyleHelper::getIconFromIconFont( + QIcon rotationIcon = Utils::StyleHelper::getCursorFromIconFont( fontName, - Theme::getIconUnicode(Theme::rotation), - cursorSize, cursorSize, - Qt::white); + Theme::getIconUnicode(Theme::rotationFill), + Theme::getIconUnicode(Theme::rotationOutline), + cursorSize, cursorSize); return QCursor(rotationIcon.pixmap(cursorSize, cursorSize)); } From 7b03e0701daffb699e178118503ef6965523516a Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 19 Nov 2020 23:12:28 +0100 Subject: [PATCH 16/18] Utils: Fix uneditable TextEditDisplay StringAspect Change-Id: Ia3f912021b1d4d3cd407d191f8f452149a346c69 Reviewed-by: Eike Ziller Reviewed-by: hjk --- src/libs/utils/aspects.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 4a42c1086d1..4f17830aec1 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -281,7 +281,7 @@ public: std::function m_openTerminal; bool m_readOnly = false; - bool m_undoRedoEnabled = false; + bool m_undoRedoEnabled = true; bool m_enabled = true; bool m_showToolTipOnLabel = false; bool m_fileDialogOnly = false; @@ -697,8 +697,7 @@ void StringAspect::addToLayout(LayoutBuilder &builder) d->m_textEditDisplay->setEnabled(d->m_enabled); d->m_textEditDisplay->setReadOnly(d->m_readOnly); d->m_textEditDisplay->setUndoRedoEnabled(d->m_undoRedoEnabled); - d->m_textEditDisplay->setTextInteractionFlags - (Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse); + d->m_textEditDisplay->setTextInteractionFlags(Qt::TextEditorInteraction); useMacroExpander(d->m_textEditDisplay); connect(d->m_textEditDisplay, &QTextEdit::textChanged, this, [this] { const QString value = d->m_textEditDisplay->document()->toPlainText(); From 83036eff4ce95e5592e0f2c0ebc4c8fb02a5e729 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 19 Nov 2020 18:23:35 +0100 Subject: [PATCH 17/18] QmlDesigner: Add more trace points Change-Id: I618e027785676de8492cd698f109579abb9b053a Reviewed-by: Miikka Heikkinen Reviewed-by: Mahmoud Badri --- .../components/bindingeditor/bindingeditor.cpp | 3 +++ .../components/connectioneditor/connectionmodel.cpp | 4 ++++ .../connectioneditor/dynamicpropertiesmodel.cpp | 4 ++++ .../components/importmanager/importmanagerview.cpp | 8 ++++++++ .../components/richtexteditor/richtexteditorproxy.cpp | 4 ++++ src/plugins/qmldesigner/qmldesignerconstants.h | 5 +++++ 6 files changed, 28 insertions(+) diff --git a/src/plugins/qmldesigner/components/bindingeditor/bindingeditor.cpp b/src/plugins/qmldesigner/components/bindingeditor/bindingeditor.cpp index fbf8c0d96e7..d28457e1f58 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/bindingeditor.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/bindingeditor.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -59,6 +60,8 @@ void BindingEditor::registerDeclarativeType() void BindingEditor::prepareDialog() { + QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_BINDINGEDITOR_OPENED); + if (s_lastBindingEditor) s_lastBindingEditor->hideWidget(); diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp index e325b020346..8ea93278299 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp @@ -36,6 +36,8 @@ #include #include #include +#include +#include #include #include @@ -309,6 +311,8 @@ ModelNode ConnectionModel::getTargetNodeForConnection(const ModelNode &connectio void ConnectionModel::addConnection() { + QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_CONNECTION_ADDED); + ModelNode rootModelNode = connectionView()->rootModelNode(); if (rootModelNode.isValid() && rootModelNode.metaInfo().isValid()) { diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index 87380a427c7..f0ddc6e3e58 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include @@ -356,6 +358,8 @@ QStringList DynamicPropertiesModel::possibleTargetProperties(const BindingProper void DynamicPropertiesModel::addDynamicPropertyForCurrentNode() { + QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_PROPERTY_ADDED); + if (connectionView()->selectedModelNodes().count() == 1) { const ModelNode modelNode = connectionView()->selectedModelNodes().constFirst(); if (modelNode.isValid()) { diff --git a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp index a4cd31e7894..832c72c1916 100644 --- a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp +++ b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp @@ -28,6 +28,7 @@ #include #include +#include namespace QmlDesigner { @@ -120,6 +121,13 @@ void ImportManagerView::removeImport(const Import &import) void ImportManagerView::addImport(const Import &import) { + if (import.isLibraryImport() + && (import.toImportString().startsWith("QtQuick") + || import.toImportString().startsWith("SimulinkConnector"))) { + QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_IMPORT_ADDED + + import.toImportString()); + } + try { if (model()) model()->changeImports({import}, {}); diff --git a/src/plugins/qmldesigner/components/richtexteditor/richtexteditorproxy.cpp b/src/plugins/qmldesigner/components/richtexteditor/richtexteditorproxy.cpp index ba914724db0..12e0cee41bc 100644 --- a/src/plugins/qmldesigner/components/richtexteditor/richtexteditorproxy.cpp +++ b/src/plugins/qmldesigner/components/richtexteditor/richtexteditorproxy.cpp @@ -25,6 +25,9 @@ #include "richtexteditorproxy.h" +#include +#include + #include #include #include @@ -67,6 +70,7 @@ void RichTextEditorProxy::registerDeclarativeType() void RichTextEditorProxy::showWidget() { + QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_RICHTEXT_OPENED); m_dialog->show(); } diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h index 1e7fea711bb..13ab6be83e2 100644 --- a/src/plugins/qmldesigner/qmldesignerconstants.h +++ b/src/plugins/qmldesigner/qmldesignerconstants.h @@ -80,9 +80,14 @@ const int MODELNODE_PREVIEW_IMAGE_DIMENSIONS = 150; const char EVENT_TIMELINE_ADDED[] = "Timeline Added"; const char EVENT_TRANSITION_ADDED[] = "Transition Added"; const char EVENT_STATE_ADDED[] = "State Added"; +const char EVENT_CONNECTION_ADDED[] = "Connection Added"; +const char EVENT_PROPERTY_ADDED[] = "Property Added"; const char EVENT_ANNOTATION_ADDED[] = "Annotation Added"; const char EVENT_RESOURCE_IMPORTED[] = "Resource Imported "; const char EVENT_ACTION_EXECUTED[] = "Action Executed "; +const char EVENT_IMPORT_ADDED[] = "Import Added "; +const char EVENT_BINDINGEDITOR_OPENED[] = "Binding Editor Opened"; +const char EVENT_RICHTEXT_OPENED[] = "Richtext Editor Opened"; namespace Internal { enum { debug = 0 }; From f7fa53d29bc7b496b9f27d74a637248d0aa828b4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 20 Nov 2020 12:24:58 +0100 Subject: [PATCH 18/18] QmlDesigner: Track usage of graphical views Change-Id: I0631816980178100dcd61b65d792fc38504199d5 Reviewed-by: Miikka Heikkinen --- .../curveeditor/detail/graphicsscene.cpp | 16 ++++++++++++++++ .../curveeditor/detail/graphicsscene.h | 7 +++++++ .../components/edit3d/edit3dcanvas.cpp | 16 ++++++++++++++++ .../qmldesigner/components/edit3d/edit3dcanvas.h | 4 ++++ .../components/formeditor/formeditorscene.cpp | 14 +++++++++++++- .../components/formeditor/formeditorscene.h | 3 +++ .../timelineeditor/timelinegraphicsscene.cpp | 14 ++++++++++++++ .../timelineeditor/timelinegraphicsscene.h | 5 +++++ .../transitioneditorgraphicsscene.cpp | 14 ++++++++++++++ .../transitioneditorgraphicsscene.h | 5 +++++ src/plugins/qmldesigner/qmldesignerconstants.h | 5 +++++ src/plugins/qmldesigner/qmldesignerplugin.cpp | 5 +++++ src/plugins/qmldesigner/qmldesignerplugin.h | 2 ++ 13 files changed, 109 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp index d6db50fee73..ecb7db989bd 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp @@ -29,6 +29,9 @@ #include "graphicsview.h" #include "handleitem.h" +#include +#include + #include #include @@ -425,6 +428,19 @@ void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) graphicsView()->setZoomY(0.0); } +void GraphicsScene::focusOutEvent(QFocusEvent *focusEvent) +{ + QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_CURVEDITOR_TIME, + m_usageTimer.elapsed()); + QGraphicsScene::focusOutEvent(focusEvent); +} + +void GraphicsScene::focusInEvent(QFocusEvent *focusEvent) +{ + m_usageTimer.restart(); + QGraphicsScene::focusInEvent(focusEvent); +} + GraphicsView *GraphicsScene::graphicsView() const { const QList viewList = views(); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h index 2e5da41bc66..cd42ffbd4da 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h @@ -27,6 +27,7 @@ #include "keyframeitem.h" +#include #include namespace QmlDesigner { @@ -120,6 +121,10 @@ protected: void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) override; + void focusOutEvent(QFocusEvent *focusEvent) override; + + void focusInEvent(QFocusEvent *focusEvent) override; + private: using QGraphicsScene::addItem; @@ -140,6 +145,8 @@ private: mutable QRectF m_limits; bool m_doNotMoveItems; + + QElapsedTimer m_usageTimer; }; } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp index cf93c81c121..62264e037f0 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp @@ -30,6 +30,9 @@ #include "nodehints.h" #include "qmlvisualnode.h" +#include +#include + #include #include @@ -132,4 +135,17 @@ void Edit3DCanvas::dropEvent(QDropEvent *e) } } +void Edit3DCanvas::focusOutEvent(QFocusEvent *focusEvent) +{ + QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_3DEDITOR_TIME, + m_usageTimer.elapsed()); + QWidget::focusOutEvent(focusEvent); +} + +void Edit3DCanvas::focusInEvent(QFocusEvent *focusEvent) +{ + m_usageTimer.restart(); + QWidget::focusInEvent(focusEvent); +} + } diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.h b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.h index df9ab26be8f..adeaef6a97b 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.h @@ -29,6 +29,7 @@ #include #include #include +#include #include namespace QmlDesigner { @@ -57,12 +58,15 @@ protected: void resizeEvent(QResizeEvent *e) override; void dragEnterEvent(QDragEnterEvent *e) override; void dropEvent(QDropEvent *e) override; + void focusOutEvent(QFocusEvent *focusEvent) override; + void focusInEvent(QFocusEvent *focusEvent) override; private: QPointer m_parent; QImage m_image; qint32 m_activeScene = -1; ItemLibraryEntry m_itemLibraryEntry; + QElapsedTimer m_usageTimer; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index 1812ee0dc24..734793987f9 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -28,6 +28,7 @@ #include "formeditorwidget.h" #include "formeditoritem.h" #include +#include #include #include @@ -321,10 +322,21 @@ void FormEditorScene::keyReleaseEvent(QKeyEvent *keyEvent) currentTool()->keyReleaseEvent(keyEvent); } -void FormEditorScene::focusOutEvent(QFocusEvent *) +void FormEditorScene::focusOutEvent(QFocusEvent *focusEvent) { if (currentTool()) currentTool()->focusLost(); + + QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_FORMEDITOR_TIME, + m_usageTimer.elapsed()); + + QGraphicsScene::focusOutEvent(focusEvent); +} + +void FormEditorScene::focusInEvent(QFocusEvent *focusEvent) +{ + m_usageTimer.restart(); + QGraphicsScene::focusInEvent(focusEvent); } FormEditorView *FormEditorScene::editorView() const diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h index 2ab2dc273e3..6ac22f47f41 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h @@ -30,6 +30,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE class QGraphicsSceneMouseEvent; @@ -119,6 +120,7 @@ protected: void keyReleaseEvent(QKeyEvent *keyEvent) override; void focusOutEvent(QFocusEvent *focusEvent) override; + void focusInEvent(QFocusEvent *focusEvent) override; private: QList removeLayerItems(const QList &itemList); @@ -135,6 +137,7 @@ private: ModelNode m_dragNode; bool m_showBoundingRects; bool m_annotationVisibility; + QElapsedTimer m_usageTimer; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp index 5c2621300fb..9e78fcaa4ca 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -668,6 +669,19 @@ void TimelineGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent) QGraphicsScene::keyReleaseEvent(keyEvent); } +void TimelineGraphicsScene::focusOutEvent(QFocusEvent *focusEvent) +{ + QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_TIMELINE_TIME, + m_usageTimer.elapsed()); + QGraphicsScene::focusOutEvent(focusEvent); +} + +void TimelineGraphicsScene::focusInEvent(QFocusEvent *focusEvent) +{ + m_usageTimer.restart(); + QGraphicsScene::focusInEvent(focusEvent); +} + void TimelineGraphicsScene::invalidateSections() { for (auto child : m_layout->childItems()) diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h index 792264f8fe8..ade4edfeb8d 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.h @@ -30,6 +30,7 @@ #include +#include #include #include @@ -193,6 +194,9 @@ protected: void keyPressEvent(QKeyEvent *keyEvent) override; void keyReleaseEvent(QKeyEvent *keyEvent) override; + void focusOutEvent(QFocusEvent *focusEvent) override; + void focusInEvent(QFocusEvent *focusEvent) override; + private: void copySelectedKeyframes(); void pasteSelectedKeyframes(); @@ -215,6 +219,7 @@ private: // sorted, unique cache of keyframes positions, used for snapping QVector m_keyframePositionsCache; + QElapsedTimer m_usageTimer; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.cpp b/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.cpp index c080a49314e..7bea0b07bd8 100644 --- a/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.cpp +++ b/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -401,6 +402,19 @@ void TransitionEditorGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent) QGraphicsScene::keyReleaseEvent(keyEvent); } +void TransitionEditorGraphicsScene::focusOutEvent(QFocusEvent *focusEvent) +{ + QmlDesignerPlugin::emitUsageStatisticsTime(Constants::EVENT_TRANSITIONEDITOR_TIME, + m_usageTimer.elapsed()); + QGraphicsScene::focusOutEvent(focusEvent); +} + +void TransitionEditorGraphicsScene::focusInEvent(QFocusEvent *focusEvent) +{ + m_usageTimer.restart(); + QGraphicsScene::focusInEvent(focusEvent); +} + void TransitionEditorGraphicsScene::invalidateSections() { const QList children = m_layout->childItems(); diff --git a/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.h b/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.h index 5f442fc952c..d4e91cdd6ca 100644 --- a/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.h +++ b/src/plugins/qmldesigner/components/transitioneditor/transitioneditorgraphicsscene.h @@ -30,6 +30,7 @@ #include +#include #include #include @@ -123,6 +124,9 @@ protected: void keyPressEvent(QKeyEvent *keyEvent) override; void keyReleaseEvent(QKeyEvent *keyEvent) override; + void focusOutEvent(QFocusEvent *focusEvent) override; + void focusInEvent(QFocusEvent *focusEvent) override; + private: void invalidateSections(); QList itemsAt(const QPointF &pos); @@ -135,6 +139,7 @@ private: int m_scrollOffset = 0; TimelineToolDelegate m_tools; TransitionEditorPropertyItem *m_selectedProperty = nullptr; + QElapsedTimer m_usageTimer; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h index 13ab6be83e2..8884039df23 100644 --- a/src/plugins/qmldesigner/qmldesignerconstants.h +++ b/src/plugins/qmldesigner/qmldesignerconstants.h @@ -88,6 +88,11 @@ const char EVENT_ACTION_EXECUTED[] = "Action Executed "; const char EVENT_IMPORT_ADDED[] = "Import Added "; const char EVENT_BINDINGEDITOR_OPENED[] = "Binding Editor Opened"; const char EVENT_RICHTEXT_OPENED[] = "Richtext Editor Opened"; +const char EVENT_FORMEDITOR_TIME[] = "Form Editor"; +const char EVENT_3DEDITOR_TIME[] = "3D Editor"; +const char EVENT_TIMELINE_TIME[] = "Timeline"; +const char EVENT_TRANSITIONEDITOR_TIME[] = "Transition Editor"; +const char EVENT_CURVEDITOR_TIME[] = "Curve Editor"; namespace Internal { enum { debug = 0 }; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 7b078f10f59..2a855b9e8c6 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -566,6 +566,11 @@ ImageCache &QmlDesignerPlugin::imageCache() return m_instance->d->viewManager.imageCache(); } +void QmlDesignerPlugin::emitUsageStatisticsTime(const QString &identifier, int elapsed) +{ + emit instance()->usageStatisticsUsageTimer(identifier, elapsed); +} + QmlDesignerPlugin *QmlDesignerPlugin::instance() { return m_instance; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index 721ab84b100..d6cbe078757 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -85,11 +85,13 @@ public: static void emitUsageStatistics(const QString &identifier); static void emitUsageStatisticsContextAction(const QString &identifier); + static void emitUsageStatisticsTime(const QString &identifier, int elapsed); static ImageCache &imageCache(); signals: void usageStatisticsNotifier(const QString &identifier); + void usageStatisticsUsageTimer(const QString &identifier, int elapsed); private: // functions