From 69c8b9271c14e0866b3a39ee5dd5cc7f58edd631 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 5 Jul 2016 16:52:32 +0200 Subject: [PATCH 01/86] fix qt namespace retrieval when an early break happened the logic to retrigger the namespace retrieval was broken, so if it was triggered for some reason before qt was "sufficiently available", the bad/failed guess would persist. Change-Id: I90e02247142814bdc3f6d5cddfc0c2fe37665a3e Done-with: hjk Reviewed-by: hjk --- share/qtcreator/debugger/gdbbridge.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index f228b763512..f8352494423 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -256,11 +256,6 @@ class Dumper(DumperBase): self.qtNamespaceToReport = None self.interpreterBreakpointResolvers = [] - # The guess does not need to be updated during a fetchVariables() - # as the result is fixed during that time (ignoring "active" - # dumpers causing loading of shared objects etc). - self.currentQtNamespaceGuess = None - def prepare(self, args): self.output = [] self.currentIName = "" @@ -294,6 +289,11 @@ class Dumper(DumperBase): #warn("EXPANDED INAMES: %s" % self.expandedINames) #warn("WATCHERS: %s" % self.watchers) + # The guess does not need to be updated during a fetchVariables() + # as the result is fixed during that time (ignoring "active" + # dumpers causing loading of shared objects etc). + self.currentQtNamespaceGuess = None + def listOfLocals(self): frame = gdb.selected_frame() From 7f07ec41abb8194cafa19863af183e5e7f971edf Mon Sep 17 00:00:00 2001 From: Brett Stottlemyer Date: Sat, 9 Jul 2016 09:48:27 -0400 Subject: [PATCH 02/86] [test] Use command line in proparser The test reads the command line, but skipped the commit. Change-Id: If38a5fdd1ec129d77065bfd90403e21fea4eda6d Reviewed-by: Oswald Buddenhagen --- tests/manual/proparser/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/manual/proparser/main.cpp b/tests/manual/proparser/main.cpp index 4555383b7b5..60067fd92de 100644 --- a/tests/manual/proparser/main.cpp +++ b/tests/manual/proparser/main.cpp @@ -189,6 +189,8 @@ int main(int argc, char **argv) qCritical("usage: testreader [-v] [-d [-d]] [-c] [] []"); return 3; } + option.commitCommandLineArguments(state); + option.useEnvironment(); if (out_pwd.isEmpty()) out_pwd = in_pwd; option.setDirectories(in_pwd, out_pwd); From b47b9ea9511db6330db22c8abfd67658323430ea Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 19 Jul 2016 10:51:03 +0200 Subject: [PATCH 03/86] QML: Band-aid fix to prevent a crash If the document that FindExportedCppTypes is to search is not in the snapshot, skip over it (instead of passing the shared pointer with a null-value inside). Change-Id: I462e3d22aa4e1cc51e710c75ae0f9399c151240b Reviewed-by: Ulf Hermann Reviewed-by: Nikolai Kosjar --- src/libs/qmljs/qmljsfindexportedcpptypes.cpp | 3 +++ src/libs/qmljs/qmljsmodelmanagerinterface.cpp | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libs/qmljs/qmljsfindexportedcpptypes.cpp b/src/libs/qmljs/qmljsfindexportedcpptypes.cpp index ff82a56cd54..e1c4d55de70 100644 --- a/src/libs/qmljs/qmljsfindexportedcpptypes.cpp +++ b/src/libs/qmljs/qmljsfindexportedcpptypes.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -819,6 +820,8 @@ FindExportedCppTypes::FindExportedCppTypes(const CPlusPlus::Snapshot &snapshot) QStringList FindExportedCppTypes::operator()(const CPlusPlus::Document::Ptr &document) { + QTC_ASSERT(!document.isNull(), return QStringList()); + m_contextProperties.clear(); m_exportedTypes.clear(); QStringList fileNames; diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index a919087fea6..bdd6e6eeab2 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -1321,7 +1321,10 @@ void ModelManagerInterface::updateCppQmlTypes(QFutureInterface &interface, if (!scan) { hasNewInfo = newData.remove(fileName) > 0 || hasNewInfo; foreach (const QString &file, newDeclarations[fileName]) { - finder(snapshot.document(file)); + CPlusPlus::Document::Ptr doc = snapshot.document(file); + if (doc.isNull()) + continue; + finder(doc); hasNewInfo = rescanExports(file, finder, newData) || hasNewInfo; } continue; From 7037644252fd9cac6d4c2fb919542163453ad820 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 21 Jul 2016 09:19:30 +0200 Subject: [PATCH 04/86] Debugger: Show object address with LLDB if there is nothing better Mimic what GDB does. Change-Id: Ied3fff41339220eacc5c942b3f30e744f9f32a21 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/lldbbridge.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 8e4cb83ef10..afbff9099f8 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -206,7 +206,7 @@ class Dumper(DumperBase): self.currentType = ReportItem() self.currentNumChild = None self.currentMaxNumChild = None - self.currentPrintsAddress = None + self.currentPrintsAddress = True self.currentChildType = None self.currentChildNumChild = -1 self.currentWatchers = {} @@ -250,12 +250,14 @@ class Dumper(DumperBase): if item.name == '**&': item.name = '*' self.put('name="%s",' % item.name) + item.savedCurrentAddress = self.currentAddress item.savedIName = self.currentIName item.savedValue = self.currentValue item.savedType = self.currentType self.currentIName = item.iname self.currentValue = ReportItem() self.currentType = ReportItem() + self.currentAddress = None def exitSubItem(self, item, exType, exValue, exTraceBack): if not exType is None: @@ -278,10 +280,13 @@ class Dumper(DumperBase): self.put('value="%s",' % self.currentValue.value) except: pass + if not self.currentAddress is None: + self.put(self.currentAddress) self.put('},') self.currentIName = item.savedIName self.currentValue = item.savedValue self.currentType = item.savedType + self.currentAddress = item.savedCurrentAddress return True def stateName(self, s): @@ -962,7 +967,7 @@ class Dumper(DumperBase): #if int(addr) == 0xffffffffffffffff: # raise RuntimeError("Illegal address") if self.currentPrintsAddress and not addr is None: - self.put('address="0x%x",' % int(addr)) + self.currentAddress = 'address="0x%x",' % toInteger(addr) def isFunctionType(self, typeobj): if self.isGoodLldb: @@ -1174,6 +1179,7 @@ class Dumper(DumperBase): return self.output = '' + self.currentAddress = None partialVariable = args.get('partialvar', "") isPartial = len(partialVariable) > 0 From 13fbcb2d3e26dc805155c1e83bead2c0371a4f38 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 25 Jul 2016 11:12:02 +0200 Subject: [PATCH 05/86] Debugger: Bump LLDB requirement to 3.8 on Linux There was an official release in June, and given that LLDB on Linux is still fragile, requiring at least the latest officially released version seems in order. Change-Id: Iabbdc654071b28166c7f9ea550eaa7db304cb4a0 Reviewed-by: Leena Miettinen --- doc/src/debugger/creator-debugger-setup.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/debugger/creator-debugger-setup.qdoc b/doc/src/debugger/creator-debugger-setup.qdoc index 6a7e66d1ba1..cd567cba35a 100644 --- a/doc/src/debugger/creator-debugger-setup.qdoc +++ b/doc/src/debugger/creator-debugger-setup.qdoc @@ -137,7 +137,7 @@ On OS X you can use the LLDB version delivered with Xcode or build from source. The minimum supported version is LLDB 320.4. - On Linux, the minimum supported version is LLDB 3.7. + On Linux, the minimum supported version is LLDB 3.8. \omit From 98f7a00e7070c856c4a50a89eab6cb63b299db21 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Mon, 25 Jul 2016 11:58:28 +0200 Subject: [PATCH 06/86] Move "Ok", "Error" and "Notloaded" icons from ExtentionSystem to Utils These icons are useful in other situations (e.g. QmlDesigner) Change-Id: I31751b8ca8fea34c532d54d423e5fef07b370a4a Reviewed-by: Thomas Hartmann --- src/libs/extensionsystem/extensionsystem.pro | 4 ---- src/libs/extensionsystem/extensionsystem.qbs | 4 ---- src/libs/extensionsystem/pluginview.cpp | 14 ++++---------- src/libs/extensionsystem/pluginview.qrc | 10 ---------- .../{extensionsystem => utils}/images/error.png | Bin .../images/error@2x.png | Bin .../images/notloaded.png | Bin .../images/notloaded@2x.png | Bin src/libs/{extensionsystem => utils}/images/ok.png | Bin .../{extensionsystem => utils}/images/ok@2x.png | Bin src/libs/utils/utils.qrc | 6 ++++++ src/libs/utils/utilsicons.h | 6 ++++++ src/tools/icons/qtcreatoricons.svg | 6 +++--- 13 files changed, 19 insertions(+), 31 deletions(-) delete mode 100644 src/libs/extensionsystem/pluginview.qrc rename src/libs/{extensionsystem => utils}/images/error.png (100%) rename src/libs/{extensionsystem => utils}/images/error@2x.png (100%) rename src/libs/{extensionsystem => utils}/images/notloaded.png (100%) rename src/libs/{extensionsystem => utils}/images/notloaded@2x.png (100%) rename src/libs/{extensionsystem => utils}/images/ok.png (100%) rename src/libs/{extensionsystem => utils}/images/ok@2x.png (100%) diff --git a/src/libs/extensionsystem/extensionsystem.pro b/src/libs/extensionsystem/extensionsystem.pro index ec147aec939..dce2b19b17d 100644 --- a/src/libs/extensionsystem/extensionsystem.pro +++ b/src/libs/extensionsystem/extensionsystem.pro @@ -37,7 +37,3 @@ FORMS += \ pluginerrorview.ui \ plugindetailsview.ui \ pluginerroroverview.ui -RESOURCES += pluginview.qrc - - - diff --git a/src/libs/extensionsystem/extensionsystem.qbs b/src/libs/extensionsystem/extensionsystem.qbs index 003c591e7b9..62c5b26ed55 100644 --- a/src/libs/extensionsystem/extensionsystem.qbs +++ b/src/libs/extensionsystem/extensionsystem.qbs @@ -43,10 +43,6 @@ Project { "pluginspec_p.h", "pluginview.cpp", "pluginview.h", - "pluginview.qrc", - "images/error.png", - "images/notloaded.png", - "images/ok.png", ] Export { diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp index 2dea6e1b251..6911475b53e 100644 --- a/src/libs/extensionsystem/pluginview.cpp +++ b/src/libs/extensionsystem/pluginview.cpp @@ -31,7 +31,7 @@ #include #include -#include +#include #include #include #include @@ -90,22 +90,16 @@ static const QIcon &icon(IconIndex icon) using namespace Utils; switch (icon) { case OkIcon: { - static const QIcon ok = - Icon({{QLatin1String(":/extensionsystem/images/ok.png"), - Theme::IconsRunToolBarColor}}, Icon::Tint).icon(); + static const QIcon ok = Utils::Icons::OK.icon(); return ok; } case ErrorIcon: { - static const QIcon error = - Icon({{QLatin1String(":/extensionsystem/images/error.png"), - Theme::IconsErrorColor}}, Icon::Tint).icon(); + static const QIcon error = Utils::Icons::ERROR.icon(); return error; } default: case NotLoadedIcon: { - static const QIcon notLoaded = - Icon({{QLatin1String(":/extensionsystem/images/notloaded.png"), - Theme::IconsErrorColor}}, Icon::Tint).icon(); + static const QIcon notLoaded = Utils::Icons::NOTLOADED.icon(); return notLoaded; } } diff --git a/src/libs/extensionsystem/pluginview.qrc b/src/libs/extensionsystem/pluginview.qrc deleted file mode 100644 index da218976eb7..00000000000 --- a/src/libs/extensionsystem/pluginview.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - images/ok.png - images/ok@2x.png - images/error.png - images/error@2x.png - images/notloaded.png - images/notloaded@2x.png - - diff --git a/src/libs/extensionsystem/images/error.png b/src/libs/utils/images/error.png similarity index 100% rename from src/libs/extensionsystem/images/error.png rename to src/libs/utils/images/error.png diff --git a/src/libs/extensionsystem/images/error@2x.png b/src/libs/utils/images/error@2x.png similarity index 100% rename from src/libs/extensionsystem/images/error@2x.png rename to src/libs/utils/images/error@2x.png diff --git a/src/libs/extensionsystem/images/notloaded.png b/src/libs/utils/images/notloaded.png similarity index 100% rename from src/libs/extensionsystem/images/notloaded.png rename to src/libs/utils/images/notloaded.png diff --git a/src/libs/extensionsystem/images/notloaded@2x.png b/src/libs/utils/images/notloaded@2x.png similarity index 100% rename from src/libs/extensionsystem/images/notloaded@2x.png rename to src/libs/utils/images/notloaded@2x.png diff --git a/src/libs/extensionsystem/images/ok.png b/src/libs/utils/images/ok.png similarity index 100% rename from src/libs/extensionsystem/images/ok.png rename to src/libs/utils/images/ok.png diff --git a/src/libs/extensionsystem/images/ok@2x.png b/src/libs/utils/images/ok@2x.png similarity index 100% rename from src/libs/extensionsystem/images/ok@2x.png rename to src/libs/utils/images/ok@2x.png diff --git a/src/libs/utils/utils.qrc b/src/libs/utils/utils.qrc index 035389c93b1..604fda2a064 100644 --- a/src/libs/utils/utils.qrc +++ b/src/libs/utils/utils.qrc @@ -25,5 +25,11 @@ images/locked@2x.png images/unlocked.png images/unlocked@2x.png + images/error.png + images/error@2x.png + images/notloaded.png + images/notloaded@2x.png + images/ok.png + images/ok@2x.png diff --git a/src/libs/utils/utilsicons.h b/src/libs/utils/utilsicons.h index 601907c2b0b..aa74759f9c8 100644 --- a/src/libs/utils/utilsicons.h +++ b/src/libs/utils/utilsicons.h @@ -50,6 +50,12 @@ const Utils::Icon ZOOM({ {QLatin1String(":/utils/images/zoom.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::Tint); const Utils::Icon ZOOM_TOOLBAR({ {QLatin1String(":/utils/images/zoom.png"), Utils::Theme::IconsBaseColor}}); +const Utils::Icon OK({ + {QLatin1String(":/utils/images/ok.png"), Utils::Theme::IconsRunToolBarColor}}, Icon::Tint); +const Utils::Icon NOTLOADED({ + {QLatin1String(":/utils/images/notloaded.png"), Utils::Theme::IconsErrorColor}}, Icon::Tint); +const Utils::Icon ERROR({ + {QLatin1String(":/utils/images/error.png"), Utils::Theme::IconsErrorColor}}, Icon::Tint); } // namespace Icons } // namespace Utils diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index b39d8ed2490..a757070432a 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -1358,7 +1358,7 @@ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + id="src/libs/utils/images/ok"> Date: Mon, 25 Jul 2016 00:47:50 +0200 Subject: [PATCH 07/86] Utils: Get default error color from Theme The default Qt:red for the lineedit in Utils::PathChooser is unreadable in dark themes. This change ensures that the color comes from the current theme. Change-Id: I7b890bb18e4b996cf0a8f0ac3286da87dd33f5f2 Reviewed-by: Thomas Hartmann --- src/libs/utils/pathchooser.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index edf0384f2db..0e1d838e3c4 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -30,6 +30,7 @@ #include "synchronousprocess.h" #include "hostosinfo.h" +#include "theme/theme.h" #include #include @@ -226,6 +227,7 @@ PathChooser::PathChooser(QWidget *parent) : connect(d->m_lineEdit, &QLineEdit::textChanged, this, [this] { emit pathChanged(path()); }); d->m_lineEdit->setMinimumWidth(120); + d->m_lineEdit->setErrorColor(creatorTheme()->color(Theme::TextColorError)); d->m_hLayout->addWidget(d->m_lineEdit); d->m_hLayout->setSizeConstraint(QLayout::SetMinimumSize); From 8067297edf25f05655a768484046efb85cfbe9c1 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 25 Jul 2016 13:27:22 +0200 Subject: [PATCH 08/86] QmlProfiler: Ignore messages in local runner test Depending on the build configuration of Qt and Qt Creator there can be various kinds of messages and we cannot reliably determine their number in advance. Change-Id: I162cc02a72200026d3cbe7498fa705911f4cda39 Reviewed-by: Christian Stenger --- .../tests/localqmlprofilerrunner_test.cpp | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp index 830b7101e26..34d5aacdd1e 100644 --- a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp +++ b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp @@ -37,17 +37,6 @@ LocalQmlProfilerRunnerTest::LocalQmlProfilerRunnerTest(QObject *parent) : QObjec { } -bool checkErrors(const QStringList &errors, int number) -{ - if (errors.length() != number) { - qDebug() << "Found unexpected errors:" << errors; - return false; - } else { - return true; - } -} - - void LocalQmlProfilerRunnerTest::testRunner() { Debugger::AnalyzerConnection connection; @@ -64,7 +53,6 @@ void LocalQmlProfilerRunnerTest::testRunner() bool running = false; int runCount = 0; - QStringList errors; auto connectRunner = [&]() { connect(runner, &LocalQmlProfilerRunner::started, this, [&running, &runCount](){ @@ -76,13 +64,6 @@ void LocalQmlProfilerRunnerTest::testRunner() QVERIFY(running); running = false; }); - - connect(runner, &LocalQmlProfilerRunner::appendMessage, this, - [&errors](const QString &message, Utils::OutputFormat format) { - if (format == Utils::ErrorMessageFormat && message != - ProjectExplorer::ApplicationLauncher::msgWinCannotRetrieveDebuggingOutput()) - errors << message; - }); }; connectRunner(); @@ -91,7 +72,6 @@ void LocalQmlProfilerRunnerTest::testRunner() QTRY_COMPARE_WITH_TIMEOUT(runCount, 1, 10000); QTRY_VERIFY_WITH_TIMEOUT(!running, 10000); - QVERIFY(checkErrors(errors, 1)); configuration.socket = connection.analyzerSocket = LocalQmlProfilerRunner::findFreeSocket(); configuration.debuggee.executable = qApp->applicationFilePath(); @@ -109,7 +89,6 @@ void LocalQmlProfilerRunnerTest::testRunner() QTRY_COMPARE_WITH_TIMEOUT(runCount, 2, 10000); QTRY_VERIFY_WITH_TIMEOUT(!running, 10000); - QVERIFY(checkErrors(errors, 1)); delete rc; @@ -128,11 +107,9 @@ void LocalQmlProfilerRunnerTest::testRunner() QTRY_COMPARE_WITH_TIMEOUT(runCount, 3, 10000); QTest::qWait(1000); QVERIFY(running); // verify it doesn't spontaneously stop - QVERIFY(checkErrors(errors, 1)); rc->stop(); QTRY_VERIFY_WITH_TIMEOUT(!running, 10000); - QVERIFY(checkErrors(errors, 2)); // "The program has unexpectedly finished." delete rc; } From f562f867fcbab4482d2b1e6df4bd111dc738cd4c Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Fri, 22 Jul 2016 15:14:27 +0200 Subject: [PATCH 09/86] Squish: Use shadow builds in tst_simple_debug So MSVC2010 and MSVC2013 don't get in their way. Change-Id: Ib32c30dc0cc960756bb423348d88452aa20fbfcd Reviewed-by: Christian Stenger --- tests/system/objects.map | 1 + .../system/suite_debugger/tst_simple_debug/test.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/system/objects.map b/tests/system/objects.map index 9c78f4ec13e..b3a313a0859 100644 --- a/tests/system/objects.map +++ b/tests/system/objects.map @@ -164,6 +164,7 @@ :Qt Creator_SearchResult_Core::Internal::OutputPaneToggleButton {occurrence='2' type='Core::Internal::OutputPaneToggleButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator_SystemSettings.Details_Utils::DetailsButton {occurrence='4' text='Details' type='Utils::DetailsButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator_TextEditor::TextEditorWidget {type='TextEditor::TextEditorWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} +:Qt Creator_Utils::BuildDirectoryLineEdit {occurrence='2' type='Utils::FancyLineEdit' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator_Utils::NavigationTreeView {type='Utils::NavigationTreeView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator_Utils::NavigationTreeView::QExpandingLineEdit {container=':Qt Creator_Utils::NavigationTreeView' type='QExpandingLineEdit' unnamed='1' visible='1'} :Qt Gui Application.Form file:_QLabel {name='formLabel' text='Form file:' type='QLabel' visible='1' window=':Qt Gui Application_QmakeProjectManager::Internal::GuiAppWizardDialog'} diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py index b6646b7f224..14c250acad2 100644 --- a/tests/system/suite_debugger/tst_simple_debug/test.py +++ b/tests/system/suite_debugger/tst_simple_debug/test.py @@ -58,14 +58,20 @@ def main(): test.fatal("Haven't found a suitable Qt version - leaving without debugging.") for kit, config in availableConfigs: test.log("Selecting '%s' as build config" % config) - verifyBuildConfig(len(checkedTargets), kit, config, True, enableQmlDebug=True) + verifyBuildConfig(len(checkedTargets), kit, config, True, True, True) # explicitly build before start debugging for adding the executable as allowed program to WinFW invokeMenuItem("Build", "Rebuild All") waitForCompile(300000) if not checkCompile(): test.fatal("Compile had errors... Skipping current build config") continue - allowAppThroughWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + switchViewTo(ViewConstants.PROJECTS) + switchToBuildOrRunSettingsFor(len(checkedTargets), kit, ProjectSettings.BUILD) + buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text), + "debug") + switchViewTo(ViewConstants.EDIT) + allowAppThroughWinFW(buildDir, projectName, None) if not doSimpleDebugging(len(checkedTargets), kit, config, len(expectedBreakpointsOrder), expectedBreakpointsOrder): try: @@ -74,7 +80,8 @@ def main(): clickButton(stopB) except: pass - deleteAppFromWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + deleteAppFromWinFW(buildDir, projectName, None) # close application output window of current run to avoid mixing older output on the next run ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton") clickButton(waitForObject("{type='CloseButton' unnamed='1' visible='1' " From fe3f288f273db30fa04e3b5f2b9229e1f2844a84 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 21 Jul 2016 18:53:06 +0200 Subject: [PATCH 10/86] Debugger: Console: Allow the rows to have individual heights ...otherwise multi-line text would flow over the item. Change-Id: I98b8a45441150843638f3bd917f5e38f369729f3 Reviewed-by: hjk --- src/plugins/debugger/console/consoleview.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/debugger/console/consoleview.cpp b/src/plugins/debugger/console/consoleview.cpp index 4c5d7f1df10..db80e9cee6a 100644 --- a/src/plugins/debugger/console/consoleview.cpp +++ b/src/plugins/debugger/console/consoleview.cpp @@ -80,7 +80,6 @@ ConsoleView::ConsoleView(ConsoleItemModel *model, QWidget *parent) : setFrameStyle(QFrame::NoFrame); setHeaderHidden(true); setRootIsDecorated(false); - setUniformRowHeights(true); setEditTriggers(QAbstractItemView::AllEditTriggers); setStyleSheet(QLatin1String("QTreeView::branch:has-siblings:!adjoins-item {" "border-image: none;" From 728b9147279ee71a000be71d7dd95334f50aa8ae Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 22 Jul 2016 08:57:32 +0200 Subject: [PATCH 11/86] CppEditor: Use full tooltip in ClangTextMark Change-Id: I39cc64acbdbcd5e5156e1514acaf9674a91e81a4 Reviewed-by: Nikolai Kosjar --- src/libs/utils/tooltip/tooltip.cpp | 12 ++++++++++ src/libs/utils/tooltip/tooltip.h | 3 +++ .../clangcodemodel/clangdiagnosticmanager.cpp | 5 +--- .../clangdiagnostictooltipwidget.cpp | 23 ++++++------------- .../clangdiagnostictooltipwidget.h | 13 ++++------- .../clangeditordocumentprocessor.cpp | 15 ++++-------- .../clangeditordocumentprocessor.h | 5 +--- src/plugins/clangcodemodel/clangtextmark.cpp | 15 +++++++++--- src/plugins/clangcodemodel/clangtextmark.h | 6 ++++- src/plugins/cppeditor/cpphoverhandler.cpp | 11 +++++++-- .../cpptools/baseeditordocumentprocessor.cpp | 2 +- .../cpptools/baseeditordocumentprocessor.h | 5 +--- src/plugins/texteditor/texteditor.cpp | 17 +++++++++----- src/plugins/texteditor/textmark.cpp | 8 +++++++ src/plugins/texteditor/textmark.h | 2 ++ 15 files changed, 82 insertions(+), 60 deletions(-) diff --git a/src/libs/utils/tooltip/tooltip.cpp b/src/libs/utils/tooltip/tooltip.cpp index 7617403c81d..9fdca7b7e84 100644 --- a/src/libs/utils/tooltip/tooltip.cpp +++ b/src/libs/utils/tooltip/tooltip.cpp @@ -28,6 +28,7 @@ #include "effects.h" #include "reuse.h" +#include #include #include @@ -85,6 +86,17 @@ void ToolTip::show(const QPoint &pos, QWidget *content, QWidget *w, const QStrin instance()->showInternal(pos, QVariant::fromValue(content), WidgetContent, w, helpId, rect); } +void ToolTip::show(const QPoint &pos, QLayout *content, QWidget *w, const QString &helpId, const QRect &rect) +{ + if (content && content->count()) { + auto tooltipWidget = new FakeToolTip; + tooltipWidget->setLayout(content); + instance()->showInternal(pos, QVariant::fromValue(tooltipWidget), WidgetContent, w, helpId, rect); + } else { + instance()->hideTipWithDelay(); + } +} + void ToolTip::move(const QPoint &pos, QWidget *w) { if (isVisible()) diff --git a/src/libs/utils/tooltip/tooltip.h b/src/libs/utils/tooltip/tooltip.h index 03d44527738..44782815197 100644 --- a/src/libs/utils/tooltip/tooltip.h +++ b/src/libs/utils/tooltip/tooltip.h @@ -45,6 +45,7 @@ QT_BEGIN_NAMESPACE class QPoint; class QVariant; +class QLayout; class QWidget; QT_END_NAMESPACE @@ -76,6 +77,8 @@ public: const QString &helpId = QString(), const QRect &rect = QRect()); static void show(const QPoint &pos, QWidget *content, QWidget *w = 0, const QString &helpId = QString(), const QRect &rect = QRect()); + static void show(const QPoint &pos, QLayout *content, QWidget *w = 0, + const QString &helpId = QString(), const QRect &rect = QRect()); static void move(const QPoint &pos, QWidget *w); static void hide(); static void hideImmediately(); diff --git a/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp b/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp index b57b1e73283..2bfa7baac7d 100644 --- a/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp +++ b/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp @@ -345,10 +345,7 @@ void ClangDiagnosticManager::addClangTextMarks( const QVector &diagnostics) { for (const ClangBackEnd::DiagnosticContainer &diagnostic : diagnostics) { - auto textMark = new ClangTextMark(filePath(), - diagnostic.location().line(), - diagnostic.severity()); - textMark->setToolTip(diagnostic.text()); + auto textMark = new ClangTextMark(filePath(), diagnostic); m_clangTextMarks.push_back(textMark); m_textDocument->addMark(textMark); } diff --git a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp index a810deb5f9b..52c097f305a 100644 --- a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp +++ b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp @@ -186,7 +186,7 @@ public: void addChildrenToLayout(const QString &mainFilePath, const QVector::const_iterator first, const QVector::const_iterator last, - QBoxLayout &boxLayout) + QLayout &boxLayout) { for (auto it = first; it != last; ++it) boxLayout.addWidget(createDiagnosticLabel(*it, mainFilePath, IndentDiagnostic)); @@ -194,7 +194,7 @@ void addChildrenToLayout(const QString &mainFilePath, void setupChildDiagnostics(const QString &mainFilePath, const QVector &diagnostics, - QBoxLayout &boxLayout) + QLayout &boxLayout) { if (diagnostics.size() <= 10) { addChildrenToLayout(mainFilePath, diagnostics.begin(), diagnostics.end(), boxLayout); @@ -214,22 +214,13 @@ void setupChildDiagnostics(const QString &mainFilePath, namespace ClangCodeModel { namespace Internal { -ClangDiagnosticToolTipWidget::ClangDiagnosticToolTipWidget( - const QVector &diagnostics, - QWidget *parent) - : Utils::FakeToolTip(parent) +void addToolTipToLayout(const ClangBackEnd::DiagnosticContainer &diagnostic, QLayout *target) { - auto *mainLayout = createLayout(); + // Set up header and text row for main diagnostic + target->addWidget(new MainDiagnosticWidget(diagnostic)); - foreach (const auto &diagnostic, diagnostics) { - // Set up header and text row for main diagnostic - mainLayout->addWidget(new MainDiagnosticWidget(diagnostic)); - - // Set up child rows for notes - setupChildDiagnostics(diagnostic.location().filePath(), diagnostic.children(), *mainLayout); - } - - setLayout(mainLayout); + // Set up child rows for notes + setupChildDiagnostics(diagnostic.location().filePath(), diagnostic.children(), *target); } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.h b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.h index 4a6777e384e..600ccf22d83 100644 --- a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.h +++ b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.h @@ -27,19 +27,14 @@ #include -#include +QT_BEGIN_NAMESPACE +class QLayout; +QT_END_NAMESPACE namespace ClangCodeModel { namespace Internal { -class ClangDiagnosticToolTipWidget : public Utils::FakeToolTip -{ - Q_OBJECT -public: - explicit ClangDiagnosticToolTipWidget( - const QVector &diagnostics, - QWidget *parent = 0); -}; +void addToolTipToLayout(const ClangBackEnd::DiagnosticContainer &diagnostic, QLayout *target); } // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 6428abcc5b4..c71e3b9e0d5 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -54,7 +54,6 @@ #include #include -#include #include #include @@ -244,16 +243,12 @@ bool ClangEditorDocumentProcessor::hasDiagnosticsAt(uint line, uint column) cons return m_diagnosticManager.hasDiagnosticsAt(line, column); } -void ClangEditorDocumentProcessor::showDiagnosticTooltip(const QPoint &point, - QWidget *parent, - uint line, - uint column) const +void ClangEditorDocumentProcessor::addDiagnosticToolTipToLayout(uint line, + uint column, + QLayout *target) const { - const QVector diagnostics - = m_diagnosticManager.diagnosticsAt(line, column); - auto *tooltipWidget = new ClangDiagnosticToolTipWidget(diagnostics, parent); - - ::Utils::ToolTip::show(point, tooltipWidget, parent); + foreach (const auto &diagnostic, m_diagnosticManager.diagnosticsAt(line, column)) + addToolTipToLayout(diagnostic, target); } ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainerWithArguments() const diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index 31c4f5e9a69..e9ec8ebd185 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -76,10 +76,7 @@ public: extraRefactoringOperations(const TextEditor::AssistInterface &assistInterface) override; bool hasDiagnosticsAt(uint line, uint column) const override; - void showDiagnosticTooltip(const QPoint &point, - QWidget *parent, - uint line, - uint column) const override; + void addDiagnosticToolTipToLayout(uint line, uint column, QLayout *target) const override; ClangBackEnd::FileContainer fileContainerWithArguments() const; diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index cf5abfb5b6e..1021bd0fad1 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -26,10 +26,12 @@ #include "clangtextmark.h" #include "clangconstants.h" +#include "clangdiagnostictooltipwidget.h" #include #include +#include #include namespace ClangCodeModel { @@ -57,11 +59,13 @@ Core::Id cartegoryForSeverity(ClangBackEnd::DiagnosticSeverity severity) } // anonymous namespace -ClangTextMark::ClangTextMark(const QString &fileName, int lineNumber, ClangBackEnd::DiagnosticSeverity severity) - : TextEditor::TextMark(fileName, lineNumber, cartegoryForSeverity(severity)) + +ClangTextMark::ClangTextMark(const QString &fileName, const ClangBackEnd::DiagnosticContainer &diagnostic) + : TextEditor::TextMark(fileName, int(diagnostic.location().line()), cartegoryForSeverity(diagnostic.severity())), + m_diagnostic(diagnostic) { setPriority(TextEditor::TextMark::HighPriority); - setIcon(severity); + setIcon(diagnostic.severity()); } void ClangTextMark::setIcon(ClangBackEnd::DiagnosticSeverity severity) @@ -79,5 +83,10 @@ void ClangTextMark::setIcon(ClangBackEnd::DiagnosticSeverity severity) TextMark::setIcon(errorIcon); } +void ClangTextMark::addToToolTipLayout(QLayout *target) +{ + Internal::addToolTipToLayout(m_diagnostic, target); +} + } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangtextmark.h b/src/plugins/clangcodemodel/clangtextmark.h index 017cec02eb7..98833b38541 100644 --- a/src/plugins/clangcodemodel/clangtextmark.h +++ b/src/plugins/clangcodemodel/clangtextmark.h @@ -26,6 +26,7 @@ #pragma once #include +#include #include @@ -34,10 +35,13 @@ namespace ClangCodeModel { class ClangTextMark : public TextEditor::TextMark { public: - ClangTextMark(const QString &fileName, int lineNumber, ClangBackEnd::DiagnosticSeverity severity); + ClangTextMark(const QString &fileName, const ClangBackEnd::DiagnosticContainer &diagnostic); private: + void addToToolTipLayout(QLayout *target); void setIcon(ClangBackEnd::DiagnosticSeverity severity); + + ClangBackEnd::DiagnosticContainer m_diagnostic; }; } // namespace ClangCodeModel diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index addeb81c759..5b06e062a21 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -36,9 +36,11 @@ #include #include +#include #include #include +#include using namespace Core; using namespace TextEditor; @@ -74,8 +76,13 @@ void processWithEditorDocumentProcessor(TextEditorWidget *editorWidget, { if (CppTools::BaseEditorDocumentProcessor *processor = editorDocumentProcessor(editorWidget)) { int line, column; - if (Convenience::convertPosition(editorWidget->document(), position, &line, &column)) - processor->showDiagnosticTooltip(point, editorWidget, line, column); + if (Convenience::convertPosition(editorWidget->document(), position, &line, &column)) { + auto layout = new QVBoxLayout; + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(2); + processor->addDiagnosticToolTipToLayout(line, column, layout); + Utils::ToolTip::show(point, layout, editorWidget); + } } } diff --git a/src/plugins/cpptools/baseeditordocumentprocessor.cpp b/src/plugins/cpptools/baseeditordocumentprocessor.cpp index c437bceb80f..f32d79ed771 100644 --- a/src/plugins/cpptools/baseeditordocumentprocessor.cpp +++ b/src/plugins/cpptools/baseeditordocumentprocessor.cpp @@ -63,7 +63,7 @@ bool BaseEditorDocumentProcessor::hasDiagnosticsAt(uint, uint) const return false; } -void BaseEditorDocumentProcessor::showDiagnosticTooltip(const QPoint &, QWidget *, uint, uint) const +void BaseEditorDocumentProcessor::addDiagnosticToolTipToLayout(uint, uint, QLayout *) const { } diff --git a/src/plugins/cpptools/baseeditordocumentprocessor.h b/src/plugins/cpptools/baseeditordocumentprocessor.h index 844cadc64c0..77723fcd4ce 100644 --- a/src/plugins/cpptools/baseeditordocumentprocessor.h +++ b/src/plugins/cpptools/baseeditordocumentprocessor.h @@ -65,10 +65,7 @@ public: extraRefactoringOperations(const TextEditor::AssistInterface &assistInterface); virtual bool hasDiagnosticsAt(uint line, uint column) const; - virtual void showDiagnosticTooltip(const QPoint &point, - QWidget *parent, - uint line, - uint column) const; + virtual void addDiagnosticToolTipToLayout(uint line, uint column, QLayout *layout) const; signals: // Signal interface to implement diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index d0a4209083e..d7b75672dd6 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -111,6 +111,7 @@ #include #include #include +#include //#define DO_FOO @@ -5048,6 +5049,7 @@ void TextEditorWidget::showDefaultContextMenu(QContextMenuEvent *e, Id menuConte void TextEditorWidget::extraAreaLeaveEvent(QEvent *) { d->extraAreaPreviousMarkTooltipRequestedLine = -1; + ToolTip::hide(); // fake missing mouse move event from Qt QMouseEvent me(QEvent::MouseMove, QPoint(-1, -1), Qt::NoButton, 0, 0); @@ -5108,13 +5110,16 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) int line = cursor.blockNumber() + 1; if (d->extraAreaPreviousMarkTooltipRequestedLine != line) { if (auto data = static_cast(cursor.block().userData())) { - QStringList toolTips; - foreach (TextMark *mark, data->marks()) { - QString toolTip = mark->toolTip(); - if (!toolTip.isEmpty()) - toolTips.append(toolTip); + if (data->marks().isEmpty()) { + ToolTip::hide(); + } else { + auto layout = new QVBoxLayout; + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(2); + foreach (TextMark *mark, data->marks()) + mark->addToToolTipLayout(layout); + ToolTip::show(mapToGlobal(e->pos()), layout, this); } - ToolTip::show(mapToGlobal(e->pos()), toolTips.join('\n'), this); } } d->extraAreaPreviousMarkTooltipRequestedLine = line; diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 5f879e8760f..26f16b1b390 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -33,6 +33,8 @@ #include #include +#include + using namespace Core; using namespace Utils; using namespace TextEditor::Internal; @@ -188,6 +190,12 @@ void TextMark::dragToLine(int lineNumber) Q_UNUSED(lineNumber); } +void TextMark::addToToolTipLayout(QLayout *target) +{ + if (!m_toolTip.isEmpty()) + target->addWidget(new QLabel(m_toolTip)); +} + TextDocument *TextMark::baseTextDocument() const { return m_baseTextDocument; diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index a7585e379d3..bdbf799e742 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -33,6 +33,7 @@ #include QT_BEGIN_NAMESPACE +class QLayout; class QPainter; class QRect; class QTextBlock; @@ -73,6 +74,7 @@ public: virtual void clicked(); virtual bool isDraggable() const; virtual void dragToLine(int lineNumber); + virtual void addToToolTipLayout(QLayout *target); static Utils::Theme::Color categoryColor(Core::Id category); static bool categoryHasColor(Core::Id category); From 65f0b4b1c8d1082347b1bd52e6224a09f79c8ca6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 25 Jul 2016 16:10:13 +0200 Subject: [PATCH 12/86] QmlDesigner: Theme binding text field The text field for bindings was not properly themed, yet. We also use general Qt Creator icons for apply and cancel. Change-Id: I45f1220540a6eaeff05be0b99d8b70b64ca67af4 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/ExtendedFunctionButton.qml | 92 +++++++++++------- .../HelperWidgets/images/apply.png | Bin 514 -> 0 bytes .../HelperWidgets/images/cancel.png | Bin 576 -> 0 bytes .../componentcore/qmldesignericonprovider.cpp | 6 ++ 4 files changed, 61 insertions(+), 37 deletions(-) delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/apply.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/cancel.png diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml index 0e795d190b4..a3d14a710e6 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml @@ -128,16 +128,7 @@ Item { Rectangle { parent: itemPane visible: false - x: 10 - color: "#424242" - - radius: 3 - border.color: "black" - gradient: Gradient { - GradientStop {color: "#2c2c2c" ; position: 0} - GradientStop {color: "#343434" ; position: 0.15} - GradientStop {color: "#373737" ; position: 1.0} - } + x: 6 id: expressionDialog @@ -146,9 +137,14 @@ Item { y = pos.y + 2; } - width: parent.width - 20 + width: parent.width - 12 height: 120 + radius: 2 + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate + //border.color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerTabLight + Controls.TextField { id: textField anchors.fill: parent @@ -162,20 +158,16 @@ Item { } style: TextFieldStyle { - textColor: Constants.colorsDefaultText + textColor: creatorTheme.PanelTextColorLight padding.top: 3 padding.bottom: 1 padding.left: 16 - placeholderTextColor: "gray" + placeholderTextColor: creatorTheme.PanelTextColorMid background: Rectangle { implicitWidth: 100 implicitHeight: 23 - radius: 3 - gradient: Gradient { - GradientStop {color: "#2c2c2c" ; position: 0} - GradientStop {color: "#343434" ; position: 0.15} - GradientStop {color: "#373737" ; position: 1.0} - } + radius: 2 + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate } } } @@ -183,16 +175,29 @@ Item { Row { spacing: 0 Button { + width: 16 + height: 16 style: ButtonStyle { - background: Image { - source: "images/apply.png" - Rectangle { - opacity: control.pressed ? 0.5 : 0 - anchors.fill: parent - gradient: Gradient { - GradientStop {color: "#606060" ; position: 0} - GradientStop {color: "#404040" ; position: 0.07} - GradientStop {color: "#303030" ; position: 1} + background: Item{ + Image { + width: 16 + height: 16 + source: "image://icons/error" + opacity: { + if (control.pressed) + return 0.5; + + if (control.hovered) + return 1.0; + + return 0.9; + } + Rectangle { + z: -1 + anchors.fill: parent + color: control.hovered? creatorTheme.FancyToolButtonSelectedColor : creatorTheme.BackgroundColorDark + border.color: creatorTheme.QmlDesignerBackgroundColorDarker + radius: 2 } } } @@ -203,17 +208,29 @@ Item { } } Button { + width: 16 + height: 16 style: ButtonStyle { - background: Image { - source: "images/cancel.png" + background: Item { + Image { + width: 16 + height: 16 + source: "image://icons/ok" + opacity: { + if (control.pressed) + return 0.5; - Rectangle { - opacity: control.pressed ? 0.5 : 0 - anchors.fill: parent - gradient: Gradient { - GradientStop {color: "#606060" ; position: 0} - GradientStop {color: "#404040" ; position: 0.07} - GradientStop {color: "#303030" ; position: 1} + if (control.hovered) + return 1.0; + + return 0.9; + } + Rectangle { + z: -1 + anchors.fill: parent + color: control.hovered? creatorTheme.FancyToolButtonSelectedColor : creatorTheme.BackgroundColorDark + border.color: creatorTheme.QmlDesignerBackgroundColorDarker + radius: 2 } } } @@ -224,6 +241,7 @@ Item { } anchors.right: parent.right anchors.bottom: parent.bottom + anchors.margins: 2 } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/apply.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/apply.png deleted file mode 100644 index 049398256b4bd1e061dc5c9b47468ab7d99e39eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmeAS@N?(olHy`uVBq!ia0y~yV31{CU=ZeDV_;y&naNhqz`%IY)5S5wIKOygVX{8mXXmgVKT=KT(LulOGEyW|>DQXX(n{=t(+?*--_;TM=P zZJCL@Z_&w0@fGsTxtC`(w^!@$d|WyI`@G%CN0SP7256i~-+Xg>h}O|bCsST1tb2Xz z)z_-2{6b5EIG+|-hCKOPDR9|j^-P~M!?}LVhHRms7c)$pn%BLyds(71vEzeWTVjKD z`}4}fiGSYLJ4pyO>YNr>^50QSHhY3u&$}fLe0kc!ESweRXD9TtoO9e_zLKLYRKhm* z@NVS|{!i8w@Aqgu)oA!A>B}14Ym*Y*xmBGLKN9~`R^-%5=1d_2GtcNvEJNIgqsqc-Q!Jjucin#7P|FkH4Py4dW2mDnl1m3?? ZKRY?M-1^D3Y6b=d22WQ%mvv4FO#m#j>i+-$ diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/cancel.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/cancel.png deleted file mode 100644 index 0f2a8b11940a87fc40634586299a977d2f17f367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmeAS@N?(olHy`uVBq!ia0y~yV31{CU=ZeDV_;y&naNhqz`(@r>EamTaeVJI?`)|+ zk>k&cJ61@CFZxlZzVE^>smBIelX@bY9bYJA%01a?(CxJQgi@^7t-98_NqRw(_$R2X zcDS7%@Xz-73trtLlIFX97~ZMg`Mms`mZ-KP_@J_7y&x zc6rkGW=6ItFN4$1Yu0w7yj<~bpCAQQUt*JRLuVn3*-TB`~E%@O}&A6a$@tx}hGJBgu zxmsIqEb5v%q0(75_RBh_B}bD4UzXgOcIlSXzW49!xMs??w_o`Dv-O>}%c*Z6TB)9f zvyWc&`SJM)%lef`Vp@fhkCYjTC_Vi+#Y5%Uq~&kcm6gf0>aQ@~6CWRc{H@O!|G4O* zfgL8^p)QLr?%cEVeFUek*N6L?(@m~T`N3U#KCDng>8agkn=Ox+d%c>qDqpSf(fz$= zXQs5X;-wU$&IE%ULQIVZO1>R?To}2AY5n!?01XyhvF?NKzw3+6KdFVdQ&MBb@0BxKSHUIzs diff --git a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp index 053bf1c240f..8b604a4e9f5 100644 --- a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp +++ b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp @@ -78,6 +78,12 @@ QPixmap QmlDesignerIconProvider::requestPixmap(const QString &id, QSize *size, c else if (id == "tr") result = Icon({ { ":/qmldesigner/images/tr.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "ok") + result = Icon({ + { ":/utils/images/ok.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "error") + result = Icon({ + { ":/utils/images/error.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); else qWarning() << Q_FUNC_INFO << "Image not found:" << id; From dc8fcdf028f9fd1bcff17a215977090ed41df790 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 25 Jul 2016 16:38:19 +0200 Subject: [PATCH 13/86] Doc: Fix To-Do Entries output pane name in docs Change-Id: Id03b410653be4ae75f6a98ea7af045ac35575ce8 Reviewed-by: Friedemann Kleint --- doc/src/howto/creator-ui.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index 30d8b1cd3e7..6b1e0383339 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -486,9 +486,9 @@ You can change the property values permanently in the code editor. - \section2 To-Do List + \section2 To-Do Entries - The \uicontrol {To-Do List Entries} pane lists the BUG, FIXME, NOTE, TODO, and + The \uicontrol {To-Do Entries} pane lists the BUG, FIXME, NOTE, TODO, and WARNING keywords from the current file or from all project files. The keywords are organized into information, warning, and error categories. From ce36804665c00bf9b74f9f8f299becaa4f2f4baa Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Mon, 25 Jul 2016 16:46:47 +0200 Subject: [PATCH 14/86] QmlDesigner: New anchor icons Themable and High-DPI Change-Id: Ic073a6a8c5f3fc7eb28b9b498d3dddbebedb243c Reviewed-by: Thomas Hartmann --- .../HelperWidgets/AnchorButtons.qml | 14 +- .../HelperWidgets/ButtonRowButton.qml | 8 +- .../HelperWidgets/IconLabel.qml | 2 +- .../HelperWidgets/images/anchor-bottom.png | Bin 308 -> 0 bytes .../HelperWidgets/images/anchor-fill.png | Bin 255 -> 0 bytes .../images/anchor-horizontal.png | Bin 423 -> 0 bytes .../HelperWidgets/images/anchor-left.png | Bin 221 -> 0 bytes .../HelperWidgets/images/anchor-right.png | Bin 220 -> 0 bytes .../HelperWidgets/images/anchor-top.png | Bin 276 -> 0 bytes .../HelperWidgets/images/anchor-vertical.png | Bin 230 -> 0 bytes .../QtQuick/AnchorRow.qml | 6 +- .../QtQuick/LayoutSection.qml | 12 +- .../qmleditorwidgets/images/anchor_bottom.png | Bin 0 -> 91 bytes .../images/anchor_bottom@2x.png | Bin 0 -> 95 bytes .../qmleditorwidgets/images/anchor_fill.png | Bin 0 -> 196 bytes .../images/anchor_fill@2x.png | Bin 0 -> 226 bytes .../images/anchor_horizontal.png | Bin 0 -> 93 bytes .../images/anchor_horizontal@2x.png | Bin 0 -> 95 bytes .../qmleditorwidgets/images/anchor_left.png | Bin 0 -> 93 bytes .../images/anchor_left@2x.png | Bin 0 -> 95 bytes .../qmleditorwidgets/images/anchor_right.png | Bin 0 -> 93 bytes .../images/anchor_right@2x.png | Bin 0 -> 95 bytes .../qmleditorwidgets/images/anchor_top.png | Bin 0 -> 93 bytes .../qmleditorwidgets/images/anchor_top@2x.png | Bin 0 -> 99 bytes .../images/anchor_vertical.png | Bin 0 -> 93 bytes .../images/anchor_vertical@2x.png | Bin 0 -> 98 bytes .../qmleditorwidgets/images/anchoreditem.png | Bin 0 -> 141 bytes .../images/anchoreditem@2x.png | Bin 0 -> 186 bytes src/libs/qmleditorwidgets/resources.qrc | 16 ++ .../componentcore/qmldesignericonprovider.cpp | 27 +++ src/tools/icons/qtcreatoricons.svg | 205 +++++++++++++++++- 31 files changed, 268 insertions(+), 22 deletions(-) delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-bottom.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-fill.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-horizontal.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-left.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-right.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-top.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-vertical.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_bottom.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_bottom@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_fill.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_fill@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_horizontal.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_horizontal@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_left.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_left@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_right.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_right@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_top.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_top@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_vertical.png create mode 100644 src/libs/qmleditorwidgets/images/anchor_vertical@2x.png create mode 100644 src/libs/qmleditorwidgets/images/anchoreditem.png create mode 100644 src/libs/qmleditorwidgets/images/anchoreditem@2x.png diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AnchorButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AnchorButtons.qml index 58e8df834db..e7f9859ee49 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AnchorButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AnchorButtons.qml @@ -33,7 +33,7 @@ ButtonRow { id: buttonRow ButtonRowButton { - iconSource: "images/anchor-top.png" + iconSource: "image://icons/anchor-top" tooltip: qsTr("Anchor item to the top.") property bool topAnchored: anchorBackend.topAnchored @@ -53,7 +53,7 @@ ButtonRow { } ButtonRowButton { - iconSource: "images/anchor-bottom.png" + iconSource: "image://icons/anchor-bottom" tooltip: qsTr("Anchor item to the bottom.") property bool bottomAnchored: anchorBackend.bottomAnchored @@ -74,7 +74,7 @@ ButtonRow { } ButtonRowButton { - iconSource: "images/anchor-left.png" + iconSource: "image://icons/anchor-left" tooltip: qsTr("Anchor item to the left.") property bool leftAnchored: anchorBackend.leftAnchored @@ -94,7 +94,7 @@ ButtonRow { } ButtonRowButton { - iconSource: "images/anchor-right.png" + iconSource: "image://icons/anchor-right" tooltip: qsTr("Anchor item to the right.") property bool rightAnchored: anchorBackend.rightAnchored @@ -119,7 +119,7 @@ ButtonRow { ButtonRowButton { - iconSource: "images/anchor-fill.png" + iconSource: "image://icons/anchor-fill" tooltip: qsTr("Fill parent item.") property bool isFilled: anchorBackend.isFilled @@ -141,7 +141,7 @@ ButtonRow { } ButtonRowButton { - iconSource: "images/anchor-vertical.png" + iconSource: "image://icons/anchor-vertical" tooltip: qsTr("Anchor item vertically.") property bool verticalCentered: anchorBackend.verticalCentered; @@ -163,7 +163,7 @@ ButtonRow { } ButtonRowButton { - iconSource: "images/anchor-horizontal.png" + iconSource: "image://icons/anchor-horizontal" tooltip: qsTr("Anchor item horizontally.") property bool horizontalCentered: anchorBackend.horizontalCentered; diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index 794cdd00539..61975a69463 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -69,7 +69,7 @@ Item { anchors.fill: parent visible: checked - color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate } RoundedPanel { @@ -78,15 +78,15 @@ Item { anchors.fill: parent visible: !checked - color: creatorTheme.BackgroundColorDark + color: creatorTheme.QmlDesignerBackgroundColorDarker } } Image { id: image - //source: iconSource + width: 16 + height: 16 anchors.centerIn: parent - anchors.leftMargin: leftPadding } ToolTipArea { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/IconLabel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/IconLabel.qml index 50bdd339659..9306539a3b9 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/IconLabel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/IconLabel.qml @@ -38,7 +38,7 @@ Item { height: 16 Image { id: image - anchors.centerIn: parent + anchors.fill: parent } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-bottom.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-bottom.png deleted file mode 100644 index e3fe210293eed23113bae51f1ee13f7a6d1ff9e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpVPIgm^YOS60|UcvPZ!4!i_=S|82Ygo z@-Q6FR`&DoxDp=pf#ZmO1*7Wx#=<~XUh=&&%kE-*dE%FX%DPPxk3Wt$ zdFoS#=>3Hp>U$;~XO!i0a5B86A^W^+?<+@!)B~RO0geT8bc6XUI(ZEa$bLI?+wkv~ zlQSg$o;F|mxx(N|wbo&qO5N4ZLJr?!>Sz43WBIMtGv{Sy=rez@JF)r1#IEJCAu^AC zK9Rn}RL$M<^NruT=I52$?p22DKm6H7y18tdYi_yWoUVkUL0@N@n%PgC$jueEXY>-|h=O%{v#b{@1+l#H3$8ShTFOf`#th SR%T#eVDNPHb6Mw<&;$Sqf{N|{ diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-fill.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-fill.png deleted file mode 100644 index 54168669378ec54d6b8ac4d6aabefb7534d0ff15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpVPIgm^YOS60|Ub`PZ!4!i_?3j*zz?w z2)M~NFaN-B&rL5OJMneu6PbAjk6k-*PFSK^SL9mTd#zRu5+bWhmqi!|##`!PBC zn%{xEn7Iv(1x(j!H}DiH6^VU2a`MoMKb71c9PN4xJlm!+s4A}#STX6OK4b9lf74^k z0@g<5S-;AwF34XHwe?QfmAheG8|ODYys<2`Hl)__DA)IS!EVdnU3mSKVaECA;n{D?ZlC0R_-jh@!2_Q1{l|~q zUbnUETCDd&p8a1|bpNv}NcLG+F#R*bk&hKFnxPtZp4u=Z_EgS&yY9o~mrvGMAKrS+ z&ve)Ft8=pdiEUe+`Rnzr`|s~xdB5%N{=>o3o=O?I=V2CWIxUUgL~QR30mue+c8wwvnJ k>bBTX!nMYCc@6W|6pQ_ev#ypgFfcH9y85}Sb4q9e02O`7qyPW_ diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-left.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-left.png deleted file mode 100644 index 3d3df4048c8c077e1b329011616a617597281b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpVPIgm^YOS60|UbnPZ!4!i_>Q(ZscV$ z6kvINJ)YI_>jf6x3p{5hTw)NC6jk`7elVYjtr`a-4T efy9#|vMG;eCAY0f=VxGGVDNPHb6Mw<&;$V88C;qG diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-right.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-right.png deleted file mode 100644 index b0a20b110b46568f3fbee1b7999070ddd59e9092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpVPIgm^YOS60|UciPZ!4!i_^&ylN97P zh#1wV1;3VIn|7T?{^a(VjSuaA&ic>Kd6x0Nxj|6E=lVZp@<$V=nJSB&opEZ<#*DjO zYv%udSoooSR@Oi7u4nZwH~;W=%bYH6%Xhi?hqtpO`=9%^`7<|Us$DyOhDWFV&w#I4{|7) zq;y2^B`kM#1^Pq27&vi_|5*@C}uv$OnH z2EX66Yl~g;<+EqJW$UsQ*{%LrdhS);LO~DdJ5nbtqwnAIjs4y!$u{p4PwnEvQ_W_b jkT%z7$o#Oeit+#LfROdkoZA=}7#KWV{an^LB{Ts5DModu diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-vertical.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/anchor-vertical.png deleted file mode 100644 index eedb05860858d7bb73f9857ee2b8308dbb70de10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36TpVPIgm^YOS60|UcaPZ!4!i_^&ylN97P zh#1wV1;3VIn|7T?{^a(VjSuaA&idb<#n!ag!e?{Z5usZ%6r{Ru1SQS=E57>d|IW*Q z+WltzS1df-sO7XVYb)#PxK5!Ao%@peCJI=t$cp^8&>~&#!jskiV>e{nKD?k;EY#=4 zEX4=rfpuwV2|v3ZrPl<0!W*VcVbZo%XiH$3GkD2)Gas8F-O0efz~JfX=d#Wzp$PyBj9(G} diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml index 75e815098c5..2e2446a03b4 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml @@ -128,7 +128,7 @@ RowLayout { exclusive: true ButtonRowButton { - iconSource: verticalAnchor ? "../HelperWidgets/images/anchor-top.png" : "../HelperWidgets/images/anchor-left.png" + iconSource: "image://icons/anchor-" + (verticalAnchor ? "top" : "left") tooltip: verticalAnchor ? qsTr("Anchor to the top of the target.") : qsTr("Anchor to the left of the target.") onClicked: { if (!invertRelativeTargets) @@ -139,14 +139,14 @@ RowLayout { } ButtonRowButton { - iconSource: verticalAnchor ? "../HelperWidgets/images/anchor-vertical.png" : "../HelperWidgets/images/anchor-horizontal.png" + iconSource: "image://icons/anchor-" + (verticalAnchor ? "vertical" : "horizontal") tooltip: verticalAnchor ? qsTr("Anchor to the vertical center of the target.") : qsTr("Anchor to the horizontal center of the target.") onClicked: centerButtonClicked(); } ButtonRowButton { - iconSource: verticalAnchor ? "../HelperWidgets/images/anchor-bottom.png" : "../HelperWidgets/images/anchor-right.png" + iconSource: "image://icons/anchor-" + (verticalAnchor ? "bottom" : "right") tooltip: verticalAnchor ? qsTr("Anchor to the bottom of the target.") : qsTr("Anchor to the right of the target.") onClicked: { if (!invertRelativeTargets) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml index 6ae989f67e4..f211a4b37f2 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml @@ -50,7 +50,7 @@ Section { AnchorRow { visible: anchorBackend.topAnchored; - iconSource: "../HelperWidgets/images/anchor-top.png" + iconSource: "image://icons/anchor-top" anchorMargin: backendValues.anchors_topMargin targetName: anchorBackend.topTarget onTargetChanged: { @@ -73,7 +73,7 @@ Section { AnchorRow { visible: anchorBackend.bottomAnchored; - iconSource: "../HelperWidgets/images/anchor-bottom.png" + iconSource: "image://icons/anchor-bottom" anchorMargin: backendValues.anchors_bottomMargin targetName: anchorBackend.bottomTarget onTargetChanged: { @@ -97,7 +97,7 @@ Section { AnchorRow { visible: anchorBackend.leftAnchored; - iconSource: "../HelperWidgets/images/anchor-left.png" + iconSource: "image://icons/anchor-left" anchorMargin: backendValues.anchors_leftMargin targetName: anchorBackend.leftTarget onTargetChanged: { @@ -120,7 +120,7 @@ Section { AnchorRow { visible: anchorBackend.rightAnchored; - iconSource: "../HelperWidgets/images/anchor-right.png" + iconSource: "image://icons/anchor-right" anchorMargin: backendValues.anchors_rightMargin targetName: anchorBackend.rightTarget onTargetChanged: { @@ -145,7 +145,7 @@ Section { AnchorRow { showAlternativeTargets: false visible: anchorBackend.horizontalCentered; - iconSource: "../HelperWidgets/images/anchor-horizontal.png" + iconSource: "image://icons/anchor-horizontal" anchorMargin: backendValues.anchors_horizontalCenterOffset targetName: anchorBackend.horizontalTarget onTargetChanged: { @@ -158,7 +158,7 @@ Section { AnchorRow { showAlternativeTargets: false visible: anchorBackend.verticalCentered; - iconSource: "../HelperWidgets/images/anchor-vertical.png" + iconSource: "image://icons/anchor-vertical" anchorMargin: backendValues.anchors_verticalCenterOffset targetName: anchorBackend.verticalTarget onTargetChanged: { diff --git a/src/libs/qmleditorwidgets/images/anchor_bottom.png b/src/libs/qmleditorwidgets/images/anchor_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..fba3a6c836ec38b8c48cffc96df8f74a24bf0a77 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b rNZQlIF@!@l`Oo#h literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_bottom@2x.png b/src/libs/qmleditorwidgets/images/anchor_bottom@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4179d20e1df77ef4736d5cda296c00e01ee0192e GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=um$*pxH2#>{Qv)d>CO3f w85kHuJY5_^IHHq(@U!qV_x(6b%7 literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_fill.png b/src/libs/qmleditorwidgets/images/anchor_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..7109ee5e544f2365bc5aab233fad088b6c346fc3 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdq5|d_r6q7#I=~5^{5M^YZex zZ{NOe-@g6(_usyK`|jPl_wL<$_Uzg7=g)us{Q3L$@Bjb*Ti!G`XJB9m@^o|`br_M}fSb{(;IzYA<*X2?!9TGgB~C7FSNfx*+&&t;ucLK6VW>QDCo literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_fill@2x.png b/src/libs/qmleditorwidgets/images/anchor_fill@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54c498fdca6ad3cdf68d5b3e8f69725cec97ef96 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=m7Xq+Ar`0KPB!E_tRTQr z`D$wC5#yMf`OW-28WUm;a%U*Cb~1AbZM&3awM4M}hHa?Y3hySVB6kf{*Y_5McFXcy z_-X`;M5ky~rXQHs9n>x$A#~4)$zb&~;k}X#A*~EE+DmMB1Xe$23>Evm^N!vorhQy| z7m{v&bTfIdib3I${RfNxt<{IVthU`ynmE&So7x(Sj^CNHceuB1%uQT2b@r69sNde* dpD*X_V>o+mZ(I12@Gg+!Jzf1=);T3K0RYP{Qv)d>CO3f v85kHuJY5_^IHHq(@U!sj=(I0UHHc+kI9^n5Z!w{;j{&69)z4*}Q$iB}97P#f literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_left.png b/src/libs/qmleditorwidgets/images/anchor_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5ec07b57e772e3a3519be6b46bf325720c508f GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b v0|SGQr;B3gTe~DWM4foog4f literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_left@2x.png b/src/libs/qmleditorwidgets/images/anchor_left@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..adab9b03fe52757db362988cf60e982344c98d14 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=um$*pxH2#>{Qv)d>CO3f v85kHuJY5_^IHHq(@U!q(a8~aU`ftd|@Fp&war>o;c?=+(u6{1-oD!M{Qv)d>CO3f v85kHuJY5_^IHHq(@U!sz=r~`ZdLfp9p%o5a3+Re{(Ve0|SGntDnm{r-UW|qZ$}h literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_top@2x.png b/src/libs/qmleditorwidgets/images/anchor_top@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3253a42bcc910bb3aad709b999bf4898be3a88ee GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=um$*pxH2#>{Qv)d>CO3f z85kHOJY5_^IHHq(@U!qFJYr^Uwrz3f;I-gp*f6#7`So*~%o#wsUHx3vIVCg!0G3J{ A&;S4c literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_vertical.png b/src/libs/qmleditorwidgets/images/anchor_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..3c092755f31a3f947d9a2f687af51eb41c84899a GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b v0|SGQr;B3gTe~DWM4fm~0pR literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchor_vertical@2x.png b/src/libs/qmleditorwidgets/images/anchor_vertical@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ed661f1a72c85a41de769e2f709e49a419db6809 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=um$*pxH2#>{Qv)d>CO3f z85kJEJzX3_IA$jQ;Ai0pQL!^HxZ%vPY6d%l#rewTj~`E&$pF&q>gTe~DWM4fg(@5p literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchoreditem.png b/src/libs/qmleditorwidgets/images/anchoreditem.png new file mode 100644 index 0000000000000000000000000000000000000000..5293d5e9b1bb5a06ac8bffd6ac3cab96589a30fd GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdr%jd_r6k5)uju3JMDg_wC!a zfB*gq7cN}9c=7h_+yDRn*YhlFz;fPLt(ZIx3(-X$X#%3t6_~PC@cQ}q@ sXz1(fD@?nX!FTm4n~6K``d9|Xr8Y0sPi*_gz`(%Z>FVdQ&MBb@0NbN7rT_o{ literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/anchoreditem@2x.png b/src/libs/qmleditorwidgets/images/anchoreditem@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ded9e69bd4c0ba8fa6faea64618e30f40de03347 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I7G?$phQ^Te;|vT8S^+*Gt_cYV+1c4SIXMLd z1uZQt)22images/tile-icon-hor-crop.png images/tile-icon-hor - scale.png images/tile-icon-vert-scale.png + images/anchor_bottom.png + images/anchor_bottom@2x.png + images/anchor_fill.png + images/anchor_fill@2x.png + images/anchor_horizontal.png + images/anchor_horizontal@2x.png + images/anchor_left.png + images/anchor_left@2x.png + images/anchor_right.png + images/anchor_right@2x.png + images/anchor_top.png + images/anchor_top@2x.png + images/anchor_vertical.png + images/anchor_vertical@2x.png + images/anchoreditem.png + images/anchoreditem@2x.png diff --git a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp index 8b604a4e9f5..9693d5f1f50 100644 --- a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp +++ b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp @@ -84,6 +84,33 @@ QPixmap QmlDesignerIconProvider::requestPixmap(const QString &id, QSize *size, c else if (id == "error") result = Icon({ { ":/utils/images/error.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-top") + result = Icon({ + { ":/qmldesigner/images/anchor_top.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-right") + result = Icon({ + { ":/qmldesigner/images/anchor_right.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-bottom") + result = Icon({ + { ":/qmldesigner/images/anchor_bottom.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-left") + result = Icon({ + { ":/qmldesigner/images/anchor_left.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-horizontal") + result = Icon({ + { ":/qmldesigner/images/anchor_horizontal.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-vertical") + result = Icon({ + { ":/qmldesigner/images/anchor_vertical.png", Theme::IconsBaseColor}, + { ":/qmldesigner/images/anchoreditem.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "anchor-fill") + result = Icon({ + { ":/qmldesigner/images/anchor_fill.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); else qWarning() << Q_FUNC_INFO << "Image not found:" << id; diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index a757070432a..9e9bf7deb62 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -909,7 +909,28 @@ inkscape:groupmode="layer" id="layer6" inkscape:label="Tools logos" - style="display:inline" /> + style="display:inline"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Date: Mon, 25 Jul 2016 17:57:55 +0200 Subject: [PATCH 15/86] QmlDesigner: Fix formeditor selection indicatoor on HighDPI Make it a real reactangle, without worn-out corners. Change-Id: If7cce94896a485d34ae23602bb1dc7437cf1c62c Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/formeditor/selectionindicator.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp index 9dbf66d883d..b2b74571493 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp @@ -91,6 +91,7 @@ void SelectionIndicator::setItems(const QList &itemList) newSelectionIndicatorGraphicsItem->setFlag(QGraphicsItem::ItemIsSelectable, false); QPen pen; + pen.setJoinStyle(Qt::MiterJoin); pen.setColor(QColor(108, 141, 221)); newSelectionIndicatorGraphicsItem->setPen(pen); newSelectionIndicatorGraphicsItem->setCursor(m_cursor); From 8f36a772edfc27e32359cfe38d108f5069479477 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 25 Jul 2016 17:18:17 +0200 Subject: [PATCH 16/86] QmlDesigner: Use theme text color for TargetComboBox Change-Id: I9c9b8286c226973f1c5008d807e4e3d452a76229 Reviewed-by: Alessandro Portale --- .../propertyEditorQmlSources/QtQuick/TargetComboBox.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml index f9e1d204dd9..f96b6304e5b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/TargetComboBox.qml @@ -31,6 +31,7 @@ import QtQuick.Controls 1.0 as Controls Controls.ComboBox { property string targetName: anchorBackend.topTarget + property color textColor: creatorTheme.PanelTextColorLight id: targetComboBox @@ -50,5 +51,6 @@ Controls.ComboBox { model: anchorBackend.possibleTargetItems style: CustomComboBoxStyle { + textColor: targetComboBox.textColor } } From e28724d16d92c69e66c16d3a673d31fd60dddc9f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 25 Jul 2016 18:39:03 +0200 Subject: [PATCH 17/86] QmlDesigner: Theming fix for font size The color of the combobox was not defined by the theme. Change-Id: Iae9487f6c80e07c0c7b0155db79d9125c082c33f Reviewed-by: Alessandro Portale --- .../propertyEditorQmlSources/HelperWidgets/FontSection.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml index 911b93271c0..56c5977080a 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml @@ -113,6 +113,7 @@ Section { Controls.ComboBox { id: sizeType model: ["pixels", "points"] + property color textColor: creatorTheme.PanelTextColorLight onCurrentIndexChanged: { if (sizeWidget.isSetup) return; From a831391337e9b80a23f2bb10a2a6a72ab6a91da5 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 25 Jul 2016 18:40:07 +0200 Subject: [PATCH 18/86] QmlDesigner: Fix transparent color issue for font size We use z instead of visible, because visible triggered issues in the layout engine. I use both for now. It seems to work with recent Qt versions. Change-Id: I74fc1eac6d8443a85683c208ccf99b5d3f0eee09 Reviewed-by: Alessandro Portale --- .../propertyEditorQmlSources/HelperWidgets/FontSection.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml index 56c5977080a..e74c5c329a5 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontSection.qml @@ -95,7 +95,7 @@ Section { SpinBox { id: sizeSpinBox minimumValue: 0 - //visible: !sizeWidget.pixelSize + visible: !sizeWidget.pixelSize z: !sizeWidget.pixelSize ? 1 : 0 maximumValue: 400 backendValue: pointSize @@ -103,7 +103,7 @@ Section { SpinBox { minimumValue: 0 - //visible: sizeWidget.pixelSize + visible: sizeWidget.pixelSize z: sizeWidget.pixelSize ? 1 : 0 maximumValue: 400 backendValue: pixelSize From 938ca5ca9e72fa24130d9ca4b7dd67004b522f0c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 26 Jul 2016 07:20:43 +0200 Subject: [PATCH 19/86] AutoTest: Fix enabled state of run buttons Disable running tests also when currently executing a test run. Change-Id: Ic9538678d678650c3c79da5699f96e812d7c5415 Reviewed-by: Oliver Wolff --- src/plugins/autotest/testresultspane.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/autotest/testresultspane.cpp b/src/plugins/autotest/testresultspane.cpp index 3571e6c34af..05168391afa 100644 --- a/src/plugins/autotest/testresultspane.cpp +++ b/src/plugins/autotest/testresultspane.cpp @@ -517,7 +517,7 @@ void TestResultsPane::updateRunActions() { QString whyNot; TestTreeModel *model = TestTreeModel::instance(); - const bool enable = !model->parser()->isParsing() && model->hasTests() + const bool enable = !m_testRunning && !model->parser()->isParsing() && model->hasTests() && ProjectExplorer::ProjectExplorerPlugin::canRunStartupProject( ProjectExplorer::Constants::NORMAL_RUN_MODE, &whyNot); m_runAll->setEnabled(enable); From 16c007a0544870c191bd56c655739a0d03e011f8 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 26 Jul 2016 07:33:37 +0200 Subject: [PATCH 20/86] AutoTest: Fix stopping test run when debugging tests Change-Id: I19dcbd89b68e4df5d87cb6b6923adee0d07a6b55 Reviewed-by: Oliver Wolff --- src/plugins/autotest/testrunner.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index 47286205363..a85bc750de2 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -323,6 +323,7 @@ void TestRunner::debugTests() return; } + connect(this, &TestRunner::requestStopTestRun, runControl, &Debugger::DebuggerRunControl::stop); connect(runControl, &Debugger::DebuggerRunControl::finished, this, &TestRunner::onFinished); ProjectExplorer::ProjectExplorerPlugin::startRunControl( runControl, ProjectExplorer::Constants::DEBUG_RUN_MODE); From 0651eddbad7e9fa6f8b068f644ca9fe92273e23e Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 25 Jul 2016 15:42:49 +0200 Subject: [PATCH 21/86] Clang: Stop needless completion detail calculation ...on the plugin side by removing a left over calculation. We construct the detail in the virtual ClangAssistProposalItem::detail(), that is, on demand. Test: 1. Open src/plugins/clangstaticanalyzer/unit-tests/qt-essential-includes.pro 2. Open main.cpp 3. Complete in the main function Measured with a timer in IpcReceiver::codeCompleted. On Linux, for 20637 completion items: Before: 119ms (avg) Now: 81ms (avg) Gain: 32% Change-Id: I9617cb9651a8367c31cd40e965175b5b37e10730 Reviewed-by: Tim Jenssen Reviewed-by: Alessandro Portale --- src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 5955d351f0e..0fde4dd2763 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -91,8 +91,6 @@ QList toAssistProposalItems(const CodeCompletions item->addOverload(codeCompletion); } else { item = new ClangAssistProposalItem; - QString detail = CompletionChunksToTextConverter::convertToToolTipWithHtml(codeCompletion.chunks()); - items.insert(name, item); item->setText(name); From add9e627b82687c43b984519bcc1e9c95fa7e8a5 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 25 Jul 2016 16:54:51 +0200 Subject: [PATCH 22/86] Debugger: Don't access unloaded perspectives This can happen if a previous session marked a plugin for not loading and ended the session in a perspective provided by that plugin. Change-Id: I83a5dda421a1bb8ed2f8942f03e629e9c5d4d4ed Reviewed-by: Christian Stenger --- src/plugins/debugger/debuggermainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index d3d5ceb3f85..7821532832b 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -265,7 +265,7 @@ void DebuggerMainWindow::loadPerspectiveHelper(const QByteArray &perspectiveId, ICore::removeAdditionalContext(Context(Id::fromName(m_currentPerspectiveId))); const Perspective *perspective = m_perspectiveForPerspectiveId.value(m_currentPerspectiveId); - QWidget *central = perspective->centralWidget(); + QWidget *central = perspective ? perspective->centralWidget() : nullptr; m_centralWidgetStack->removeWidget(central ? central : m_editorPlaceHolder); } From a8fce64f3562be1091af6b789d83a1bb6e590995 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jul 2016 09:35:38 +0200 Subject: [PATCH 23/86] Doc: Fix link broken by a section title change To-Do List > To-Do Entries to match the output pane title. Change-Id: Ia37ff8a49b91a1db5773a0bd37f80b87ad1c8049 Reviewed-by: Leena Miettinen --- doc/src/projects/creator-projects-settings-overview.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/projects/creator-projects-settings-overview.qdoc b/doc/src/projects/creator-projects-settings-overview.qdoc index 82d6ccc8d04..24dc57d0818 100644 --- a/doc/src/projects/creator-projects-settings-overview.qdoc +++ b/doc/src/projects/creator-projects-settings-overview.qdoc @@ -97,7 +97,7 @@ \li \l{Using Clang Static Analyzer}{Clang Static Analyzer} - \li \l{To-Do List}{To-Do} (experimental) + \li \l{To-Do Entries}{To-Do} (experimental) \endlist From 4afb97f1af84938f613a28d08f8b28059a73d6dc Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 26 Jul 2016 10:25:25 +0200 Subject: [PATCH 24/86] QmlDesigner: Fix a typo in a property editor label Change-Id: I1b1cd8f402d379fc6db023ba1225757a7ca1099f Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/FlickableSection.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml index b172785ecd4..7a90e894136 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FlickableSection.qml @@ -51,7 +51,7 @@ Section { } Label { - text: "W" + text: "H" width: 12 } From dd3fa3021201ef9805359e102fa664893c662fab Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 26 Jul 2016 08:21:37 +0200 Subject: [PATCH 25/86] QmlProfiler: The local runner can spontaneously stop an application If the application outputs the "QML debugging is disabled" line (and Qt Creator can read it), the QmlProfilerRunControl will kill the application. In the test this happens if Qt Creator was compiled without QML debugging enabled. Change-Id: I958a991d304ec9af8643e88dd9709f580a28753f Reviewed-by: Christian Kandeler --- src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp index 34d5aacdd1e..d6785f5f9b3 100644 --- a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp +++ b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp @@ -105,9 +105,6 @@ void LocalQmlProfilerRunnerTest::testRunner() rc->start(); QTRY_COMPARE_WITH_TIMEOUT(runCount, 3, 10000); - QTest::qWait(1000); - QVERIFY(running); // verify it doesn't spontaneously stop - rc->stop(); QTRY_VERIFY_WITH_TIMEOUT(!running, 10000); From 9f3eaaf5e2e20502dcec9b8df984bf775c778f73 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 25 Jul 2016 18:50:13 +0200 Subject: [PATCH 26/86] Squish: Use shadow builds in tst_simple_analyze So MSVC2010 and MSVC2013 don't get in their way. Change-Id: Ie4696ce1afa695a6db109945ab506ce195322656 Reviewed-by: Christian Stenger --- .../suite_debugger/tst_simple_analyze/test.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/system/suite_debugger/tst_simple_analyze/test.py b/tests/system/suite_debugger/tst_simple_analyze/test.py index 53535e3490d..e1fcfecd392 100644 --- a/tests/system/suite_debugger/tst_simple_analyze/test.py +++ b/tests/system/suite_debugger/tst_simple_analyze/test.py @@ -65,7 +65,7 @@ def performTest(workingDir, projectName, targetCount, availableConfigs): # switching from MSVC to MinGW build will fail on the clean step of 'Rebuild All' because # of differences between MSVC's and MinGW's Makefile (so clean before switching kits) invokeMenuItem('Build', 'Clean Project "%s"' % projectName) - qtVersion = verifyBuildConfig(targetCount, kit, config, True, enableQmlDebug=True)[0] + qtVersion = verifyBuildConfig(targetCount, kit, config, True, True, True)[0] test.log("Selected kit using Qt %s" % qtVersion) # explicitly build before start debugging for adding the executable as allowed program to WinFW invokeMenuItem("Build", "Rebuild All") @@ -73,7 +73,13 @@ def performTest(workingDir, projectName, targetCount, availableConfigs): if not checkCompile(): test.fatal("Compile had errors... Skipping current build config") continue - allowAppThroughWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + switchViewTo(ViewConstants.PROJECTS) + switchToBuildOrRunSettingsFor(targetCount, kit, ProjectSettings.BUILD) + buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text), + "debug") + switchViewTo(ViewConstants.EDIT) + allowAppThroughWinFW(buildDir, projectName, None) switchViewTo(ViewConstants.DEBUG) selectFromCombo(":Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox", "QML Profiler") recordButton = waitForObject("{container=':DebugModeWidget.Toolbar_QDockWidget' " @@ -123,7 +129,8 @@ def performTest(workingDir, projectName, targetCount, availableConfigs): elif str(model.index(row, colCalls).data()) == "2": test.compare(model.index(row, colMedian).data(), model.index(row, colLongest).data(), "For two calls, median and longest time must be the same.") - deleteAppFromWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + deleteAppFromWinFW(buildDir, projectName, None) progressBarWait(15000, False) # wait for "Build" progressbar to disappear clickButton(waitForObject(":Analyzer Toolbar.Clear_QToolButton")) test.verify(waitFor("model.rowCount() == 0", 3000), "Analyzer results cleared.") From 980fd1b2195125561ddfc881e2ccc4d0cbf52d7b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 11:07:58 +0200 Subject: [PATCH 27/86] QmlDesigner: Avoiding possible regression We have a case of a crashing puppet, that might be related to QML2_IMPORT_PATH. Since this only affects packages and we only see the issue on a non developer machine, we just go back to the old behavior for now. Change-Id: I322cb5b02ff3b5a3dc27bab4767e6488686d216f Reviewed-by: Alessandro Portale --- .../qmldesigner/designercore/instances/puppetcreator.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index e4d5d724f38..7acc8f114da 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -379,7 +379,8 @@ QProcessEnvironment PuppetCreator::processEnvironment() const QStringList importPaths = m_model->importPaths(); if (m_availablePuppetType == FallbackPuppet) importPaths.append(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)); - environment.appendOrSet("QML2_IMPORT_PATH", importPaths.join(pathSep), pathSep); + if (m_availablePuppetType != FallbackPuppet) + environment.appendOrSet("QML2_IMPORT_PATH", importPaths.join(pathSep), pathSep); return environment.toProcessEnvironment(); } From 74f93fe5577c7806059b580022027a5efa981c95 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 11:54:24 +0200 Subject: [PATCH 28/86] QmlDesigner: Adding logging to PuppetCreator Change-Id: I9a0450b723ebca82439057e7839e19985da4a2d6 Reviewed-by: Tim Jenssen --- .../designercore/instances/puppetcreator.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 7acc8f114da..09bb5185ba2 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -48,10 +48,13 @@ #include #include #include +#include #include #include #include +static Q_LOGGING_CATEGORY(puppetStart, "puppet.start") +static Q_LOGGING_CATEGORY(puppetBuild, "puppet.build") namespace QmlDesigner { @@ -382,6 +385,11 @@ QProcessEnvironment PuppetCreator::processEnvironment() const if (m_availablePuppetType != FallbackPuppet) environment.appendOrSet("QML2_IMPORT_PATH", importPaths.join(pathSep), pathSep); + qCInfo(puppetStart) << Q_FUNC_INFO; + qCInfo(puppetStart) << "Puppet qrc mapping" << m_qrcMapping; + qCInfo(puppetStart) << "Puppet import paths:" << importPaths; + qCInfo(puppetStart) << "Puppet environment:" << environment.toStringList(); + return environment.toProcessEnvironment(); } @@ -454,6 +462,9 @@ bool PuppetCreator::startBuildProcess(const QString &buildDirectoryPath, process.waitForFinished(); + qCInfo(puppetBuild) << Q_FUNC_INFO; + qCInfo(puppetBuild) << m_compileLog; + if (process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0) return true; From 8f393efec07ecf3f56541df54de360f9e10b78b1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 13:06:50 +0200 Subject: [PATCH 29/86] Adding QmlDesigner highlight color to Theme Change-Id: I73d6ec3b7bff5e161de54a3287e3352435753234 Reviewed-by: Thomas Hartmann --- .../propertyEditorQmlSources/HelperWidgets/ColorLogic.qml | 4 ++-- .../propertyEditorQmlSources/HelperWidgets/Constants.js | 1 - share/qtcreator/themes/dark.creatortheme | 2 ++ share/qtcreator/themes/default.creatortheme | 2 ++ share/qtcreator/themes/flat-dark.creatortheme | 2 ++ share/qtcreator/themes/flat-light.creatortheme | 2 ++ share/qtcreator/themes/flat.creatortheme | 2 ++ src/libs/utils/theme/theme.h | 5 ++++- 8 files changed, 16 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml index 551899f93d1..f76a4becc45 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorLogic.qml @@ -40,7 +40,7 @@ QtObject { property bool highlight: textColor === __changedTextColor property color __defaultTextColor: creatorTheme.PanelTextColorLight - property color __changedTextColor: Constants.colorsChangedBaseText + readonly property color __changedTextColor: creatorTheme.QmlDesigner_HighlightColor onBackendValueChanged: { evaluate(); @@ -68,7 +68,7 @@ QtObject { if (baseStateFlag) { if (innerObject.backendValue.isInModel) - innerObject.textColor = Constants.colorsChangedBaseText + innerObject.textColor = __changedTextColor else innerObject.textColor = creatorTheme.PanelTextColorLight } else { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js index 7312b76238b..228bb1e4be7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/Constants.js @@ -28,5 +28,4 @@ var colorsDisabledText = "gray" var colorsDefaultText = "white" var colorsBoldText = "#dedede" -var colorsChangedBaseText = "#9999ff" var colorsChangedStateText = "#99ccff" diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme index 1a92bb54fbf..9c8435d6ee3 100644 --- a/share/qtcreator/themes/dark.creatortheme +++ b/share/qtcreator/themes/dark.creatortheme @@ -200,6 +200,8 @@ PaletteWindowTextDisabled=textDisabled PaletteBaseDisabled=backgroundColorDisabled PaletteTextDisabled=textDisabled +QmlDesigner_HighlightColor=ff9999ff + [Flags] ComboBoxDrawTextShadow=false DerivePaletteFromTheme=true diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme index 712a9685559..ab19084e397 100644 --- a/share/qtcreator/themes/default.creatortheme +++ b/share/qtcreator/themes/default.creatortheme @@ -171,6 +171,8 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 +QmlDesigner_HighlightColor=ff9999ff + [Flags] ComboBoxDrawTextShadow=true DerivePaletteFromTheme=false diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index bf2b98e8341..dcf81c33ed7 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -185,6 +185,8 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffff40 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffceff40 +QmlDesigner_HighlightColor=ff9999ff + PaletteWindow=normalBackground PaletteWindowText=text PaletteBase=normalBackground diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme index 24e47e19994..fbf129cd008 100644 --- a/share/qtcreator/themes/flat-light.creatortheme +++ b/share/qtcreator/themes/flat-light.creatortheme @@ -182,6 +182,8 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 +QmlDesigner_HighlightColor=ff9999ff + [Flags] ComboBoxDrawTextShadow=false DerivePaletteFromTheme=false diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme index 84850bed9ce..d08f760324f 100644 --- a/share/qtcreator/themes/flat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -181,6 +181,8 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 +QmlDesigner_HighlightColor=ff9999ff + [Flags] ComboBoxDrawTextShadow=false DerivePaletteFromTheme=false diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index 9358f11d282..a32e7b05533 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -279,7 +279,10 @@ public: /* ClangCodeModel Plugin */ ClangCodeModel_Error_TextMarkColor, - ClangCodeModel_Warning_TextMarkColor + ClangCodeModel_Warning_TextMarkColor, + + /* QmlDesigner */ + QmlDesigner_HighlightColor }; enum Gradient { From 5b3242b0b3fa3d833281fef1aedee9f818e2bc99 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jul 2016 09:29:33 +0200 Subject: [PATCH 30/86] Doc: Update icon names Add an image for an icon that consists of 2 masks, and therefore cannot be used directly from source. Change-Id: Iffcf274db1dc1444c894aabaa6452747f95089f8 Reviewed-by: Tim Jenssen --- doc/images/replace.png | Bin 0 -> 715 bytes doc/src/qtquick/creator-mobile-app-tutorial.qdoc | 2 +- doc/src/qtquick/qtquick-app-tutorial.qdoc | 4 ++-- doc/src/qtquick/qtquick-buttons.qdoc | 8 ++++---- doc/src/qtquick/qtquick-designer.qdoc | 2 +- doc/src/qtquick/qtquick-uiforms-tutorial.qdoc | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 doc/images/replace.png diff --git a/doc/images/replace.png b/doc/images/replace.png new file mode 100644 index 0000000000000000000000000000000000000000..d963646da9228e0ad4c0860e2cf953c01bceb778 GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0XBj({-ZRBb+K z1_lQ95>H=O_6O`DJlt~2wKkZ6g;oF&M`xzJ**g#rCGD~t&8CJZzq|U&=IL*_= zF~p*G>EykuUO9-g?*HR)L`{Q3j^*?fA)PObIwCc#dsU!%#1Y8Ao-{m{KDNbxMmsq!}jsNn?Q@m7tF4yckRAG~5 zHrr6D_mOX)$i$N=aVMhIiZQe$2CNKuQDRlF|NhZUIy28dpL8U_V8Z2>BFFuw`?EMI z$ji$sDJ^2YlV{#{T)F+Q;=Zl7-)_49K6Cr+Cq|9B7r#D__bywu i?)8jiorw}PO!Bwcx88E?W@lhvVDNPHb6Mw<&;$TVC>w Date: Tue, 26 Jul 2016 09:26:22 +0200 Subject: [PATCH 31/86] TextEditor: Remove declarations without definitions Change-Id: I92c9f054fb00e51d166d30424d735c76df5027f1 Reviewed-by: Tim Jenssen --- src/plugins/texteditor/codeassist/genericproposalmodel.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/texteditor/codeassist/genericproposalmodel.h b/src/plugins/texteditor/codeassist/genericproposalmodel.h index 07f04209fe2..7004770f198 100644 --- a/src/plugins/texteditor/codeassist/genericproposalmodel.h +++ b/src/plugins/texteditor/codeassist/genericproposalmodel.h @@ -63,8 +63,6 @@ public: virtual AssistProposalItemInterface *proposalItem(int index) const; void loadContent(const QList &items); - void setSortingAllowed(bool isAllowed); - bool isSortingAllowed() const; protected: QList m_currentItems; From 9d5705a755d747560440092747a9025c12ba7a72 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 26 Jul 2016 08:52:12 +0200 Subject: [PATCH 32/86] Clang: Stop trying to remove duplicate completion items We assume that libclang does not return any duplicates, at least we never noticed any so far. For the concrete test below no duplicates were removed. Function overloads are not problematic because they are folded into one ClangAssistProposalItem (addOverload()). To the completion items from libclang we add the Qt Creator snippets as items. Those might have the same text in the completion list view, but their icon is different (e.g. consider the keyword completion "class" and the Qt Creator snippet "class"), thus the user can still tell them apart. Test: 1. Open src/plugins/clangstaticanalyzer/unit-tests/qt-essential-includes.pro 2. Open main.cpp 3. Complete in the main function Measured with a timer in IpcReceiver::codeCompleted. On Linux, for 20637 completion items: Before: 74ms (avg) Now: 66ms (avg) Gain: 11% Change-Id: I524eaa09f8d9e07c78dc9efcc77f7e021c6f37f7 Reviewed-by: Tim Jenssen --- src/plugins/clangcodemodel/clangassistproposalmodel.cpp | 5 +++++ src/plugins/clangcodemodel/clangassistproposalmodel.h | 2 ++ src/plugins/texteditor/codeassist/genericproposalmodel.cpp | 6 +++++- src/plugins/texteditor/codeassist/genericproposalmodel.h | 1 + src/plugins/texteditor/codeassist/genericproposalwidget.cpp | 3 ++- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp index 06dc7b3198c..b134e8fea42 100644 --- a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp +++ b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp @@ -40,6 +40,11 @@ ClangAssistProposalModel::ClangAssistProposalModel( { } +bool ClangAssistProposalModel::containsDuplicates() const +{ + return false; +} + bool ClangAssistProposalModel::isSortable(const QString &/*prefix*/) const { return true; diff --git a/src/plugins/clangcodemodel/clangassistproposalmodel.h b/src/plugins/clangcodemodel/clangassistproposalmodel.h index 32b25bf9d00..6a722145139 100644 --- a/src/plugins/clangcodemodel/clangassistproposalmodel.h +++ b/src/plugins/clangcodemodel/clangassistproposalmodel.h @@ -39,6 +39,8 @@ class ClangAssistProposalModel : public TextEditor::GenericProposalModel public: ClangAssistProposalModel(ClangBackEnd::CompletionCorrection neededCorrection); + bool containsDuplicates() const override; + bool isSortable(const QString &prefix) const override; void sort(const QString &prefix) override; diff --git a/src/plugins/texteditor/codeassist/genericproposalmodel.cpp b/src/plugins/texteditor/codeassist/genericproposalmodel.cpp index 3b5e14e1faf..1afd0b8451f 100644 --- a/src/plugins/texteditor/codeassist/genericproposalmodel.cpp +++ b/src/plugins/texteditor/codeassist/genericproposalmodel.cpp @@ -170,7 +170,6 @@ QString GenericProposalModel::detail(int index) const return m_currentItems.at(index)->detail(); } -// make it optional because it is not needed in many cases void GenericProposalModel::removeDuplicates() { QHash unique; @@ -272,6 +271,11 @@ int GenericProposalModel::persistentId(int index) const return m_idByText.value(m_currentItems.at(index)->text()); } +bool GenericProposalModel::containsDuplicates() const +{ + return true; +} + bool GenericProposalModel::supportsPrefixExpansion() const { return true; diff --git a/src/plugins/texteditor/codeassist/genericproposalmodel.h b/src/plugins/texteditor/codeassist/genericproposalmodel.h index 7004770f198..d3ff31fb6f9 100644 --- a/src/plugins/texteditor/codeassist/genericproposalmodel.h +++ b/src/plugins/texteditor/codeassist/genericproposalmodel.h @@ -53,6 +53,7 @@ public: virtual QIcon icon(int index) const; virtual QString detail(int index) const; virtual int persistentId(int index) const; + virtual bool containsDuplicates() const; virtual void removeDuplicates(); virtual void filter(const QString &prefix); virtual bool isSortable(const QString &prefix) const; diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp index 2da949edee2..4a1e1eff671 100644 --- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp +++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp @@ -407,7 +407,8 @@ void GenericProposalWidget::setIsSynchronized(bool isSync) void GenericProposalWidget::showProposal(const QString &prefix) { ensurePolished(); - d->m_model->removeDuplicates(); + if (d->m_model->containsDuplicates()) + d->m_model->removeDuplicates(); if (!updateAndCheck(prefix)) return; show(); From 8f5059946261746880c4c6c3f2d826552e72412d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 14:25:03 +0200 Subject: [PATCH 33/86] QmlDesigner: Use QmlDesigner_HighlightColor consistently This fixes a couple of issue in the .css and we always use the same highlight color (QmlDesigner_HighlightColor). Change-Id: I6522eabc00c30399b2c3b2689256b970ec558719 Reviewed-by: Tim Jenssen --- .../statesEditorQmlSources/StatesDelegate.qml | 3 --- .../statesEditorQmlSources/StatesList.qml | 2 +- .../qmldesigner/components/resources/stylesheet.css | 12 +++--------- .../components/stateseditor/stateseditorwidget.cpp | 1 - .../connectioneditor/stylesheet.css | 6 +++--- 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml index 6e13ae4934c..07944f7699a 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml @@ -101,9 +101,6 @@ Rectangle { statesEditorModel.renameState(internalNodeId, text) } - // as we change the background we need to change the text - // color to see some text - textColor: creatorTheme.PanelTextColorLight } Item { diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml index 1f3fca6e108..57f7efe365f 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml @@ -147,7 +147,7 @@ FocusScope { height: delegateHeight isBaseState: 0 == internalNodeId isCurrentState: root.currentStateInternalId == internalNodeId - baseColor: isCurrentState ? Qt.darker(highlightColor, 1.2) : background.color + baseColor: isCurrentState ? creatorTheme.QmlDesigner_HighlightColor : background.color delegateStateName: stateName delegateStateImageSource: stateImageSource delegateStateImageSize: stateImageSize diff --git a/src/plugins/qmldesigner/components/resources/stylesheet.css b/src/plugins/qmldesigner/components/resources/stylesheet.css index f423f755591..15de3f502fd 100644 --- a/src/plugins/qmldesigner/components/resources/stylesheet.css +++ b/src/plugins/qmldesigner/components/resources/stylesheet.css @@ -59,19 +59,13 @@ QLineEdit#itemLibrarySearchInput QTreeView { color: creatorTheme.PanelTextColorLight; selection-color: creatorTheme.PanelTextColorLight; - } - - QTreeView::item:selected { - color: creatorTheme.PanelTextColorLight; + selection-background-color: creatorTheme.QmlDesigner_HighlightColor; } QListView { - color:creatorTheme.PanelTextColorLight; + color: creatorTheme.PanelTextColorLight; selection-color: creatorTheme.PanelTextColorLight; - } - - QListView::item:selected { - color: creatorTheme.PanelTextColorLight; + selection-background-color: creatorTheme.QmlDesigner_HighlightColor; } QComboBox QAbstractItemView { diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp index a525196d0a8..ae869763cd0 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp @@ -96,7 +96,6 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel); - rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); rootContext()->setContextProperty(QLatin1String("canAddNewStates"), true); diff --git a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/stylesheet.css b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/stylesheet.css index d3e884ae033..a5c28cb18eb 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/stylesheet.css +++ b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/stylesheet.css @@ -8,6 +8,9 @@ QFrame QTableView { color: creatorTheme.PanelTextColorLight; + selection-color: creatorTheme.PanelTextColorLight; + selection-background-color: creatorTheme.QmlDesigner_HighlightColor; + } QTableView::item @@ -24,12 +27,9 @@ QTableView::item:focus QTableView::item:selected { - background-color: qlineargradient(x1: 0, y1: -0.4, x2: 0, y2: 0.6,stop: 0 palette(midlight), stop: 1 palette(highlight)); - border: none } - QHeaderView::section { background-color: #494949; padding: 4px; From b496ac88321d096933f1a280c4f023a4da691683 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 14:26:18 +0200 Subject: [PATCH 34/86] QmlDesigner: Adjust QmlDesigner_HighlightColor I use the color from the flat style proposal. This color seems to work good enough in all themes. Change-Id: Ie543236fb578141bd3c1fb12c783597b26b12138 Reviewed-by: Tim Jenssen --- share/qtcreator/themes/dark.creatortheme | 2 +- share/qtcreator/themes/default.creatortheme | 2 +- share/qtcreator/themes/flat-dark.creatortheme | 2 +- share/qtcreator/themes/flat-light.creatortheme | 2 +- share/qtcreator/themes/flat.creatortheme | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme index 9c8435d6ee3..1963587a2bd 100644 --- a/share/qtcreator/themes/dark.creatortheme +++ b/share/qtcreator/themes/dark.creatortheme @@ -200,7 +200,7 @@ PaletteWindowTextDisabled=textDisabled PaletteBaseDisabled=backgroundColorDisabled PaletteTextDisabled=textDisabled -QmlDesigner_HighlightColor=ff9999ff +QmlDesigner_HighlightColor=ff46a2da [Flags] ComboBoxDrawTextShadow=false diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme index ab19084e397..da10636a8f5 100644 --- a/share/qtcreator/themes/default.creatortheme +++ b/share/qtcreator/themes/default.creatortheme @@ -171,7 +171,7 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 -QmlDesigner_HighlightColor=ff9999ff +QmlDesigner_HighlightColor=ff46a2da [Flags] ComboBoxDrawTextShadow=true diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index dcf81c33ed7..820b7fa8877 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -185,7 +185,7 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffff40 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffceff40 -QmlDesigner_HighlightColor=ff9999ff +QmlDesigner_HighlightColor=ff46a2da PaletteWindow=normalBackground PaletteWindowText=text diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme index fbf129cd008..6c8d65440ad 100644 --- a/share/qtcreator/themes/flat-light.creatortheme +++ b/share/qtcreator/themes/flat-light.creatortheme @@ -182,7 +182,7 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 -QmlDesigner_HighlightColor=ff9999ff +QmlDesigner_HighlightColor=ff46a2da [Flags] ComboBoxDrawTextShadow=false diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme index d08f760324f..2f49efef577 100644 --- a/share/qtcreator/themes/flat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -181,7 +181,7 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffa500 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffc6c132 -QmlDesigner_HighlightColor=ff9999ff +QmlDesigner_HighlightColor=ff46a2da [Flags] ComboBoxDrawTextShadow=false From 3e4cbdb69f44b233402e66fb6e1b6989de61c195 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 26 Jul 2016 15:14:11 +0200 Subject: [PATCH 35/86] QmlDesigner: Themable text alignment icons Change-Id: If499c4e131a0c56d24afb6ae355d1b8bd6338435 Reviewed-by: Thomas Hartmann --- .../AligmentHorizontalButtons.qml | 6 +- .../HelperWidgets/AligmentVerticalButtons.qml | 6 +- .../HelperWidgets/ButtonRowButton.qml | 1 + .../images/alignmentbottom-h-icon.png | Bin 91 -> 0 bytes .../images/alignmentbottom-icon.png | Bin 91 -> 0 bytes .../images/alignmentcenterh-h-icon.png | Bin 165 -> 0 bytes .../images/alignmentcenterh-icon.png | Bin 158 -> 0 bytes .../images/alignmentleft-h-icon.png | Bin 97 -> 0 bytes .../images/alignmentleft-icon.png | Bin 90 -> 0 bytes .../images/alignmentmiddle-h-icon.png | Bin 91 -> 0 bytes .../images/alignmentmiddle-icon.png | Bin 91 -> 0 bytes .../images/alignmentright-h-icon.png | Bin 184 -> 0 bytes .../images/alignmentright-icon.png | Bin 172 -> 0 bytes .../images/alignmenttop-h-icon.png | Bin 102 -> 0 bytes .../images/alignmenttop-icon.png | Bin 101 -> 0 bytes .../images/alignment_bottom.png | Bin 0 -> 91 bytes .../images/alignment_center.png | Bin 0 -> 105 bytes .../images/alignment_left.png | Bin 0 -> 103 bytes .../images/alignment_middle.png | Bin 0 -> 93 bytes .../images/alignment_right.png | Bin 0 -> 102 bytes .../qmleditorwidgets/images/alignment_top.png | Bin 0 -> 93 bytes src/libs/qmleditorwidgets/resources.qrc | 6 ++ .../componentcore/qmldesignericonprovider.cpp | 36 +++++++ src/tools/icons/qtcreatoricons.svg | 99 ++++++++++++++++++ 24 files changed, 148 insertions(+), 6 deletions(-) delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentleft-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentleft-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentmiddle-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentmiddle-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmenttop-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmenttop-icon.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_bottom.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_center.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_left.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_middle.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_right.png create mode 100644 src/libs/qmleditorwidgets/images/alignment_top.png diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml index 76de3d54ea9..560a8c88692 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml @@ -92,21 +92,21 @@ Row { ButtonRowButton { roundLeftButton: false - iconSource: blueHighlight ? "images/alignmentleft-h-icon.png" : "images/alignmentleft-icon.png" + iconSource: "image://icons/alignment-left" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignLeft") } } ButtonRowButton { - iconSource: blueHighlight ? "images/alignmentcenterh-h-icon.png" : "images/alignmentcenterh-icon.png" + iconSource: "image://icons/alignment-center" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignHCenter") } } ButtonRowButton { - iconSource: blueHighlight ? "images/alignmentright-h-icon.png" : "images/alignmentright-icon.png" + iconSource: "image://icons/alignment-right" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignRight") diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml index ba2b43721c5..62a17c8f38a 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml @@ -93,21 +93,21 @@ Row { ButtonRowButton { roundLeftButton: false - iconSource: blueHighlight ? "images/alignmenttop-h-icon.png" : "images/alignmenttop-icon.png" + iconSource: "image://icons/alignment-top" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignTop") } } ButtonRowButton { - iconSource: blueHighlight ? "images/alignmentmiddle-h-icon.png" : "images/alignmentmiddle-icon.png" + iconSource: "image://icons/alignment-middle" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignVCenter") } } ButtonRowButton { - iconSource: blueHighlight ? "images/alignmentbottom-h-icon.png" : "images/alignmentbottom-icon.png" + iconSource: "image://icons/alignment-bottom" + (blueHighlight ? "-h" : "") onClicked: { if (checked) backendValue.setEnumeration("Text", "AlignBottom") diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index 61975a69463..f414ceadad6 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -86,6 +86,7 @@ Item { id: image width: 16 height: 16 + smooth: false anchors.centerIn: parent } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-h-icon.png deleted file mode 100644 index 6ebf5b67d483db62d821df01d720caddba2e7fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJolssJ=Lp+WrCrGd^P7vv7 t3N+wyJGg*ZaW4P=VCMcd6;B3+&`d*b^&LmvF)%PNc)I$ztaD0e0sxVe7nT43 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentbottom-icon.png deleted file mode 100644 index 99344eb3055fe1d3d14ad0614483ce503ea59a86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJolssJ=Lp+WrCrGd^P7vv7 r3N+wyJGg+k{@>sK{=7C)lT;WPPJ6f)zUjUVQqAD$>gTe~DWM4f&-NM~ diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-h-icon.png deleted file mode 100644 index 2f31cb90c573cbf661ec1819c966699b0c6ca189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pU=ZM7V_;yAX48*hU|`7cba4!^IKB4LZr%n1 z9+nHzlcv>hWHzYTmnHb9F*c>Rc<*?$)7o2II#qYYu3Y;l4>`+pu6v70dap$-dgtKN z$)w2Eb$=_%v(!Zm-{&#qmGrMKy%%}oV9i#OS=tYHPc&x V`^V$b7#J8BJYD@<);T3K0RY_=I!6Ei diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentcenterh-icon.png deleted file mode 100644 index 30279b6907cde24a7aaa2692298d3cdcd32d9237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pU=ZM7V_;yAX48*hU|>k~ba4!^IKB3gH(!GS z56gv}D_C93UbVgd8t7w?*E;jb#@TATu6mNbvOe#Xm%1F37J0wiZ`oOgj)_cm6ONxfq_B8)5S5w;&d{{%bFka zMa~$QFs{5Ov*@0zTb$zc*@rd4+80jO_^PJJ!@&3XM#vt1(Q^z83=E#GelF{r5}E+D CJ{=kW diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentleft-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentleft-icon.png deleted file mode 100644 index 9cb8bef8abcfbf0727584e78b47df7f2277c8285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yU=U_tU=ZM7VPIg0JKOV;fq_BM)5S4F<9zauerAIU vLVu1kzev$!u02rC)X+DLZ-c)g1H-k%xye5dEmdV;U|{fc^>bP0l+XkK<@Xw5 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentmiddle-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentmiddle-h-icon.png deleted file mode 100644 index 7b54c5b676c7dcd5a5f98fe36d75de7c0b506179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJolssJ=Lp+WrCrGd^P7vv7 ta%6L|lK;1yO^)|upaGW~V57= diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-h-icon.png deleted file mode 100644 index 8ddd089e338bb47422489cddfa7fd1696480a743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0y~yU=U_tU=ZM7V_;zTa>ONxfq|jk)5S5w;`GvswtUS7 zBFqW$o3wu_rf7OA@V`4?SUst%dxG|aq_+I6^S^F*E4^+{-}&wAXMB!5?LQ>3>gN1= zmATKNR`>KD*raE~=dQW*^xHF)b*Fc5Sf)$1EBmet+= q&R+J}@7U3TybFOp9`n!p%b>OSeG6N*ZWRLq1B0ilpUXO@geCyZtV%)v diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmentright-icon.png deleted file mode 100644 index f97d371d6a3df4d0831f96347ebdef7180025e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0y~yU=U_tU=ZM7V_;zTa>ONxfq|je)5S5w;`Gvs-h2%T z0?ZfULhO{J?=Dzy-Tkh_Wfx(u$;USt3vZCO-go8Lf+sko>|xM z@CsIyNP$Z~KiHdo$dKuYGRQi(f_1SNh{1SLf`RwWR_TwzmliWHFfe$!`njxgN@xNA Dd;K5G diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmenttop-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/alignmenttop-icon.png deleted file mode 100644 index 1d3bb8ec72e0f3d9ab36fafafbecbf31043cadf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJobUa-gLp+YZy||H=fq|pt z!2S9(<#P#(WLdw8vYbd4j9|Q4Fp-}H46gBB{Ce8anz1_lNOPgg&ebxsLQ0Q=P) ACjbBd diff --git a/src/libs/qmleditorwidgets/images/alignment_bottom.png b/src/libs/qmleditorwidgets/images/alignment_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..71c641633ada8f7315826e086a2788c7296b7e48 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b rNZQlIF@!@l`OobP0l+XkKW`GxJ literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/alignment_center.png b/src/libs/qmleditorwidgets/images/alignment_center.png new file mode 100644 index 0000000000000000000000000000000000000000..a27ce588c723f75dcf3b4f730a0399e0fc95d59f GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b z0|SGcr;B3gTe~DWM4fjx`sS literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/alignment_right.png b/src/libs/qmleditorwidgets/images/alignment_right.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6555a356b5409fab86fe66489e691d0c091ec3 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b z0|SG!r;B3u{Suz-Xg-_@=v@oW2$&L0|Nttr>mdKI;Vst E0IE+L+W-In literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/alignment_top.png b/src/libs/qmleditorwidgets/images/alignment_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2d692a766b036d426778b3c82935f1888f2eb714 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdMrH;E236Z!B?bltwg8_HR|W=#|Ns9ly*d9b v0|SGQr;B3CDifCcymQ+*fx71_lOCS3j3^P6images/anchor_vertical@2x.png images/anchoreditem.png images/anchoreditem@2x.png + images/alignment_center.png + images/alignment_left.png + images/alignment_right.png + images/alignment_bottom.png + images/alignment_middle.png + images/alignment_top.png diff --git a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp index 9693d5f1f50..08d22e44a21 100644 --- a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp +++ b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp @@ -111,6 +111,42 @@ QPixmap QmlDesignerIconProvider::requestPixmap(const QString &id, QSize *size, c else if (id == "anchor-fill") result = Icon({ { ":/qmldesigner/images/anchor_fill.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-left") + result = Icon({ + { ":/qmldesigner/images/alignment_left.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-left-h") + result = Icon({ + { ":/qmldesigner/images/alignment_left.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-center") + result = Icon({ + { ":/qmldesigner/images/alignment_center.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-center-h") + result = Icon({ + { ":/qmldesigner/images/alignment_center.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-right") + result = Icon({ + { ":/qmldesigner/images/alignment_right.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-right-h") + result = Icon({ + { ":/qmldesigner/images/alignment_right.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-top") + result = Icon({ + { ":/qmldesigner/images/alignment_top.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-top-h") + result = Icon({ + { ":/qmldesigner/images/alignment_top.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-middle") + result = Icon({ + { ":/qmldesigner/images/alignment_middle.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-middle-h") + result = Icon({ + { ":/qmldesigner/images/alignment_middle.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-bottom") + result = Icon({ + { ":/qmldesigner/images/alignment_bottom.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "alignment-bottom-h") + result = Icon({ + { ":/qmldesigner/images/alignment_bottom.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); else qWarning() << Q_FUNC_INFO << "Image not found:" << id; diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index 9e9bf7deb62..12e27fa62f7 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -1795,6 +1795,105 @@ width="100%" height="100%" /> + + + + + + + + + + + + + + + + + + + + + Date: Tue, 26 Jul 2016 18:17:11 +0200 Subject: [PATCH 36/86] Core: Fix initially visible progress bar Call updateVisibility() in ProgressManagerPrivate::init() to ensure that it is really invisible when launching Qt Creator. Also make sure that the opacity for the visible progress bar is 1.0 instead of 0.7 (which is the default opacity in QGraphicsOpacityEffect). Task-number: QTCREATORBUG-16003 Change-Id: Ic268d903ce624c9e0b4c11e213002a22be1fba63 Reviewed-by: hjk --- src/plugins/coreplugin/progressmanager/progressmanager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index 9254997c18a..3b3c1cf6fc4 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -273,6 +273,7 @@ ProgressManagerPrivate::ProgressManagerPrivate() m_progressViewPinned(false), m_hovered(false) { + m_opacityEffect->setOpacity(1); m_instance = this; m_progressView = new ProgressView; // withDelay, so the statusBarWidget has the chance to get the enter event @@ -346,7 +347,7 @@ void ProgressManagerPrivate::init() this, &ProgressManagerPrivate::progressDetailsToggled); toggleButton->setDefaultAction(cmd->action()); - m_progressView->setVisible(m_progressViewPinned); + updateVisibility(); initInternal(); } From 02be113ce3a67601764fd756337cfd0424b2567a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 16:07:48 +0200 Subject: [PATCH 37/86] QmlDesigner.PropertyEditor: Exchange colors for buttons This way the button and button states are easier to grasp. Change-Id: I78421fd5da7a879b728e5aece3ed29c61d7d2c17 Reviewed-by: Alessandro Portale --- .../HelperWidgets/ButtonRowButton.qml | 4 ++-- .../propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index f414ceadad6..ef134a1a554 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -69,7 +69,7 @@ Item { anchors.fill: parent visible: checked - color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate + color: creatorTheme.QmlDesignerBackgroundColorDarker } RoundedPanel { @@ -78,7 +78,7 @@ Item { anchors.fill: parent visible: !checked - color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml index ca9f423307b..6f5afaa5a97 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml @@ -43,7 +43,7 @@ Rectangle { */ border.width: roundLeft || roundRight ? 1 : 0 - color: creatorTheme.BackgroundColorDark + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate border.color: creatorTheme.QmlDesignerBackgroundColorDarker Rectangle { From fb9638f8c94092e8ba6f67e2ec45fe47b925b471 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 26 Jul 2016 15:49:51 +0200 Subject: [PATCH 38/86] QmlDesigner.PropertyEditor: Fix resetting of alignment This change makes sure that the default horizontal or vertical alignment is selected after resetting it. Change-Id: I057a8f0a0c1c343c89902c38ec4d39828deaaef3 Reviewed-by: Alessandro Portale --- .../HelperWidgets/AligmentHorizontalButtons.qml | 2 ++ .../HelperWidgets/AligmentVerticalButtons.qml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml index 560a8c88692..7e777ec678f 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml @@ -48,6 +48,8 @@ Row { property bool baseStateFlag: isBaseState; onValueChanged: { + buttonRow.initalChecked = 0 + buttonRow.checkedIndex = 0 if (value !== undefined) { if (value === "AlignLeft") { buttonRow.initalChecked = 0 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml index 62a17c8f38a..b36d93656c7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml @@ -49,6 +49,8 @@ Row { property bool baseStateFlag: isBaseState; onValueChanged: { + buttonRow.initalChecked = 0 + buttonRow.checkedIndex = 0 if (value !== undefined) { if (value === "AlignTop") { buttonRow.initalChecked = 0 From 3752a67de78b227f46d1a93d4595fd5b4084cf3b Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 26 Jul 2016 17:26:00 +0200 Subject: [PATCH 39/86] QmlDesigner: Themable and HighDPI Text style icons Change-Id: Ib677d38d660b631a235c00c1e37590780aadb252 Reviewed-by: Thomas Hartmann --- .../HelperWidgets/FontStyleButtons.qml | 16 ++-- .../HelperWidgets/images/bold-h-icon.png | Bin 247 -> 0 bytes .../HelperWidgets/images/bold-icon.png | Bin 247 -> 0 bytes .../HelperWidgets/images/italic-h-icon.png | Bin 218 -> 0 bytes .../HelperWidgets/images/italic-icon.png | Bin 218 -> 0 bytes .../HelperWidgets/images/strikeout-h-icon.png | Bin 314 -> 0 bytes .../HelperWidgets/images/strikeout-icon.png | Bin 314 -> 0 bytes .../HelperWidgets/images/underline-h-icon.png | Bin 206 -> 0 bytes .../HelperWidgets/images/underline-icon.png | Bin 207 -> 0 bytes .../qmleditorwidgets/images/style_bold.png | Bin 0 -> 194 bytes .../qmleditorwidgets/images/style_bold@2x.png | Bin 0 -> 332 bytes .../qmleditorwidgets/images/style_italic.png | Bin 0 -> 150 bytes .../images/style_italic@2x.png | Bin 0 -> 256 bytes .../images/style_strikeout.png | Bin 0 -> 201 bytes .../images/style_strikeout@2x.png | Bin 0 -> 377 bytes .../images/style_underline.png | Bin 0 -> 185 bytes .../images/style_underline@2x.png | Bin 0 -> 319 bytes src/libs/qmleditorwidgets/resources.qrc | 8 ++ .../componentcore/qmldesignericonprovider.cpp | 24 ++++++ src/tools/icons/qtcreatoricons.svg | 81 ++++++++++++++++++ 20 files changed, 121 insertions(+), 8 deletions(-) delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/bold-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/bold-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/underline-h-icon.png delete mode 100644 share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/underline-icon.png create mode 100644 src/libs/qmleditorwidgets/images/style_bold.png create mode 100644 src/libs/qmleditorwidgets/images/style_bold@2x.png create mode 100644 src/libs/qmleditorwidgets/images/style_italic.png create mode 100644 src/libs/qmleditorwidgets/images/style_italic@2x.png create mode 100644 src/libs/qmleditorwidgets/images/style_strikeout.png create mode 100644 src/libs/qmleditorwidgets/images/style_strikeout@2x.png create mode 100644 src/libs/qmleditorwidgets/images/style_underline.png create mode 100644 src/libs/qmleditorwidgets/images/style_underline@2x.png diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontStyleButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontStyleButtons.qml index 4ab413a0871..23e5db53e5f 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontStyleButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontStyleButtons.qml @@ -34,24 +34,24 @@ ButtonRow { property variant strikeout: backendValues.font_strikeout BoolButtonRowButton { - standardIconSource: "images/bold-icon.png" - highlightedIconSource: "images/bold-h-icon.png" + standardIconSource: "image://icons/style-bold" + highlightedIconSource: "image://icons/style-bold-h" backendValue: bold } BoolButtonRowButton { - standardIconSource: "images/italic-icon.png" - highlightedIconSource: "images/italic-h-icon.png" + standardIconSource: "image://icons/style-italic" + highlightedIconSource: "image://icons/style-italic-h" backendValue: italic } BoolButtonRowButton { - standardIconSource: "images/underline-icon.png" - highlightedIconSource: "images/underline-h-icon.png" + standardIconSource: "image://icons/style-underline" + highlightedIconSource: "image://icons/style-underline-h" backendValue: underline } BoolButtonRowButton { - standardIconSource: "images/strikeout-icon.png" - highlightedIconSource: "images/strikeout-h-icon.png" + standardIconSource: "image://icons/style-strikeout" + highlightedIconSource: "image://icons/style-strikeout-h" backendValue: strikeout } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/bold-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/bold-h-icon.png deleted file mode 100644 index fc65042bc924f86aa9cce1975acdb3e19cd882b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0y~yU=U+qV36QoV_;zTw~yDGfq`M4r;B5V$MNI@3Dy!; z#oGS=!j1nKK3Xf-aUS7y(DB*E8epiVAjbYkLZPlxPpRxs4F7O=rGeynZO+kzysahef zQ{}&8hxZDhV*#d@FJ5^Xa5^E?q_liRs)6>bUGuLPMacQywat>e)4FV3=cJH>>_?_K z*s%MawNgl1Zu0jZ+aq&_8nKRarj4gFT8#}D82aUR7Bqe~&SYRsRrV+ zX7yh&nj!9cRy<2mrg2%C>C%bnoJTSp{xEvh$qRG`7~gCRayAzD96aleL}LU)$J@pV z)k%NS74#N*NjP8iaSxvEtlK>G;+4A#ryX3A@v1K9bV8*`>Gu_>1>&=Isd)vl$_qp@ zeUvdVecdo)?xiokr9193e2i3>$9Y6=vFN!23=BH{ZR}y5DVG@-7#KWV{an^LB{Ts5 DA=h3+ diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-h-icon.png deleted file mode 100644 index 91ba0067fe484ad7db7cb12a1b26177312eb423c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3V36QoV_;x7XC#xwz`(H3)5S5w;&gI?#2FVdQ&MBb@00!1j-v9sr diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/italic-icon.png deleted file mode 100644 index 20e3e37977f9cd716f91a12a21208785c0e2cf0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3V36QoV_;x7XC#xwz`(H3)5S5w;&gI?#GeP} z_y6y4IMc}c_>ut2k^dVX@GBhNkokZuNmAimi`E_1r`^Iux3pHYsU`g_Vqc}$AaV4M z!yo=tj`JjV`2vpSca-`Gh8)gIGSz9!dZ7|_*mOl3N0LY}|Avm)-WA;_hkos3U|?YIboFyt=akR{0Kv>p;s5{u diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-h-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-h-icon.png deleted file mode 100644 index 523ca7b389167f46019b6b99ca35783dca40f3ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pV36QoV_;zT9=g_$fq{|H)5S5w;&gI?1glE( zgnh?j9AbEmxHtUJ75LBi$lswxvST_^p_#yH0V5Zoj(i8xXG|M)1U54m+6!1SevDK2 z$A74WCyFUlqRCk<u|4F^~r zg*)6~JmThX#-lH>Fu?hr@M8Tk{v-@9hVz^m`q}vIc3=& zy%mn;oRt%&H#j;4l;m>okIp*GVK}vCF{|E728PPds*C;3 Td+ugnU|{fc^>bP0l+XkKtO#&b diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-icon.png b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/images/strikeout-icon.png deleted file mode 100644 index 70ce08597c983313442b04e11cdd3f1865d810f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pV36QoV_;zT9=g_$fq{|H)5S5w;&gI?1glE3 z{r`W(jD>~*@{EtRJN#kquxI?3su0I@$>9vskv|S^SdLUT z{;=l|Hp<`(N#x+GoUqWn)9{7t6$L+=tUn!wFVwFnNZMqzbQ->}xw7D^!x>-C9@m3R z!X5F9h3o>-jE2gVZATq>fA+W7Gknxj&|^swteN$Ha>M>b-4h>qX)5?JKf3I}mJ&4U z)9wXqcU7La#xb#RI$r&&lrlk?vAJU5t9e3398>1c__*R^0sZ^!4x3RQvl#%1yoj>$Xx;pi}DE@aa9+$XkU2{VJtl&r@c=fcD?v7CJZT@b$5?d2EA{dVJuv{^mn0=6c1*;9qm5)px%Zqe&@NadP++dYE zA*x6xf_JMzYr`%Rg*fj%*17<0J!V5|K2sTo8qtpC6S|Sl9ds=jkKA+6;W?rcaErae zpYdaoSND4cg?kJ~`WFiR7w(wP^f66=PgZIwuVuxLkb?{gXaC)9DHAxvz`(%Z>FVdQ I&MBb@00 zE7-9f>DJWU$J|iCEMVW}_QzkLj_b(mMvIb+5VI!_9tN{AGsM)CvBl1h@L*tIVDNPH Kb6Mw<&;$S&R!LC+ diff --git a/src/libs/qmleditorwidgets/images/style_bold.png b/src/libs/qmleditorwidgets/images/style_bold.png new file mode 100644 index 0000000000000000000000000000000000000000..75632cc838c67f01882914a150d36e802a5692ab GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4h9AW2CEqh_A)Rqbb7ithDd}b|LA9v`1k+5 z-1!3s5|%40i2J~%^x?m`G4tX3|Ggz7ztlUi{Nrw9`8V6hU`-1bM>Fdl2?;et?i#Vw z2fNw@EViGUbMon(`WA;p*4rb_ZT){DO75i5hCDaJ5+UYhp{@gd3x4lY-kog3+-!Ad wsri^KaYHCB+IoTPyCm5U=7@Wgaoqzu{E*RuEPgg&ebxsLQ06PRs<^TWy literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/style_bold@2x.png b/src/libs/qmleditorwidgets/images/style_bold@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3ddf0c0db6fac4c0d0b103a44a07b0ff89526d6a GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2AVNVyw5R22vKl~XC1ePZ3 zo~yzvQ_!V3`?%hZt~@7pmu)+3;v~;ZxZkwwfx30XAMpu0LwSxQ#q~d9%iPiQ|M*Nt zpLOXgxIzTD{{3#ad2|KWl?fsxO*h+ih@N5J%vzxRf^GBFLTwI)&Dw=p7RQ;Av}zA5 zeIRh-__hB3$-x_P+_tI;Gc&I~{;U4~My-aX3BLFLC5IQ}d|y=*TVS!w=2!n|-umAX zjz0hP?${g2lvaHI*vbdC;xmLBgAe|9=n$+g(9&qDcqZw`nkvBhzEF#UtvF?)%8dI7 z-_r98mP>_C`aPdHZFSADNg4gjGwr($GA{kcpt|6e!nsMS-uVbJsxN=_{)FUlG0n#Y lA5KT5>Hl|&y0&;N6N7r=YB9$BTQ`D&$Si#h-R literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/style_italic.png b/src/libs/qmleditorwidgets/images/style_italic.png new file mode 100644 index 0000000000000000000000000000000000000000..5c421dbca4a11ea5ee415d28432d028f33896633 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4h9AW2CEqh_A)Rq#Cp0ohDc0J{?X4SvEYkU zHrvB@=RKJI@0NJBc*PI-gC7N5AFQ8Yy-ISqw1^{`b) zqsugY4W|97IRSI`O+UtC~&_AWTB_4pUXO@geCx6 CXf}WV literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/style_italic@2x.png b/src/libs/qmleditorwidgets/images/style_italic@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cbbeb2634932ee385f847196e532d5f6bc8e7b2c GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2=#Ar`%RFDmLBDU@J) zaJ;8i^7dPnPM;m;(ySvV<|ujYD+=Anxv0Q3h($VbVs2X6WfjMu7U|!``%fSHZ+dk0 z{Mz@sYftHabT8Op!YGw(UMeo9zVR}@sP41X8xk)h==atfsAY23nZk1IrtgE=uFoub zlJ&j|oOi2iIN`|Tzr%aM@jD8QyxY7PuJSDBj4}K*$zl4_Ne-`HtM6}oF1SwEV%g7` z2h^ff8@6XwamG9_Ycxv^wO#S;;TpaNAFDdJLR*vMT`7{?O$wV+XxXV2&Vf8C9~ z_**bHAC2rNbzo#mVc7cZ|NreTeRyWcCq^BZb^e5r$w8J?2fF$USq`u~;%_=3@AI>O zap`G?P0?R8eHLsudD!;at#3AWWal@$n*XP1H?t@M1GniJsYho&$AjGH>FVdQ&MBb@ E0P{{!;2Zv6k{yW1Hb0$J$&cn2h|Ga6j zm(mgrgnT$Z!||v3l)s+B-A%zfJVy&I>lr6%%{X&lLVrQO`m!c7Hnykl3s}1iM0HrI z4F2)=lrsk(EDl@1wS2jO`uYQ3(yTNl{Mc3hkmuETHU&{0soe#~j#^u9;9|QkEx{#G zz?3Aa(0KM#0_U^J8<&{{{>(bS9CWZmVmed8CJv^R29Dt$9&k8$%6l9YHDRrGn#kkH zq!rP%&VkAEpzMOCnJ>5`zA3JJkeqO%ap3`B#s8f%8=p(JF}0bcgkSrAJmi4DcRs18 zH#}wb2BIgJCs&{Ov$tLRm$A{0`U4y%Z3X||Uwb-)sg+^%-(U4JF8=*yH>0X5@&8hN fi%ZO94m+6`>Teqa3g`rNfx^_&)z4*}Q$iB}D72b2 literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/style_underline.png b/src/libs/qmleditorwidgets/images/style_underline.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaa067427ee48474b0cb5d5541c9f6c35bc4970 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4h9AW2CEqh_A)RqGgS*!k+&5a#@SkD#%j3EGuI+RIxyjSj&t;ucLK6T*SVznN literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/images/style_underline@2x.png b/src/libs/qmleditorwidgets/images/style_underline@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..96a32ef897eed6657bf76ba5f45923c1a766cf4f GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4h9AWhA=@@4F(2AHcuDF5R22vKl~XC1QseB z4vi9EX*uf@@5D0O_NgNin_~I`HJhuc2?-A@o0q&_EY0kE+rCBAxRGm7pwGS23p(Dk z&2?b))!=$(^g~J8f;+^3(e+?-n??$&cmtQ(LX95>1k6`41Rr#D;>t_Xs5m&GY0U${ z07v7lrf8m{C%Eo0h>9%GusD37W6c9~V`gWbuBN#>!GV{Ss4+K-b~VMd32SgIl90Hu zUs=20*^kae3EUS1H&1->-LP$;+VA>vJUo;5AADNwx-);_)9&4)T V<@q&*q?vd$@?2>|qPc5(m! literal 0 HcmV?d00001 diff --git a/src/libs/qmleditorwidgets/resources.qrc b/src/libs/qmleditorwidgets/resources.qrc index 08e8af4ab1b..5c7164c7b8e 100644 --- a/src/libs/qmleditorwidgets/resources.qrc +++ b/src/libs/qmleditorwidgets/resources.qrc @@ -61,5 +61,13 @@ images/alignment_bottom.png images/alignment_middle.png images/alignment_top.png + images/style_bold.png + images/style_bold@2x.png + images/style_italic.png + images/style_italic@2x.png + images/style_underline.png + images/style_underline@2x.png + images/style_strikeout.png + images/style_strikeout@2x.png diff --git a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp index 08d22e44a21..6efb9c8d5e8 100644 --- a/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp +++ b/src/plugins/qmldesigner/components/componentcore/qmldesignericonprovider.cpp @@ -147,6 +147,30 @@ QPixmap QmlDesignerIconProvider::requestPixmap(const QString &id, QSize *size, c else if (id == "alignment-bottom-h") result = Icon({ { ":/qmldesigner/images/alignment_bottom.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "style-bold") + result = Icon({ + { ":/qmldesigner/images/style_bold.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "style-bold-h") + result = Icon({ + { ":/qmldesigner/images/style_bold.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "style-italic") + result = Icon({ + { ":/qmldesigner/images/style_italic.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "style-italic-h") + result = Icon({ + { ":/qmldesigner/images/style_italic.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "style-underline") + result = Icon({ + { ":/qmldesigner/images/style_underline.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "style-underline-h") + result = Icon({ + { ":/qmldesigner/images/style_underline.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); + else if (id == "style-strikeout") + result = Icon({ + { ":/qmldesigner/images/style_strikeout.png", Theme::IconsBaseColor}}, Icon::Tint).pixmap(); + else if (id == "style-strikeout-h") + result = Icon({ + { ":/qmldesigner/images/style_strikeout.png", Theme::QmlDesigner_HighlightColor}}, Icon::Tint).pixmap(); else qWarning() << Q_FUNC_INFO << "Image not found:" << id; diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index 12e27fa62f7..5973cedc54e 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -5964,5 +5964,86 @@ id="rect5583" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" /> + + + + + + + + + + + + + + + + + + From a5b0525b79555439a4138e9a9c44f60518feed51 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 21 Jul 2016 18:03:40 +0200 Subject: [PATCH 40/86] QML Debugger: Don't pretend the engine is interrupted when it isn't After sending the interrupt request the application will continue to the next line of JavaScript and only interrupt then. There is no way to interrupt the application via the JS debugger as long as no JS engine is active. The downside of this is that the pause/continue/stop icons are disabled until the application actually interrupts. The user might not understand this. Change-Id: I355de52f65898d6bdcd437675adba368662f3c13 Task-number: QTCREATORBUG-16646 Reviewed-by: hjk --- src/plugins/debugger/qml/qmlengine.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 26a6661a8bf..a50c319af92 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -661,7 +661,7 @@ void QmlEngine::interruptInferior() { showMessage(INTERRUPT, LogInput); d->runDirectCommand(INTERRUPT); - notifyInferiorStopOk(); + showStatusMessage(tr("Waiting for JavaScript engine to interrupt on next statement.")); } void QmlEngine::executeStep() @@ -1966,7 +1966,8 @@ void QmlEnginePrivate::messageReceived(const QByteArray &data) } engine->notifyInferiorSpontaneousStop(); backtrace(); - } else if (engine->state() == InferiorStopOk) { + } else if (engine->state() == InferiorStopRequested) { + engine->notifyInferiorStopOk(); backtrace(); } } From 87db5ba69f944032ac5937a507641049cce94fa6 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jul 2016 16:12:24 +0200 Subject: [PATCH 41/86] Doc: Add docs for "Import as qmake Project" wizard Change-Id: I38bcf939a9092c7f77d2b0839df4477e68462101 Reviewed-by: hjk --- doc/src/projects/creator-projects-creating.qdoc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index 17ada481095..b8c29a366eb 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -241,6 +241,15 @@ information on how version control systems are integrated in \QC, see \l{Using Version Control Systems} + \li Import as qmake Project + + Import an existing project that does not use any of the supported + build systems: qmake, Qbs, CMake, or Autotools. The wizard creates + a qmake .pro file, which enables you to use \QC as a code editor and + as a launcher for debugging and analysis tools. However, if you want + to build the project, you might need to edit the generated .pro + file. + \li Import Existing Project Import an existing project that does not use any of the supported From 4ae368ddbb110fea4280541072d4f02fe2e6ed7a Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 26 Jul 2016 11:32:37 +0200 Subject: [PATCH 42/86] Clang: Set limit for sorting completion items Having *some* limit is reasonable since sorting happens in the UI thread and given enough includes/symbols it will freeze sooner or later. The strategy is now: Stop sorting at all if there are more than 30.000 completion items to process. The limit is a guess made on the following measurements. The goal is to keep below 100ms. test | items | before | now -----+----------------------- Cpp1 | 6394 | 172ms | 15ms | Win1 | 44739 | 125ms | 56ms | Qtc1 | 9648, | 16ms | 15ms | Qtc2 | 10210 | 20ms | 16ms | Qtc3 | 51044 | 141ms | 63ms | Qt1 | 62953 | 172ms | 78ms | Windows.h alone pulls in about 44.000 completion items. Used test procedure ------------------- For each test below, do: 1. Start Qt Creator in release mode 2. Open/create the project with a MSVC2015 Kit 3. Open the mentioned file 4. Strg+Space in the mentioned function Measured with a timer in IpcReceiver::codeCompleted. Test projects: Cpp1: stdc++11-includes.pro, main.cpp, main() Win1: Create project from wizard, *.cpp file including windows.h, completion in some added function Qtc1: qtcreator.pro, texteditor.cpp, BaseTextEditor::duplicate() Qtc2: qtcreator.pro, fakevimhandler.cpp, FakeVimHandler::jumpToLocalMark Qtc3: qtcreator.pro, botan.cpp, version_string() Qt1: qt-essential-includes.pro, main.cpp, main() Change-Id: I6fbd65d14f6086f289be7dd6c24385996e4bde83 Reviewed-by: Tim Jenssen Reviewed-by: Alessandro Portale --- src/plugins/clangcodemodel/clangassistproposalmodel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp index b134e8fea42..c2adf179b74 100644 --- a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp +++ b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp @@ -34,6 +34,8 @@ namespace ClangCodeModel { namespace Internal { +const int SORT_LIMIT = 30000; + ClangAssistProposalModel::ClangAssistProposalModel( ClangBackEnd::CompletionCorrection neededCorrection) : m_neededCorrection(neededCorrection) @@ -47,7 +49,7 @@ bool ClangAssistProposalModel::containsDuplicates() const bool ClangAssistProposalModel::isSortable(const QString &/*prefix*/) const { - return true; + return m_currentItems.size() <= SORT_LIMIT; } void ClangAssistProposalModel::sort(const QString &/*prefix*/) From 909f81509833c857d2a92a5b9a5aed76c4a07ce6 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 27 Jul 2016 10:56:39 +0200 Subject: [PATCH 43/86] Doc: Java class wizard Change-Id: I65a68dca5c2f1db578c250bcbac7fc06951a8355 Reviewed-by: hjk --- doc/src/projects/creator-projects-creating.qdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index b8c29a366eb..91becd0bd52 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -331,6 +331,10 @@ \endlist + \li Java + + Java class files that you can use to create Java classes. + \li Python Python class and source files that you can use to create Python From 84f84890fd83f33b72c97f333e460870c853261c Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 26 Jul 2016 13:19:22 +0200 Subject: [PATCH 44/86] Squish: Use shadow builds in tst_debug_empty_main So MSVC2010 and MSVC2013 don't get in their way. Change-Id: Idb248e86dbe904e2f3867d793b80119f7e2dc31c Reviewed-by: Christian Stenger --- .../tst_debug_empty_main/test.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py index c06dcefc262..f371b5ec22d 100644 --- a/tests/system/suite_debugger/tst_debug_empty_main/test.py +++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py @@ -55,7 +55,7 @@ def main(): editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") typeLines(editor, ["int main() {"]) invokeMenuItem("File", "Save All") - performDebugging(workingDir, projectName, checkedTargets) + performDebugging(projectName, checkedTargets) invokeMenuItem("File", "Close All Projects and Editors") # C/C++ targets = Targets.intToArray(Targets.desktopTargetClasses()) @@ -75,7 +75,7 @@ def main(): invokeMenuItem("File", "Save All") progressBarWait(15000) setRunInTerminal(1, 0, False) - performDebugging(workingDir, projectName, [singleTarget]) + performDebugging(projectName, [singleTarget]) invokeMenuItem("File", "Close All Projects and Editors") invokeMenuItem("File", "Exit") @@ -89,15 +89,21 @@ def __handleAppOutputWaitForDebuggerFinish__(): invokeMenuItem("Debug", "Abort Debugging") waitFor("str(appOutput.plainText).endswith('Debugging has finished')", 5000) -def performDebugging(workingDir, projectName, checkedTargets): +def performDebugging(projectName, checkedTargets): for kit, config in iterateBuildConfigs(len(checkedTargets), "Debug"): test.log("Selecting '%s' as build config" % config) - verifyBuildConfig(len(checkedTargets), kit, config, True) + verifyBuildConfig(len(checkedTargets), kit, config, True, True) progressBarWait(10000) invokeMenuItem("Build", "Rebuild All") waitForCompile() isMsvc = isMsvcConfig(len(checkedTargets), kit) - allowAppThroughWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + switchViewTo(ViewConstants.PROJECTS) + switchToBuildOrRunSettingsFor(len(checkedTargets), kit, ProjectSettings.BUILD) + buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text), + "debug") + switchViewTo(ViewConstants.EDIT) + allowAppThroughWinFW(buildDir, projectName, None) clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton")) handleDebuggerWarnings(config, isMsvc) waitForObject(":Qt Creator.DebugModeWidget_QSplitter") @@ -112,4 +118,5 @@ def performDebugging(workingDir, projectName, checkedTargets): clickButton(waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton")) __handleAppOutputWaitForDebuggerFinish__() removeOldBreakpoints() - deleteAppFromWinFW(workingDir, projectName, False) + if platform.system() in ('Microsoft' 'Windows'): + deleteAppFromWinFW(buildDir, projectName, None) From bde4362dad875ec11732161c841e4f0e406f8102 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 25 Jul 2016 17:49:25 +0200 Subject: [PATCH 45/86] Squish: Replace Qt 5.2.1 kit with Qt 5.6.1 Change-Id: I5865024f55a68bc2860f5b8b0b7c9c37775cc122 Reviewed-by: Robert Loehning Reviewed-by: Christian Stenger --- tests/system/README | 4 +- .../mac/QtProject/qtcreator/profiles.xml | 4 +- .../mac/QtProject/qtcreator/qtversion.xml | 4 +- .../unix/QtProject/qtcreator/profiles.xml | 55 ++++++++++--------- .../unix/QtProject/qtcreator/qtversion.xml | 24 ++++---- .../windows/QtProject/qtcreator/profiles.xml | 52 +++++++++--------- .../windows/QtProject/qtcreator/qtversion.xml | 24 ++++---- .../QtProject/qtcreator/toolchains.xml | 15 ++++- tests/system/shared/classes.py | 17 ++---- tests/system/shared/project.py | 6 +- .../suite_editors/tst_qml_editor/test.py | 2 +- .../tst_qtquick_creation3/test.py | 8 +-- .../tst_qtquick_creation4/test.py | 2 +- 13 files changed, 112 insertions(+), 105 deletions(-) diff --git a/tests/system/README b/tests/system/README index d84b30fa8b6..953f0d953d1 100644 --- a/tests/system/README +++ b/tests/system/README @@ -9,9 +9,9 @@ On Linux/Mac this is ~/QtSDK, and on Windows this is C:\QtSDK. After installing the QtSDK you should use the package manager of the QtSDK (SDKMaintenanceTool) to add some more packages. You'll need at least Desktop Qt versions 4.7.4, 4.8.0, Harmattan stuff (except QEmu), Maemo Toolchain, Qt Examples, Simulator, Documentation files. -Third - some of the test suites/test cases expect Qt 5.2.1 (default toolchain), Qt 5.3.1 (default toolchain) and Qt 5.4.1 (gcc, Linux and Windows only) +Third - some of the test suites/test cases expect Qt 5.3.1 (default toolchain), Qt 5.4.1 (gcc, Linux and Windows only) and Qt 5.6.1-1 (default toolchain) installed in their default locations. On Linux/Mac this is ~/Qt5.x.1 and on Windows this is C:\Qt\Qt5.x.1. The default toolchains are gcc on Linux, -clang on Mac and MSVC2010 on Windows. +clang on Mac and MSVC2010 (Qt <= 5.5) or MSVC2013 (Qt > 5.5) on Windows. It's easiest to use default installations of the official opensource Qt packages. Fourth - you'll have to provide some additional repositories (and for the hooking into subprocesses even some more Squish bundles, see below). These additional repositories are located inside ~/QtSDK/src or C:\QtSDK\src (depending on the OS you're on). diff --git a/tests/system/settings/mac/QtProject/qtcreator/profiles.xml b/tests/system/settings/mac/QtProject/qtcreator/profiles.xml index ca971e60110..124113a2651 100644 --- a/tests/system/settings/mac/QtProject/qtcreator/profiles.xml +++ b/tests/system/settings/mac/QtProject/qtcreator/profiles.xml @@ -125,7 +125,7 @@ :///DESKTOP/// {fc5f34fd-e703-4f4c-85ce-ea5bf5869e6a} - Desktop 521 default + Desktop 561 default false @@ -180,7 +180,7 @@ Profile.Default - {fc5f34fd-e703-4f4c-85ce-ea5bf5869e6a} + {a1e860d1-c241-4abf-80fe-cf0c9f0a43b3} Version diff --git a/tests/system/settings/mac/QtProject/qtcreator/qtversion.xml b/tests/system/settings/mac/QtProject/qtcreator/qtversion.xml index 941d0cac124..909dcb9eee1 100644 --- a/tests/system/settings/mac/QtProject/qtcreator/qtversion.xml +++ b/tests/system/settings/mac/QtProject/qtcreator/qtversion.xml @@ -56,8 +56,8 @@ QtVersion.5 9 - Desktop Qt 5.2.1 (SQUISH_DEFAULT_COMPILER) - ~/Qt5.2.1/5.2.1/SQUISH_DEFAULT_COMPILER/bin/qmake + Desktop Qt 5.6.1 (SQUISH_DEFAULT_COMPILER) + ~/Qt5.6.1/5.6/SQUISH_DEFAULT_COMPILER/bin/qmake Qt4ProjectManager.QtVersion.Desktop false diff --git a/tests/system/settings/unix/QtProject/qtcreator/profiles.xml b/tests/system/settings/unix/QtProject/qtcreator/profiles.xml index 5e08ff946d0..6526ccdc57b 100644 --- a/tests/system/settings/unix/QtProject/qtcreator/profiles.xml +++ b/tests/system/settings/unix/QtProject/qtcreator/profiles.xml @@ -1,6 +1,6 @@ - + Profile.0 @@ -109,29 +109,6 @@ Profile.5 - - false - - - - {70e26273-2c0b-4534-bbc0-eb6ca670821a} - Desktop Device - Desktop - - ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371} - - 9 - - :///DESKTOP/// - {17ae70be-817d-4019-9337-fa7761c4b0ed} - - Desktop 521 default - false - - - - - Profile.6 false @@ -152,7 +129,7 @@ - Profile.7 + Profile.6 false @@ -175,7 +152,7 @@ - Profile.8 + Profile.7 false @@ -198,13 +175,37 @@ + + Profile.8 + + false + + + + {70e26273-2c0b-4534-bbc0-eb6ca670821a} + Desktop Device + Desktop + + + ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371} + + 15 + + :///DESKTOP/// + {542217c7-ce0f-48f7-843b-d4fad339688d} + + Desktop 561 default + false + + + Profile.Count 9 Profile.Default - {17ae70be-817d-4019-9337-fa7761c4b0ed} + {e91398ba-6443-4b02-b416-782a70d9df90} Version diff --git a/tests/system/settings/unix/QtProject/qtcreator/qtversion.xml b/tests/system/settings/unix/QtProject/qtcreator/qtversion.xml index ce7e0515a43..df6caa88428 100644 --- a/tests/system/settings/unix/QtProject/qtcreator/qtversion.xml +++ b/tests/system/settings/unix/QtProject/qtcreator/qtversion.xml @@ -1,6 +1,6 @@ - + QtVersion.0 @@ -54,16 +54,6 @@ QtVersion.5 - - 9 - Desktop Qt 5.2.1 (SQUISH_DEFAULT_COMPILER) - ~/Qt5.2.1/5.2.1/SQUISH_DEFAULT_COMPILER/bin/qmake - Qt4ProjectManager.QtVersion.Desktop - false - - - - QtVersion.6 11 Qt 5.3.1 (SQUISH_DEFAULT_COMPILER) @@ -73,7 +63,7 @@ - QtVersion.7 + QtVersion.6 13 Qt %{Qt:Version} (SQUISH_DEFAULT_COMPILER) @@ -82,6 +72,16 @@ false + + QtVersion.7 + + 15 + Qt %{Qt:Version} (SQUISH_DEFAULT_COMPILER) + ~/Qt5.6.1/5.6/SQUISH_DEFAULT_COMPILER/bin/qmake + Qt4ProjectManager.QtVersion.Desktop + false + + Version 1 diff --git a/tests/system/settings/windows/QtProject/qtcreator/profiles.xml b/tests/system/settings/windows/QtProject/qtcreator/profiles.xml index 85edff2f660..ace7dc61990 100644 --- a/tests/system/settings/windows/QtProject/qtcreator/profiles.xml +++ b/tests/system/settings/windows/QtProject/qtcreator/profiles.xml @@ -1,6 +1,6 @@ - + Profile.0 @@ -142,30 +142,6 @@ Profile.6 - - false - - - - {811977c9-ea95-4616-bc28-c66d1935ff65} - Desktop Device - Desktop - - - ProjectExplorer.ToolChain.Msvc:{1186dad9-c485-4f69-b7e1-aff54c89ecb2} - - 4 - - :///DESKTOP/// - {11e4aad3-9fa6-48a2-93f5-829471bfda32} - - Desktop 521 default - false - - - - - Profile.7 false @@ -188,13 +164,37 @@ + + Profile.7 + + false + + + + {811977c9-ea95-4616-bc28-c66d1935ff65} + Desktop Device + Desktop + + + {7ca0887f-a9a5-4251-aba6-560a15595d20} + + 24 + + :///DESKTOP/// + {f9c7858c-d167-4b78-847a-91943bd0af07} + + Desktop 561 default + false + + + Profile.Count 8 Profile.Default - {11e4aad3-9fa6-48a2-93f5-829471bfda32} + {6a95566e-8372-4372-8286-ef73af7de191} Version diff --git a/tests/system/settings/windows/QtProject/qtcreator/qtversion.xml b/tests/system/settings/windows/QtProject/qtcreator/qtversion.xml index 66d48d5f94a..a517d266d51 100644 --- a/tests/system/settings/windows/QtProject/qtcreator/qtversion.xml +++ b/tests/system/settings/windows/QtProject/qtcreator/qtversion.xml @@ -1,6 +1,6 @@ - + QtVersion.0 @@ -54,16 +54,6 @@ QtVersion.5 - - 4 - Desktop Qt 5.2.1 (msvc2010) - C:/Qt/Qt5.2.1/5.2.1/msvc2010/bin/qmake.exe - Qt4ProjectManager.QtVersion.Desktop - false - - - - QtVersion.6 20 Qt 5.3.1 (msvc2010_opengl) @@ -73,7 +63,7 @@ - QtVersion.7 + QtVersion.6 22 Qt %{Qt:Version} (mingw491_32) @@ -82,6 +72,16 @@ false + + QtVersion.7 + + 24 + Qt %{Qt:Version} (msvc2013) + C:/Qt/Qt5.6.1/5.6/msvc2013/bin/qmake.exe + Qt4ProjectManager.QtVersion.Desktop + false + + Version 1 diff --git a/tests/system/settings/windows/QtProject/qtcreator/toolchains.xml b/tests/system/settings/windows/QtProject/qtcreator/toolchains.xml index f87f81d9a50..027bed7ed15 100644 --- a/tests/system/settings/windows/QtProject/qtcreator/toolchains.xml +++ b/tests/system/settings/windows/QtProject/qtcreator/toolchains.xml @@ -1,6 +1,6 @@ - + ToolChain.0 @@ -69,9 +69,20 @@ ProjectExplorer.ToolChain.Mingw:{44d54392-22ee-4eac-a9f1-2d882ba8a7bb} + + ToolChain.5 + + x86-windows-msvc2013-pe-32bit + C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/vcvarsall.bat + x86 + true + Microsoft Visual C++ Compiler 12.0 (x86) + ProjectExplorer.ToolChain.Msvc:{7ca0887f-a9a5-4251-aba6-560a15595d20} + + ToolChain.Count - 5 + 6 Version diff --git a/tests/system/shared/classes.py b/tests/system/shared/classes.py index 2e9b0bebae3..b8e02f56639 100644 --- a/tests/system/shared/classes.py +++ b/tests/system/shared/classes.py @@ -34,11 +34,9 @@ class Targets: DESKTOP_480_DEFAULT, SIMULATOR, EMBEDDED_LINUX, - DESKTOP_521_DEFAULT, DESKTOP_531_DEFAULT, - DESKTOP_541_GCC) = ALL_TARGETS - - DESKTOP_561_DEFAULT = sum(ALL_TARGETS) + 1 + DESKTOP_541_GCC, + DESKTOP_561_DEFAULT) = ALL_TARGETS @staticmethod def desktopTargetClasses(): @@ -65,8 +63,6 @@ class Targets: return "Qt Simulator" elif target == Targets.EMBEDDED_LINUX: return "Embedded Linux" - elif target == Targets.DESKTOP_521_DEFAULT: - return "Desktop 521 default" elif target == Targets.DESKTOP_531_DEFAULT: return "Desktop 531 default" elif target == Targets.DESKTOP_541_GCC: @@ -96,7 +92,7 @@ class Targets: @staticmethod def getDefaultKit(): - return Targets.DESKTOP_521_DEFAULT + return Targets.DESKTOP_531_DEFAULT # this class holds some constants for easier usage inside the Projects view class ProjectSettings: @@ -182,7 +178,7 @@ class Qt5Path: @staticmethod def getPaths(pathSpec): - qt5targets = [Targets.DESKTOP_521_DEFAULT, Targets.DESKTOP_531_DEFAULT] + qt5targets = [Targets.DESKTOP_531_DEFAULT, Targets.DESKTOP_561_DEFAULT] if platform.system() != 'Darwin': qt5targets.append(Targets.DESKTOP_541_GCC) if pathSpec == Qt5Path.DOCS: @@ -196,10 +192,7 @@ class Qt5Path: @staticmethod def __preCheckAndExtractQtVersionStr__(target): if target not in Targets.ALL_TARGETS: - # Ignore DESKTOP_561_DEFAULT which only delivers examples but not a kit yet. - # Remove the condition as soon as it is being used as a kit in tests. - if not target == Targets.DESKTOP_561_DEFAULT: - raise Exception("Unexpected target '%s'" % str(target)) + raise Exception("Unexpected target '%s'" % str(target)) matcher = re.match("^Desktop (5\\d{2}).*$", Targets.getStringForTarget(target)) if matcher is None: diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index d5cf7030aac..3eba7a13d67 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -629,7 +629,9 @@ def __getSupportedPlatforms__(text, templateName, getAsStrings=False): version = res.group("version") else: version = None - if 'Supported Platforms' in text: + if 'only available with Qt 5.6' in text: + result = [Targets.DESKTOP_561_DEFAULT] + elif 'Supported Platforms' in text: supports = text[text.find('Supported Platforms'):].split(":")[1].strip().split(" ") result = [] if 'Desktop' in supports: @@ -638,7 +640,7 @@ def __getSupportedPlatforms__(text, templateName, getAsStrings=False): result.append(Targets.DESKTOP_480_DEFAULT) if platform.system() in ("Linux", "Darwin"): result.append(Targets.EMBEDDED_LINUX) - result.extend([Targets.DESKTOP_521_DEFAULT, Targets.DESKTOP_531_DEFAULT]) + result.extend([Targets.DESKTOP_531_DEFAULT, Targets.DESKTOP_561_DEFAULT]) if platform.system() != 'Darwin': result.append(Targets.DESKTOP_541_GCC) if not templateName == "Qt Creator Plugin" and (version == None or version < "5.0"): diff --git a/tests/system/suite_editors/tst_qml_editor/test.py b/tests/system/suite_editors/tst_qml_editor/test.py index 70f56ea14d4..7f3fedb5138 100644 --- a/tests/system/suite_editors/tst_qml_editor/test.py +++ b/tests/system/suite_editors/tst_qml_editor/test.py @@ -26,7 +26,7 @@ source("../../shared/qtcreator.py") def main(): - target = Targets.DESKTOP_521_DEFAULT + target = Targets.DESKTOP_531_DEFAULT sourceExample = os.path.join(Qt5Path.examplesPath(target), "declarative/keyinteraction/focus") proFile = "focus.pro" if not neededFilePresent(os.path.join(sourceExample, proFile)): diff --git a/tests/system/suite_qtquick/tst_qtquick_creation3/test.py b/tests/system/suite_qtquick/tst_qtquick_creation3/test.py index f9ddd3bcc30..44846f4fdf2 100644 --- a/tests/system/suite_qtquick/tst_qtquick_creation3/test.py +++ b/tests/system/suite_qtquick/tst_qtquick_creation3/test.py @@ -29,7 +29,7 @@ def main(): startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): return - available = [("5.3", False), ("5.3", True)] + available = [("5.6", False), ("5.6", True)] if platform.system() != 'Darwin': available.extend([("5.4", False), ("5.4", True)]) @@ -39,9 +39,9 @@ def main(): projectName = createNewQtQuickUI(workingDir, qtVersion, controls) switchViewTo(ViewConstants.PROJECTS) clickButton(waitForObject(":*Qt Creator.Add Kit_QPushButton")) - if qtVersion == "5.3": - menuItem = Targets.getStringForTarget(Targets.DESKTOP_531_DEFAULT) - quick = "2.3" + if qtVersion == "5.6": + menuItem = Targets.getStringForTarget(Targets.DESKTOP_561_DEFAULT) + quick = "2.6" else: menuItem = Targets.getStringForTarget(Targets.DESKTOP_541_GCC) quick = "2.4" diff --git a/tests/system/suite_qtquick/tst_qtquick_creation4/test.py b/tests/system/suite_qtquick/tst_qtquick_creation4/test.py index 54c7e257722..99cccb8cd24 100644 --- a/tests/system/suite_qtquick/tst_qtquick_creation4/test.py +++ b/tests/system/suite_qtquick/tst_qtquick_creation4/test.py @@ -29,7 +29,7 @@ def main(): startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): return - for targ, quickVer in [[Targets.DESKTOP_480_DEFAULT, 1], [Targets.DESKTOP_521_DEFAULT, 2], + for targ, quickVer in [[Targets.DESKTOP_480_DEFAULT, 1], [Targets.DESKTOP_561_DEFAULT, 2], [Targets.DESKTOP_531_DEFAULT, 2]]: # using a temporary directory won't mess up a potentially existing createNewQmlExtension(tempDir(), targ, quickVer) From b4bb1e97b8bb2abfd8360c4d8315940791a893a8 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 27 Jul 2016 00:06:19 +0200 Subject: [PATCH 46/86] QmlDesigner.StatesEditor: Themed borders Use the typical theme color role for border.color in the state items and "+" button. Change-Id: Id87180deeff8c69da2bacf541484482a2cd4d380 Reviewed-by: Thomas Hartmann --- .../qmldesigner/statesEditorQmlSources/StatesDelegate.qml | 3 ++- .../qmldesigner/statesEditorQmlSources/StatesList.qml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml index 07944f7699a..323eaf17c39 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml @@ -37,6 +37,7 @@ Rectangle { property int delegateStateImageSize color: baseColor + border.color: creatorTheme.QmlDesignerBackgroundColorDarker MouseArea { anchors.fill: parent @@ -117,7 +118,7 @@ Rectangle { anchors.margins: -1 anchors.fill: stateImage border.width: 1 - border.color: "#000000" + border.color: creatorTheme.QmlDesignerBackgroundColorDarker } Image { id: stateImage diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml index 57f7efe365f..099e76ad3f7 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml @@ -111,6 +111,7 @@ FocusScope { background: Rectangle { property color buttonBaseColor: Qt.darker(creatorTheme.QmlDesignerBackgroundColorDarkAlternate, 1.1) color: control.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor + border.color: creatorTheme.QmlDesignerBackgroundColorDarker border.width: 1 Image { source: "image://icons/plus" From 66c589f9ca21fb2661a580388897f21d77cf356e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 27 Jul 2016 11:44:05 +0200 Subject: [PATCH 47/86] QmlDesigner.ItemLibrary: Adding support for StackLayout The StackLayout is working and it makes sense to add it to the item library. Change-Id: I732398a25091f2a33f38c42f5bf1c55ef9dac237 Reviewed-by: Alessandro Portale --- .../componentsplugin/components.metainfo | 16 ++++++++++++++++ .../componentsplugin/componentsplugin.qrc | 2 ++ .../images/stack-layouts-icon-16px.png | Bin 0 -> 147 bytes .../images/stack-layouts-icon.png | Bin 0 -> 157 bytes 4 files changed, 18 insertions(+) create mode 100644 src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon-16px.png create mode 100644 src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon.png diff --git a/src/plugins/qmldesigner/componentsplugin/components.metainfo b/src/plugins/qmldesigner/componentsplugin/components.metainfo index 01da4319f9b..22f782038b9 100644 --- a/src/plugins/qmldesigner/componentsplugin/components.metainfo +++ b/src/plugins/qmldesigner/componentsplugin/components.metainfo @@ -342,6 +342,22 @@ MetaInfo { } } +Type { + name: "QtQuick.Layouts.StackLayout" + icon: ":/componentsplugin/images/stack-layouts-icon-16px.png" + + ItemLibraryEntry { + name: "StackLayout" + category: "Qt Quick - Layouts" + libraryIcon: ":/componentsplugin/images/stack-layouts-icon.png" + version: "1.3" + requiredImport: "QtQuick.Layouts" + + Property { name: "width"; type: "int"; value: 100; } + Property { name: "height"; type: "int"; value: 100; } + } +} + Type { name: "QtQuick.Controls.TabView" icon: ":/componentsplugin/images/window16.png" diff --git a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc index dcc5f6eccfd..3a8361e20bd 100644 --- a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc +++ b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc @@ -43,6 +43,8 @@ images/row-layouts-icon-16px.png images/splitview-layouts-icon.png images/splitview-layouts-icon-16px.png + images/stack-layouts-icon.png + images/stack-layouts-icon-16px.png Controls/ButtonSpecifics.qml diff --git a/src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon-16px.png b/src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon-16px.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7ab00c1d6544c3965f9ea8490b5393e773df1c GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4h9AW2CEqh_A)RqM0vV6hDd}bPjX`R`5$95 z@u2;(|M`AOjp6@i{`>oX{v1~3|C0X<|0e%9&%>_J_@C$h|3i!un1epD^A)W8(XPT^ zG=*_tYom|z|Nrq@S=bcXvXmJoOpA@4c(9%!_tz>%t?R+7LAH6i`njxgN@xNA$gDNf literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon.png b/src/plugins/qmldesigner/componentsplugin/images/stack-layouts-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd6783cc540ec4723e12052accec0cce7e47f80 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4h9AWhNCh`Dhvz^DV{ElAsXk`PT0uX;K0ND zH%P$xLZC7G;thh?7mNf Date: Wed, 27 Jul 2016 11:47:19 +0200 Subject: [PATCH 48/86] ClangStaticAnalyzer: Do not try to determine version of clang-cl.exe It does not understand "--version". Use clang.exe for the version check. Change-Id: I64a46e8e2e5be47ad6f13c9c5497264e1128a22a Reviewed-by: Christian Kandeler --- .../clangstaticanalyzerruncontrol.cpp | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index 22b9f86702b..77f596ddb36 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -446,6 +446,21 @@ static Core::Id toolchainType(ProjectExplorer::RunConfiguration *runConfiguratio return ToolChainKitInformation::toolChain(runConfiguration->target()->kit())->typeId(); } +static QString executableForVersionCheck(Core::Id toolchainType, const QString &executable) +{ + if (toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { + const QString suffix = QLatin1String("-cl.exe"); + if (executable.endsWith(suffix, Utils::HostOsInfo::fileNameCaseSensitivity())) { + QString modified = executable; + modified.chop(suffix.length()); + modified.append(QLatin1String(".exe")); + return modified; + } + } + + return executable; +} + void ClangStaticAnalyzerRunControl::start() { m_success = false; @@ -458,7 +473,8 @@ void ClangStaticAnalyzerRunControl::start() // Check clang executable bool isValidClangExecutable; - const QString executable = clangExecutableFromSettings(toolchainType(runConfiguration()), + const Core::Id theToolchainType = toolchainType(runConfiguration()); + const QString executable = clangExecutableFromSettings(theToolchainType, &isValidClangExecutable); if (!isValidClangExecutable) { const QString errorMessage = tr("Clang Static Analyzer: Invalid executable \"%1\", stop.") @@ -471,12 +487,13 @@ void ClangStaticAnalyzerRunControl::start() } // Check clang version - const ClangExecutableVersion version = clangExecutableVersion(executable); + const QString versionCheckExecutable = executableForVersionCheck(theToolchainType, executable); + const ClangExecutableVersion version = clangExecutableVersion(versionCheckExecutable); if (!version.isValid()) { const QString warningMessage = tr("Clang Static Analyzer: Running with possibly unsupported version, " "could not determine version from executable \"%1\".") - .arg(executable); + .arg(versionCheckExecutable); appendMessage(warningMessage + QLatin1Char('\n'), Utils::StdErrFormat); TaskHub::addTask(Task::Warning, warningMessage, Debugger::Constants::ANALYZERTASK_ID); TaskHub::requestPopup(); From fc792d0218e534a74d986dcdee864c5f5b62296e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 27 Jul 2016 14:18:06 +0200 Subject: [PATCH 49/86] QmlDesigner.PropertyEditor: Align reset button Change-Id: I05fd4f6a2cc668a5ec65919b1ef83bea117a7789 Reviewed-by: Alessandro Portale --- .../HelperWidgets/AligmentHorizontalButtons.qml | 3 ++- .../HelperWidgets/AligmentVerticalButtons.qml | 3 ++- .../HelperWidgets/BoolButtonRowButton.qml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml index 7e777ec678f..af29773ce26 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentHorizontalButtons.qml @@ -30,10 +30,11 @@ Row { id: alignmentHorizontalButtons RoundedPanel { - width: 14 + width: 16 height: parent.height roundLeft: true ExtendedFunctionButton { + x: 2 anchors.verticalCenter: parent.verticalCenter backendValue: alignmentHorizontalButtons.backendValue } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml index b36d93656c7..ac3bd20f358 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/AligmentVerticalButtons.qml @@ -30,11 +30,12 @@ Row { id: alignmentVerticalButtons RoundedPanel { - width: 14 + width: 16 height: parent.height roundLeft: true ExtendedFunctionButton { + x: 2 anchors.verticalCenter: parent.verticalCenter backendValue: alignmentVerticalButtons.backendValue } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml index adad22f083c..28ebab18040 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml @@ -83,7 +83,7 @@ ButtonRowButton { ExtendedFunctionButton { backendValue: boolButtonRowButton.backendValue - x: 0 + x: 2 y: 4 } } From 2ab466ea046e065ec978358cc7b4435d9147cbce Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jul 2016 16:35:45 +0200 Subject: [PATCH 50/86] Doc: Describe model and state chart wizards Add the Qt SCXML index file to be able to link to the module docs. Change-Id: Ibd28071cdc3c98c07fb91c73732d809ffed5333b Reviewed-by: Ulf Hermann --- doc/config/qtcreator-project.qdocconf | 1 + doc/src/projects/creator-projects-creating.qdoc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/doc/config/qtcreator-project.qdocconf b/doc/config/qtcreator-project.qdocconf index 50986a4c4bf..9fa6d3167d9 100644 --- a/doc/config/qtcreator-project.qdocconf +++ b/doc/config/qtcreator-project.qdocconf @@ -42,6 +42,7 @@ indexes += $QDOC_INDEX_DIR/qtwidgets/qtwidgets.index \ $QDOC_INDEX_DIR/qtquicklayouts/qtquicklayouts.index \ $QDOC_INDEX_DIR/qtlinguist/qtlinguist.index \ $QDOC_INDEX_DIR/qtscript/qtscript.index \ + $QDOC_INDEX_DIR/qtscxml/qtscxml.index \ $QDOC_INDEX_DIR/qtsensors/qtsensors.index \ $QDOC_INDEX_DIR/qttestlib/qttestlib.index \ $QDOC_INDEX_DIR/qtuitools/qtuitools.index \ diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index 91becd0bd52..29bc9b1bd72 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -314,6 +314,23 @@ \endlist + \li Models and state charts + + \list + + \li Universal Modeling Language (UML) style models with structured + diagrams. However, the model editor uses a variant of UML and + provides only a subset of properties for specifying the + appearance of model elements. For more information, see + \l {Modeling}. + + \li State Chart XML (SCXML) files that contain boilerplate code for + state machines. You can use the classes in the \l {Qt SCXML} + module to embed state machines created from the files in Qt + applications. + + \endlist + \li GLSL GLSL files that define fragment and vertex shaders in both Qt Quick From bce5aca625919687535d2355ede192ac5c0ae0c0 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 27 Jul 2016 16:34:20 +0200 Subject: [PATCH 51/86] Doc: Update Git docs - Fix paths to functions - Describe Reset button in Branches dialog - Update screenshot Change-Id: I873921a8ee0d4ec6e3572be01e5c59e51adb7a0a Reviewed-by: Orgad Shaneh --- doc/images/qtcreator-vcs-gitbranch.png | Bin 33156 -> 14795 bytes doc/src/howto/creator-vcs.qdoc | 9 +++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/images/qtcreator-vcs-gitbranch.png b/doc/images/qtcreator-vcs-gitbranch.png index beb0a9e8badf7a7ae647003586559448f782705b..26b3a3992a5cbbc9c38e27827d1a68f796a2c4e6 100644 GIT binary patch literal 14795 zcmeAS@N?(olHy`uVBq!ia0y~yVC-XHU`*m*W?*2r7IS_(0|PTdfKQ0)>({SqYHH4% zJIBDl5ESUQbLY4|C_voiu6Eg^L$&+_-W3_U(fQ55IZ)cGj#}SFT){ zK7IQ7_3K}~dbMxgzSXN&fB*5LprD|;yLUq*s*ETrgP`c z_4W3C`t)h{?%ntA-%m{bFzN5N zR}bHPwBGe-epNzegy;YN@BaUPaO2|11zn|;ehwf0{!a|czW(mB-Kwkq|DQhd_Wy^c zC*I%Q-7<6I=ZkYT9X($-aZ`VJ?#>BGcRu~Q^5p&M6L(%--Ed`ddum{yj=ak6PnRtN z>TFHCQ!AHx`PPIw+x&e0=;^Jqy(^A|S1#Pp6xNy-mg#M`{mR|x`9bok*16O61x6Mq zI21JHWYk0^#O6+S^vf0zH@v!UabS3FWNKA$X1t3>l(25ZoQvNk9eH&3!tA=qGduP? zuUUCIqjhnZsbu}aed%r`j#e=*k1sM!optc;hbhZx5wdfna6SI)0Hy6@@y$va|w*6uhK*toT}cJ`s`N9J!loZZrY z`|cs&ZydV8=tGB);HqW7_Tw{5G|PnxuF(c;>83(MRk*E^OjE%yjne0b%y zl?$reWzS7$ou6eHIpzHQ&Z-Ng(GeyAhkCtEJpJ?U=IZ3q%I!}c|9`h{S5fMbpa1_q z*>bOHs{r-#2@WFKf!NbQQ7B};_h&juj_vqcKQQzhs7ObvXnp?<}YliC{| zELtG6*n5eNvE?zA`7fp)+LAA~XY#=VhZbGmsx>`2>Z^#-qy3WengX~A9a9>(HWiJJ=x_9>kf-!he%p>DPw*d3AUGOYHdkqj2}# zx;yvtzJGpx;N@)B!*loQZ1)OCZ0KGRleCjj`AD0QawsQ9E2c@$Mr@u5lab6@P;(RNhajPHu$ql2*>ZVO^g z%CcN?Yz^t;_hE0Wa+KzhPfcP;;joi<_i(DeM848GF}Lj5i?9FLJGFNQ-{<42Cpd z@Hu`{|9Z_jmKf`t^K+waG3eLq`*N(5XJ6ITmnAovUuzi2>c8&Q{o1IvJalELe*KkI zx)<5C{Qc!6)|9-yzV_CfD((BhTkblzZ{mqs7Qm((8nODqv53&m9G@G59Nfx&FJL@5 zZF1bE40gfSp+3i_W;Zqz9)0wNvufV&g!rJ>2}W)E%G=uHZmucJi8p&2;D5jUufAE| z?bi<3_v=CF=hpSjzZFWmN(y}10+!$KS{0hn;>Hp( zq0CR=Z8ML;P0dEu3BJ?3I5fla^j~mPZ2Iu`5bxgi_rE*YT(SD`>*M2{uV4R|mY?%- z_toJ0+p4bbJ+Hp|{NC)G)T6Hs^v(T#{e9Hl*LAO--cov{5Zk<^;MJk~LB}*aKQ^Q^ za4!{zT7Ttj^OV&t@~T_KQk^oq-5uBul>FGM{7U|h)V_xG>s74kO4`^;|LznP(JuS) zRWELH<;Q!~^Y6c$f8X@o&%Mca|9(y175V;!^}n9)MOzkTNu9C^J(zI8YwFy-tb$YT zo^6R)$lrI0l}j^F^$3ULwM=$K+1}6b7W1e4$e(*(?WM%4l6n4DO)qR*v-69{<%_rO z?2&!3qk2i@mj2f}J}$I;ccuB+v$e%BR~pS;lyPl%)GU9)LH5SUn@*B{803>Z|7&!- z^vHfb$3$Lr0^|9^tCz4aiXV!3p+7;9?MNnTv-^Ib`ZpOqWvsG2j6QKa_O#os-s!*f*JVTIX`6B^XF8uYeqwk*vufSL z0}?Z=SU(vGb=`1_Y47y=vvCf0V6)Mqn+tZ|E~>d8FzFzFrN*+o%(WA;LPhhZiELWN z|K@p+odeUd#Vp+S7T;fTE6r2XJ9fjO=znP)jtsI2%mibwmtY@%>UW1*sbc3$0rhyUpS$Xtsx|oQ(biPve#1Pu+Q_gv07z#jl22Q<(&v zyu?nrZ{iPZmwa{M#@FQ~uAM9fi$9zT@lIy=v7wQP(_w~3!-+{Pj7k$$FdNip^)oB9 zi(Q*=)zzhakF67dE9-01{)f#M-`e_vGGgv_Bpb;Elv(-y!b*QB*Dar zO%yD|;N;T2;zdRYkA*}p-zz3zQP#wu#-^?l86_9kPIz*Dn!vSV=@GZZ&1MbV&NEXM zoI7YLCChM;tzhNkg`PDgRtpjWT-vP~Ul>fAR(|kGXkK1&UaMw~vi{st{8R4E<$dyF z4Np_&drSUhKPq`FPCZ@PyY0XZz8P*$#MldY_zx^S$ItE%-+ihnQYqS|?`&H)bM5JV zCJtBkGr!*@pEg`mWIz3qWVfW}?R(KBjH0)7Hg9$6c$-cgGPdlq+g;#G~w&VDeEMKoRdS2YCE@}O-UcRdK`ngMz+lp1U z*_oX#+W)|=-i-Z!n%~dPFw2C%vF{ZubjHfRW`=7W)bs&eS43ph_W%r)Mr{RKk_2!bePSJ zT$i$ivrEb}vh@nH1OiW=GFx~=K#9Y<)kXJXo9|_x!&h$Yd9c**;xpa!ncIIZn5sRy z^<~c1r>B<3Yz@2b$m)40@^RB;9E)i10v3*`9B!-E?OqklxclxJ&BDOKN{Bot$z`8oLZ z()rzAR(;sOq90zICnj@xnSPj+rtH-HOQvpDW4D*`Sh)B*dv~TS+kuO-;}6|ke|=MD zouu>9$KCu748)3-#-8RYn7@4S)bH%MI~O%ZzT@}mU2kupu-D;m(f-I(nQxymZQtHF zHgQYAMb-~^Zux^`B@m*Z*H(YsGJDy>Z7!M&Wb3 z`?ch)oDbry>PzPzopIxg^A1+K;I^Ec7grehe&7DMT;_!t%eH%}`j58c9=|c|ap^sm zE6q7l@4l$*YFrq+J)yn(@83g>|HJL7Wmv+S_U;ra=&QeS%Jp0Ql)RUdwptwDfAZ|n z!~bGBEZUvhiY-Dc+MQdAEkfM*{xsY637vZwFw-JtdGUe=zm1u080FP*_N2e6FPbxL zm$+TZV;Qqw>t!C?{TluGDQD^P1E~j_oKBTaajw+VTykVl-4u)7jzvjI2KW9yP?+qn z{3wsxwmq{uuJNrm_wfF$;S{s?j%`*97PAAMPx8===SrgLGEMNIj>)1pY z5igS>iBF~lCoX&c2~g@Wm)2E}d>HYEn|;T+>6hb6*!Ia5E_l0pn(mcvrzGQrSQKqp z?7K=n*e$(xQeXAvi~GeDRZ#^GZgM;?cvZmH&h@-tMFC&?tMe8d>$g8RdnH?3qWev9 z{k@cI8SY-0+iMGST0W#@&7RooV*geAqUZj{5!-96&wczZ^Kg0Ho6WoBmw)ql{2?M^ zGV|SS;+x)FFl1zjT@(A_W$vxycaOI5UbvGrr@7Lif;Z*I`)Td^lL z^_$;w7Fg{Z8WG6qyE;&k@9bJ18G{~$j-QEp5)YmZwlvJjnhEdP{c+9N5lJmEmRFup~wWjS!y}xzd zFWCPi!)MREdc(~lWon3YZfs!w&{-~0^@#bTnjC8 zx*%J6M#VktL~r=jPM3m;QDSdwC zla8$1Q!Fxfq;rL3Za!d;S3Z7<(KEa_bFJgamO1vq?ccAsSSB-X{F5VIxBE=HD)a9( zr8mXe+gFSB-Sy-Rk+YuewYKS;c(C&171~BN-K!Kdmdx-vYpwm}qKww!br0^|4%LcT zc#uzEpV*U6O|86FdfpzrvZr~%=kJsE8uMqp>UjLaer_cPBd=0~zSmO?&TT>GJQRvp z4a65V7Wi>aZ_#Fa%E!sVa!Qj$$7O@Uq7$ZkP0oTdgC-ub2zIf);=%utx^6Yf?dmDe>lYc+??)Kkzx9?xm!F)NY#?PR{;M}@D-Hk3;ueKz{ z8AO;pUD@J%o41Bhrqb{CToEar@=~i?3ueE&Evvg^LhwNrNBNS*$|;u~Im9XPiEiQI zv$hs#pEpnJczus@A*)P;Zr|6BYwm-8uVWoi0;mb$_?Otk_M59$fT0Zu2iwTzpIDw2SX9HE!7(`+O_=g-cp(?2@3WzMG;(M4;Uns&aJ z^+JXH$j%>`hacZCP|3JpV`uv4#R1PJ^RsU6+3DeAeMm|-*YmTB)Zy889vqcwzoj2t zlY4H`rH6i#<6p&v-JLdP+=hhya zT)(SEgK1jRqQ2)39?1XsH|ck~+`IzD^wehWP5L35^{*)HZ(7u_$j7ea=xxiTQd6WG znm^nW=0882ABJpX-LR%%A4Va`PnpR9YT{yZ3LpvLgMsm~-sZttZng`D$%#l^YIcytQC5 zNSx2FW7n*#zu}dnjNH8CHg#4v8XaV6kIePiUvsI;V#b!hnhUL~W*k;m?Aslxu!QrT z$_alaFX8`ArYq+8e3)~{h3UXWN%6Kv6(zUJlWN}Abv({VTiEtvvXKni>^EyerZq3T zTO<>q)8!mr&uh`~R_|UO0D}?s~tRod5X$#bsyzdMHaRU17rBe$LCnKtiOwwbjdF+UoCH-j?=e zy#6yi=+TW80vqpMo3^o#H;S{J*{xprz(&Cb7iOuvZc^6zb8hN~`PU95tIGU}l6l>D z_(Ywj=fldt>AxIS>|JPo$*qf3K~KZ=i-pQLC6!y}r%%dXKV{;<&xIBi5}Ad298P=5 zpKy{trT#SL=hMu@qhXth4?kn>=ia}ApN-|egtg81@i*lw6nyf+bZKn&^z~1&ozlZT3F^r;Ex1~=$wJ-H(%J@fEj?JDJy$GS+<1=aKRlrEL|86*R+0LW2Ybt{17%E`tP;)I!W3VMUdjC}wED~rEFawpzxG)#{e0fT+s7N7>uN0Cvi&J* zz7x8@;mXS&Pos6G&Q;hi<#=_m_x^@+veqBivSw^d!uH-+A;`472-b z-PdzAa3zKvdAMM6n#_WH@frN@o$NPEyy5!pgPgOB=R@B$&in88{l5En`5fnPw^e^1 z^(}MdUjD-K`VN<3v0E=I3Vx_K{dhA&RM)SuIk-YJwNcM>MdG=A7mn`>DE{wvPDJ)g z_LG%fGL8!ZmRxGS&ox!$YIl~P?*$>gHS^@e{{Ajcoc=HD(8C2xd=4u!Sq6dznd=pn&9x3Yi*Um2ku3TlOAt4_+q8bnQ2!G za$3XXan2s_^n3gTf3yljDb#Hj|K+g7KsJJ+jjK$}#O6p6Q z6YuX1Pp`i)RpIbNK_y21ceiHrztHHu6|cY3IpOD=534n0d)57vGF~O_5@KJtS&t!; zxz<9zgS+W_cu13J?K>Wc2i{AVGmK6z=cl^A3ykgXK7bU!|vMMk0dycUYypw z`h_)X;ST=gmHj#o7o2OnCcbkvBk!?=3@itPCT&)JV)3WC;K`p$U%1>>CM>eJXfNA- zt!cqgk>!u4`>k_rXLDTDpWt*xL2$)O;gy%aDt&tT?213@laKkoFBb$$eR)%GW5MdS zvYYno$NRQQzNrx2lGys-p?btY+XGK|d>W2FOcE+RDcj$^@=dH@hYc&olPPmAmI*ku za3-)X(aSv`vtoVUJm#f7uHi521#BAXGMX6pR`h1Qtb8nMea0+*+s##R<`asoCN8l~$~qHx^8};`(euzEpuI=U%5mr+{-T>lQNqnyI|UvrePWeD%D_ zulxJi-ffGlm)Y`;qjmAsnXT=wWinO;@z*E{O?91{b?8YjaIAp z9$fhOkj0{?0{`@xCJCE=Pj$8PI;rF+bAVsopTX@{r@mXKj?vGem*(%E)lIe&VSIP{ zY9CYiL zSkzP*e|;1<&SIG-uWP-0Q}T`_QZiM!gn5t}$lgEKlX}kk zx4K)Waq`-!vc`|jO`7#<>3k3(c|H2dL82Pk6skBT4t|rI_Yu8 zLtoX;&y3!FYhJ`y=e`jS3ZC3mllgj4zA1F z;vPL%)9`5a+zo}iQIhRvXBDPgJ1_J+J=*)!oNR-ysZEAfM+{@_XJ6EMr(ei=zOS<2 zaG=bkWAik#zDpihwDEbnO~D*Yp7hQ>#>X;xf*x$N5umigVWm2O^p4fxLOFZHv*odTX4td*+V;JoNe*x7G~ zr|LTOi$C{%$I$52A9=i=J)ltZ9Y4#y2f~4o`o#s`%v?ppb)E!Xda&WmLwgpHi{hIC zqvTqH<}6=-rTfu_@;}RCSX5){?Su3u$!BO*a)kf)DRoY{R2*Y2sr-NT6pMM1bN0Rp zFPj?ryyYXi1>33DY{gG4q$Fmfe?4ST;`872`FuOk{kyBgs$JCBFPBc1{Pf?`(qi`) z_G71-TaWr*s?|OxU-sF)rjBL0+Tp;%iyj=CyP>OR)#HHB3(W3u+L~y*+#F#u;U9&J+B;3Y`+>D8KK)Zz4h>cLq4gNGgkLBXQU@@{`G@(*73Yn zn~Ft~(|B&IR46Tcb8+k8RXWnKwxWd$&X2ZNeLOjJ&+2Hd&zg0QwtsngIbz}Ijr^5Q zSqmI)=9+~?&OTcbaxCzX-`t3k!mq?bH4CQvanUZU-&?ps-L$~w+|*erOMiE%{1vvC z$8r4h`3%;LKfGSgUslzqP`xre;pL9YMrl`mZTan{=cn>>BMbZE_a6(6M|r!s2rZi6 zbn@HFk5l(8Qgr#BEF=76OV+cd7fE|}#8275U^8Lik4aGpyABBy7@W8#6BW61O6~2a zON}3#UmdU0N!-%4{=+BFGuOP%^h~h|yrz_;+1c$7=eyRPZ+EEo@h^KMjP>v3Npb7! zZaww*v$GRN65j)fc`KOTYaTdt>hAvZO^z5?9Yw3 zH7?mY-RC-X@%EJaeCE~m=a!n({P&EzqJIB+_owigCvvjai1DRu)|M+>#}nV}@LG%K z+%NtojUOW$my|rHxpjC-(-fWB|64X4ztXg4PE%8aya9*k+BqlJ=~!yLQ$^nJNdDyMMXNdwXS`;#X^zqi06JC^^*4zH<)7tAv`}J&=Nz4i5ZlCy>G2fEU zZ?8y5@Tc%qN4mK+_%v%c-)@~+q_p`>zV4*wM_08nSD(9mTTuVF;p~kJ1qLblGUpap zq;0i0;F7lHmhjB0`H_Z?ck4e=F_JMkbyyA@`fKW(#a(VNU;M>gQf6H-cYd_C-!jlZ4Y_PmiFdn$&(pwK5zfYFP(EDXGxpct2Od`=NzBw z==M%GDHeNlVU~(ib8@#>d)fnoD~~Q{$h2iWPPoL^5K+TYsbeSVx2@c+_Tmur=c7pU;%edgwtl%d1A_f?qnN$0L9F8dVBiWZA1Cv+LD^1kZ#iHhV-j zPH0@Q%FO)te)jvukzD(xC!}7rXT7N++n+f@Z`HO#r<>pZJo?s{(f#zCmUVn#hP+ZD z=d=D6zF5`#cxFV67B|~{?ohV-#UU*BSGzeJQLS8a+S^}8cJ_`>6=5Hbn%>#=dTu*Y zM!Msc)520B+=0pk0!G`llRvIp659O!>Y|Ci7I6Gsyya1>tB_C^^ZZP$Iaaf(RP}nQ zPAG1OFs|Di++3h@^pP^lDyvr;vp($2a{8n3X~oimSC{O}QU5xjbkm>j)+wn+x~i_t zs+zWL?V7NlKZ1+5?=WPZn02Ay;P;kO532h`4u0?3F8Wn5z>~jU`Q&59Eju=-%3SF; zxbB_*CdJd^h5mz#1``hU<*hM1$seEkthD>LglFIL&*vXhU;D=@_+oSF!j?C4HB`h) zPBgz~oh1D!Dd_vA6Vtyxn{Zi0%J9Wk@#^Ptm#>H(|M)jtPB+3~fx*Ofg=yD(y8;&2 zJPU|g=)jpHVj!LWgspzzgypzce2>CEx&zgpX^})d7BCY zn_JxT8YC(X&i&>2=0W`W)c3Yud*(j#7rcK&=1Kay$@+ZC|bd!mM(6OY`j%=_OqM(qq!;KcXAlbcsx^?%L(m*YgFgqg4NnN@Ed@OI40n04u2SWmzi zuB;MGp|4Yadn`Az_PRI!d{w>Oj4Fn=7ORwJ-4AUSxF5Rxv&Eu#j*lnhd?!44d&K^G z?HWGCeYGF`o<53mIH2IHk^QUO!*AwoN`b0&s~wJsatpJU-38huzu%Z z^^WEJvQtfQG6jZZGi;8gTvyTE{`rElyMOHEHi70#*7r0X>reP=ZB?|sN6zEJzwS%> zm7ji@c)x4W8?V*Ihx5hd+?9g&2QBsvWSa7rug3N+gPB)B@=JlU77iCW8*-eTS(5u- ze1GR5d#3gOe}Pp|e2Q^D+em>p({L_q#O+{aib*fYxyx+Bd zRbD^SeA%}KAz@lAq_mH5#KN9A|(b_%s9?TWJ3ejD!O%Cdc1 z%&me+1zWk&f}dp`pE&D8sN3G)ay98sODZ?7KW_f)RiRbB*2ALX;s+u&tqkIsdrpY^ zs^88Fxo20e6bjn5V9JqW>pplDa^KwVT=ODo(Tv+QdlQ#Tnk_js?$F=H#-=TGVIn&} z{M1{rP*gh4>d2MWq>9F$ zRUDCX9?5b`3z*ugaPS$V=-u0x;-ktbcksNTyo3}}a7F}!V#{M)PhXBL^Q$G|wRyNE z9(82CwK$nSgx6BKJM!zT_qk{9ueOL&Ygb5o_43&km87?8J_P8caB81?CRlmsvO3d} zt$#xkoP#fNl!obkD3@T3Y(5*i(x5fq441Bqd&l*>MZ2c%@OZ!SenjI69S60{?sm6c zbN2^M?+qjmvG#whwmr!&*>l*wMc~Myy8ZR#8@gv`{GPqWNrkU#<_)FHcFhVArl@b5 zZ>22VZuarTv5N{1`tQ_B+&4_C1qT_(sl#r)y2e zCi6un+C!=i>mJ=VZS(2yr*{rr`*P89#b&LpCe4<6vJcXqF57;zP2F!!p^9_X z{95hxyC}FNmZk5+8Qw=7bAEVBJLS}t{D0_q?wr*ou8*fWmo&v)Uo~M$*NYRH{+_qJ zZr+~ys5Q^DZwl9xRRWnGHZS^~GL=0w_&qx#-^?Yo$qOf)TRCU@>-#k(e~uS%e0z(Sq{9Wyt^C$Ht)x=kQsS9|Mn5q&vy*l~TAD5ix1=Fp>O=mqUI(hh~ zQp+XR=hlmug?@Z|{Bkk(H|y6$`>m!NbbpbO8nJFpn#{k40>&-pHr?lFef#{OsL#tb z*Nbl)kF}XhP!*Zh{bVzH!Ug#-t@rPhIO{LRKQ+Cu*V$H#tGv`S*3X*b=7H0PZq6=B zj0*BE54!wx!P_HO*7LBqc%BPdvwEJUupHl{Jr*((=4_3e&wgy7=-Zt|^F!m!%u;Kg z&a?Y@r{iNQS3y~wEMG)5N8gK}lq*kkvK<^HqOXQ|N;|D&-;pe%FUCIEVB4+5Ss$3~ zwZ%du+AkIuls-B2JXiMd)K9lgKC~|6t-He9({Q-{KtR6X|AOo9nwReNW|y#CFX*k# z_wwO``g>bfEtr0IX1CJes5zS-yx%Uu_V~(9jS3cZ^OlMSF_U^`I62;m`5C49rK(~{ z?}|ygW1q;WdhPF3O`rSqnB(3r1|GKC_`W(`>fG_MK(s}`dh%}1b#u?|6@GVp?&_02 z64JM`m|fp;_KCyW6ORm91ZJ1FwHgGyF<+^-J`R z>*w>F`*HC0vA&K-Pqn7WDGPt{ZWQq5`N_2M(7dljPxY7@9k$OG-D~kDdD2_&tf1F# z-kzOeZKcj<^d;EwT5Rb=(K~te7HfN=_!QT@`ThC4{;WIPg%u3G4>E+pJ;k}6}eIfi)?5ugdZeAqmF3|Y+uyI~o_>{)js=6ue zebtUnm2wo-3;t9rS@7@d+dQL_SLglO%qkw8$h=^7tbgpf`jo%}KYeuj{EMAtrzNYt zeek*A$~_0>ziVFDMn1jHHtot2&0l8^)#*2G*cJEc$+zM~%Gs|Kq%E$AsjXeBu)6lM znErOwl56tnUSu{=-PYnd`q7i8#J&|F`P)*9EV{XEwKz-M{H!^8OwQ1};X+vNKdOAjihMjzgjaO$H1GvmS*X70xh-V*FVhb$%t9c!GDv3~O*iwTDsncqkp z_g3y<)=ZS~$h>*J>*TfQGj}E03kx>*$nt#LTy)$*W6|;Rr&4y`+qC6bqDAmmjdYG3=-TiypfX}2LB66ZdOspZ_t*nw@ZT}oWRk5Q{>(-~wc;6X+bN|%l!VAyS zr_NfFvG-EYmIqQ6#tB(vpHmjR_mS+e%?{Wi>Vcw6awdWdTqI;UxN!|VMWbXVq6L_Y%xYStsioNif+*xRn zy|v^~!B&OBA4xJ>envX3zJJd$bMvA(CsiVP*n}VRUVUN3(AN?EEizf=%g@M-3k&9+ zo#y9p*ys zS$0yG1bgVQ^%wVsY_t$ubNW2j;|ed2Uy+stHRj1OCO;w#zlxnd6=Tk~=R$3ry*B$^ z*19l>_NWzU%ySL+wiK{1@o`K_kl}b(aLgiZ$NZ_9{_1=+n-(2BpS6AVy`)Ia6&5vy zd{%nQyq`B8vM_N{kbZIOutl5(U*L+TRW=5Et6un@TegGkSKGwJCrUqW-c|UZRqw3D zCF^%5>}{M6I$kv{co1W`cIT&a{KcQzOib-9Sob?Ud<4%6z?Z#QMW3vvSv# z{E9pnx|6k$IegNEX>)otMONKn)A}DG>etUEKX2Ey<-ZbEJTA<4?JlTSJ9@sWsoD9# zjb~l2*JK>NXc#LYyUrqQYYDf}=EJKvD^K6OcX{iowAD*_)KtU$jvhQ}@#4$orfW_= zb;}=5z1BDB)?Crga^+8Coi|VBN_?Ar?%tW@Erl7WF7~TGsM>E!DRbFsVfb?6jc4C` zk0<=U|F!!qb8Yw8;wevbMA`WtFHj6$XSyaTJj7o6)o$kXYyNfL^FMP|;`n8!3y{Xe zsZ$E}+C7IkEF8?*enuwBXgirmcN8vYXU^YVd9U{j+lk{W@#Pt=@7>a(_p(aQG~`?S z;Ks9@A8u({d@>hZQum4K;{3+#= z;nc|eGylfKJf8FWRdbEb2lt&}$8yX>KF1w#zxZ%_;^$A3H&)*6`mV%vx#WxVrVR(U zW0M~y*y&be$K*%{vKY>szU?G8`|Sl+CzQN;cB}V{g>;6A%$ZQ@nToM>nuShrJJx@^ zCQ+WXspa;i+E0@;r(XqmtE*?@M9CCB`_Dh0G0i*RdZ5_w`QiP~nBH%FR=s0`yRyop z%{e`fGZ*fdDEauuc{3yKH8BQ!$`2Sm^4vbrQ@EnF$V}kz0gE`Hi#>-M4>Zno3Ov+U zTXON>!&46vr)Rbl>`0Q4IDT3QQa*4#cJP9fAeT1HpQ>qF7skR@Bk9pRe`@Ewq{xq@ zj}E*InecIQ)9RugW?6e}_HdbtOGVpNvrq35aH(TF?cCF>RFz#ayQX&c?^C)fh5kM{ zeNtjZW8klLc9Z>wEhLT|ow)ydU+~>^MbcV*A*>=DQ5Cl{3L8ou9(bvK%WIjdc(YCJ zsZCx-dUpzK+_Bd`(0Z-LzNINAjkhnEw<>Cdyq45X-G7@aTrOrgpJIA^q3fU2-4E-F zBiFQWr8?dHa-+FRKlD^fmTJka!VuPtheY{9&N`o6-rs!t>VwCr_S!X@jMVxX<(nDY z!=jw7l^i!TzI-~Z-^QIMA& zWt}EyapTO4jZ%xGL)d)$L$%kccjsR{m*KsvG=?onrsQX&rO?2zR&Rnvj~iY$8G0}K zc~AQLW+s`mirr`HpQJxMaJiK^-)-^X^I4PcZ7RCeTPVTEe&X11hMO}UOupK6;S5`n z49BAb+S*479=zsj0hJ3z7Az9%Nfrf({Kq~9aX{j6k!1T@D~oAmNq=Yi#7ppbORwpb zTKRj!jH>RZn-gUssyd&hG_2h?d9w8}$K5>JO}9NwlyRHzaN98n_P0iN+{GVXc-8ty z;O~^gpL;A0l*Q{VKdTn;x+5!Fr>nn0KWU5C@69pc57*UM%$R-mD!0)!v&qX-i#2_$ zBPN~@oL8cteBjA{jTIMTl{HR@TKb)9Ew(VWD^SG zahCW#{fyKFwO@n%OJ~k-nb({=ZR(~e&U<|S^SAuVe4pn$x#KZIUv%If+w;fQr9L}n z8La*0qVeH%54*Qq>q^oIh{)H{KBA{}T+H@Xl!<$Qh+);OxV0IAjUuZxnj-db=xjSE zWvKXVllb1~^-Xo#<=*tA-ubl6`QLo&+J*KXj*7o;m9bA;yU}CO$B;))UdPN|`TXqV zzVFMvcE|OwyDIniW%2Dkw*KqQpEAGr-#QvS;(RrGZ|!;ZKa6G`u5Hogo8g@(ZxCEw!FW0{h#iWS2Fnph3U*17j1>4 zURT|+y~I*~p?2fpssGBpTs&F6J-)A}rE2r`gtY&wC%lfb)ry|bEYc+Q=Vb1l9~P6> zb;=klPg-(fiKUNg(VDA9B2MS-TfS2b`k7p~t^NGOGjZwFpV|-mK7Y5!Irn38f6&iu z7BOpXwCyU0{dUNA#`{&7H_p2m>mT;z-!yl*N$TIX3cZIOyZ4=VS@7dv#P?5YSMJ>^ zUgUPL<%>+&iiZWp`-|@E-2L3|U&LRRKK_%>b>B4le427i+~LFeueW1Y+SnZ4eQ|Hp z^VAndpLc9?;G0o6iQj+QTenp1cNax3uDNg^Gv?vP3eyi;#I8wYyC^TYA|s`~*uCRX z@dkGJ8ehl0<+6LPrkR>oJo2co>iv3o-SuuZrVQijr)ytHS=-;>662VmY|2LU_n32>_j!E^|xA1T^G47<$Y@5QeFE>fv_pl zH%w1kYxv}V{iHwk{i$4gIGzVAsDHAeL^(%FH#*9sy;{?3?H$)5hT}##QkEB&($R-@-PBzG;!JG(8w;<%53fUDtt z{<`uPp*Li26|dg*?!~d&zR~LrKK_vL+nmKE9Bm@E?pelN&1yTkkoWwj z#ew4GdrqaPxVBjGSh#Z*OSon^E8dW;n(w{$?eiGs+15@kXH>8}pTK=Eqo*l3Xptn_ z^9h_!Ch$C;z`O9H<)p+xEakt!T4r!{Q64{ z0!O7iE8e+3_-+45w8A0TH`kLPbKz3mhZDU8;tKQB=B-KJR60>j>Tu~XOCmsZcfTAu+ymN z;uksK{zdN_MH)vRNj+m(4O~d1mf9V=~!f+r^SKe;3ax z^fY}OcClfF@~yytI|*#zGE-MHx5Gy*cW%k08Mjoo@#-D; zvV3{vr>AkBe~KFAUYcA{bgy`R@w=Vpt9QJwz3*?vdL+&C;O%QyN($c2@|~=NZg*7q{&QX8y#9_ua%UY@ihJYQSf^+2>grlkAabeEvhRb3VMF- zZrl2v?JYbR*nPit?+(kwkIQ|hntv89es;DhJIJ$A@OOvS!341_ zHeRh|dZw*BtrLO`w(uNZ**V2sPV&=f&5e^%tp8}Z7;7#3)8uI~H%zhNhoMhFoxptg z&eV5r-o$Lpy4oeGJxwq6RCCKYgD}(eH?=|+^YK@lu`GUerdwQplDkB2m%NRcU|Gi> zg(9mzC;plIC_K-hURpcJ->O@}>%w*$W@f z-u~wAyY27R#ad3-`M>bp!hLJv|0YKVJ=_s~dGTWFTlpont(@@@5fu*(G`_yRKKs9N zbX;7VpC4cJqy&rI`K9mA-?Oa!%YX0p*>BSIx>w8b zZ*T8({dl*_p@D&cPoF+@iQQWjI(d@J#XU0n^kR3h+*>vE$DalBPy0Uz(D<{!`H8#V z=N0vHTI&959ASTbNxmvAoTpWOdE3Gdi*GFa{P?<2>eii_BT;7cFYq z%X#?HrBg4~om>9-A5UsOQvrSyv0hG3*g5CQZ=0HW zdfHse;%9GeZeAU}KCSzq=An}rmzVh-?~_g5?BV4VwY%)?uF}^#_UGumF|sau6S1=> zH7Q9c;hHP|kt0V`R8-#F-roN$YDYn$mlv0!_cWcAYt}3|X=H3Hsrux{$HxpOJc}6G z`DBw!T`-D^czD&S zRTavIGq+s2X7e<|H|p9X`=iNsd+r<8d#8q!r5{>3Z;7#dp6-tabCtIXU5=Wj=Q%ql zGT70K^Y+YDn^Y?11g>^$dnn6X$n*SClB~_5Q?hj>of=^)=iGX--TUaTz-2d2g)U)s zmME2QXgkO6KJRF^`0=Ah&(5>8wzr>O`|!iV!#Ub_+^w}Eck9IO`}6nv{pYLi_edIB zSUpr+vSo`1e}1C6|GX#4<`vJ9q`mz8kEi{AlzC)l=iF{JMj3he^F4bGZN7i==ap;g zxaKO&KiRL$wIt-o_wH{Oeljj7=rs7m@={)U(zF#4r8_?SF=cx%KVM!&1eB*$InVJ6 zEvaWac;5JZjzsJUwWMEGm#%%gcj*TIGXH-mu4fKB>t+6ZPxi*lPo7S9=GPl;F1XgC zJ$35Z+}sAnru3UOmM@LBIo~_+=DT23x1wFtW?shNPus42%bmG8_;m8QKW0l`@xMG< ze`f9P9|<4dZ%>c;pZaM1;;h%JXWsv?%yRqeZ3UUa2UQe4S|nt8g)WGlwUA3tvPbHk zXGX$vp(P~=CyZUWMSR-Y&Rh^svbL~qd~`;sE@Z#SZ;oi6!oosdU*2|wfBKT`3%&Q0#plJ<`@c;6 zFnyn-+|RckrYrs4_v>rFoq5%b@_pZDc5pQQl<${V?B4%uzhbY1p^}nP(vuStGnQ=M zE?#|OL!t@`=bHDOHvewjIN@F|Rk88?QA7PcS>sRL@e+n*Ar(iOclYnJc_n=~?uSmK zmw_&m8?rMKeyyI4M#iV6m% z!whOFZn3qwVF%~cwrYE?TWVTAqkO0G;|Hxjwj{sS51npqW+vI@Ana=CdFH|dQRcYC z6)h9r##k+iNHtK253Q~HW0UYi#NO^eWQWZm1KEvC)?00-%O|lP?3Zo&VY4Oe?5wx9 zw>LkWuqp8{o84Q(Q>RVSRsEdj)JoXa|EtN#Su^!i=gI{O8rq*+T%+XGlI`nT zYJ?t5ak2RE_xJbDJD3lM)bKnqanXtIU=Ti6|7n3|Or44x=du3FLKQW2HF7O3_Os^; z%u+E3+h!xQzkY(_7yc-QHvvBmN?6%v%$F}IsAFJx?!NlNPtLa}`;@UFR6EvMI92(6Sz30ryoDSOR}KR29Op4V-x-JrZ7HDdn8 z&Ii}e9_?g5Y;*0SQHN4XONP*-Q-35XB19N|YxdeKagE-}uth_~!d^kPj!As=?q}&7 z6Xln)KM^_X_kTg@O6euix!bmMefd4pH8O2!>4ZrEzuYr*n{#;D=Q}VMan!MV`#DkF zrS6c%+iCOyQww|Iwk!}o7M)^OV!+C2)flwDntijrbD5n=Z|%LGM}jZw zB?{HI_RH>lRMFZms&Ov8yp*<_Nxc~n6aej;pEkZ^M9OE|Hdn?W#A*A zx;XAfZDf-Bt`q7;eQ~9BTE#Y>cIMtT^Z#t5|EH*DzTD+aw|A|vJZ3M~f8tu{-D|n? z(m(xF{k-|_6Rn>wgbSYP9!13a$n?vl5m&Ul*ZLdH3?tAs0`*(fhjDP6;*nIoriW$oDd@R3hs$iLB>Ul44qg`VD z!>czLYPX(KH+z=c{r=~ayS!iSfA0KxRQA2G9Vc5&PAp5Zo!;xU$K&b`wD;5`UH>Vu zo$=PP=Vf#I9~sKWuN1sqYB#Iq%#?#&|L2{r|Mo6Dv{0h!afQv5T>`A->sYqu)%*|t zpn0WL!^p{0SgPfWj8xj=KMN&;@>|}g2MWCMl-{vldh(?i`}bx&sm|9|kG{It>HI0% zxXqUy@0Jv~V9$B)u6@`=`!DDJ8{KDk;4SFP(4ok1M1Vm6%ur|pF&udI3Nj>dKxIPI zF0M%a$HGuo;?wm+;?uqDxzbJwJq&wTCUm^u<0y^gmvBC}^YhO&?=N4^m2f%ohlxS4 zMS}12)1dMfk}7Q_KZS1AZ+^p@%2{%n9*$gfc?WlJ2V6Fh61n^`#Qs^o zqVBI6yVCuuPNsbNeU+hsFTkW>%~sFL&Y@Y-k3UAZBuPs${^ zBE#>$apu48=WQ=sxjUl&c=Gn!bN$qP7YQ_-bZMKhc-1N`y``x#o3aizvK=ug$Z1>4G-Iosma>re0QkOd!@bu+2{ma(@Bh9|=KKCTRy#V|^ks7Kxt;Uh%r#uq;=t2Zxi$SOLz$ez zMdllvNsBw!Kd^l>yQOjCMy_JUXFD@r4?(#%dO071Ja}%Nw4Ygj$AXXN*mi~XxE2Lz znYlhw{I8!;`M)p!k=6RwDgj?U+cbW!VwaRnHgBx?dH=Zn{hiGUAMVazdcCWtv?d`c z_PUJUO7^4T9EUTv>v;dYIDfj)jKcyo?~^&6rACS!FBEZ2lz8`hT{dsyxzLim>_I)V zcD#7xkZXFrIC5G_m*!cY$$zASIeVy@N}GCVgg zQBxD^YV2yfd$;TE-L*GbS;fRStTqZT%UTL-bQFvZd~<+7-Co`Ai+_dvhJ@lB{og;F zsaeN<@3h_XHG99EdLLDN|Ml-5U((k)O;1V`=J#Hw*mXW>`ic8nGB3|E%@)&%*pPE` z(|r4Swpu2mS$!A!t+x_t9KZvFfo)Z_nZ6e z?d|32lWt!WKFJ%Pq_}wN&#$k=pYE^w`^q?pZ(rT-Z)f>t?o{qc>3;Kdaqi9N?Rj?- z54UNG_siSg+gJPh_xJaPhNq)VG?cS=O^jGJlwZBuVzcPl)6ko2$F=6$*B{$o^z>9j zrs>7q3U~YE?RoYT6?CvgA6dw;QMG2zQjR44yZ`?Eoo#UJpp4iK(~Ut(y^egA+i^ z+78*&0}@j6tV+8CZEkK#Jw4aDJYrwu=Cr-l-_0hb-ng%QXg4nhx25mF#^4OEG(VR& zo-dL(YZmp)_Tb)-rzAQf<7k)YzYxpVQ%y|&=FRrw-hPGic%-YULT7kj(aS^nIeH%t zS*!ccv#I-IA)c(XXpKhEp|B?^1`{`QIcTk&*Ky{kUZIlpuP-kbpV?pY^V0p8zQ{KU zvMntyo2I4T-j-`!@gc$QIfoo)%}1`8>W#`VKOY`ucRZSxcTmiGlcnywq;`(k#N@%k5*{rZw=$n`Qd{rtRC{T%bWI~_jHzkYn|eqZ^~ zhSJwz^*Q0e8>+v*<0xmzzrSy9)z?>htG{zS60#}G{rv2#^2eB)^W8m-&#u)w7QcV0 zu1fun4+~Wb?5e)3*gmQ3+M39Ae)(_WyHopqSd_e&V1G;YL;Jn1q(chaKFi+U-TnQ+ z!RCuD8&1x%t?uZ(@&118x|p4p=3h&dT<9j0d5n*pPsTwlEM~TOzS-QkEalA-(j1!W z7VhQ|*)&V!ykZ~Av4=M|r|YadEqqXKublp#ijPjr9tJ)U^OPDMpPZ~NAS`@(rRtKW zvJb7(&&dQ8F5-45(B3O&Q*mKas&~@l$!m8wo5t-f)7^Hh_Vcq|xodeMsWZ&CZhx|I znrg%(!8gh*%*>OzDi*bNz7X0fCH(3ItBR=SyL)@9UtiNbwlJ+@OYw8RV%5$Kfj1)C zLLVk%9t=qEJ$JO{-^7;s!vY6STKtN&WgK_$~71wkOs=wvDdz{)AvA@pt zy@AM)^q|08opn2ez8 zD+EuxzPOnEL#pjj`8ys__u~b6SVgqg%(Ji0`}Onl^Mgtz3tjhCeO=}^*DF@WNZZ79bPnH#@mc%!UyuH1BIn!njt)(3|?!3B_cxj1e(&GI4`#wKE zZ=R-iTVQ@mV}?Oge2+x>r9+P0r+k8=w&&%#9&4PjrTg5*E#Fet&AG!SdFNn>j>4;i zcEhR9&&`#tRJkD{5$RUz8pYBj6L~nJ$GGZC#>$VszP`39eRXF?p>tRfuR53RnilrS zr=;A{$_(f1uP+I`bD!66T8gw)$%=1|9k<_bL`p8L>9p6BV$Wd;6cyF*on`X#%S&OV z?f+(S{QC9v_37s`jnlIdZ-jdodIjk`?1-6qZ*A08qiM-C2WB0+ySx0j`{b7kdD=UT z!sb;-+)cX{v1)br28L4)*nVG7;g-tw%t?PB^8cZOc;v4a7nOr6_#EHf+IsRpx=`rh zJry65ERIf}!YaA1Y3tl4+e$vkM%!n&9HHtM%y>GoyIs zcNrx8IJZP&t>3wf%O?)RU)(EnIEv%Ok;!i)TM`=D3J*NgJ)t1cl3L8)EKwXN_^t8f z`+Iwnt=u+DV_N)ksfdABPV#U5#cNNSZkkwrqgT>V<)asObHf{w!0e|IPR5O4?zf1JF1Q54q{Md!ARXpIBc4ym5wd$Q_=lyzB-%=B5SXIQ@! zxEc6vip%^7t)DV?i&!e8L~?DMAJw4y^Ks%gmb@n?Ci1-9x$nvsiwuG9kx?G`s>YKl|56g+{^nYZAUM{-`ei*I)pv**#*BF{g0 zxXwRtXl?r}&0WRYCKPe!sw&P_*>m86LSLy#6*C*pge^X^`0`G+sjZ#o>MvaC!*u%E zG4*XTTJ9dvGdiMYc7E3x9h+LW>O&lL5{ss>RlRbUc+`pWjl)zk7ty601&ogZO#S{U zMwQg(oPHLivgT6Mj}_(@=6rOXAt1fc0hiqNo5z?!xt83 z@AFzwUv`UY?!qTqe1)S08lO#6e{{R#tWB^}32XhK7EY_;>Ny#Qg3npkPyH-3 zY4wvmU9T!Mo~~l#U-_p-Kr>e{UFlra54YxJ3m3Q6-apjJof^Ko?Clr*eZMF3Hy!xq zBILDGV`q?*itl{8yX$xv98C-rE5B65392b_^99XXcIk{{`yZCeWzGt2`_~Ex>a1+I zC&YBrF5bFr>Oa2cIdhIG{66C3jPiql^yO^le)(!qPB!QhkqpU+Cm!nmIb@)rrD zY?KUt;HqhEm~(Ba;kAufl@UB&3Iryap&Hi%E@a5 zJu-Wn1&##o)|1Yy+)$LZM#rMX`SH}Hy3cnSG9C93nsMWv)ejRxPR(UY*>x`5I4*2r zv*f#?T#`}6(c^pyCceiwVvdDP;df!u(AeAcl*2z^((G*A3|G0`Jo$pwHLjBD6_`XE zIu$LF#p35|7G*v8{>%xH-jWqL4Z6OC!dWkPZB&dUQss}Rv^OXIF<9XLyIw6-hGkk> z0dGg4fr|f{)M@_7haQN99XjZ|t9{Oq3+s{|DTzLNq4`3Q_3(o^=k%vBNG>>H#w9uX z0{8YNg^w+{bAv9*`rlKxSNnJ>bIMZL9h+8dFDbv}D(C;nV7nJbF{#8<`w=jR<&-MR*uKzRRDA%oL8hMuXvY)O^ zm6cxcIq=<#GjhixYxnS~@HMp@KbDzyXO~dwgi4`s1I>s&-7j8Q%X*uYX2vaD|9MA? z!8yT8hgF;#LtbusBfQ=41eeTiZ_Ab2z1+>#CCy6P>cO-`v$J?rc;-Trj!0Jj9_|v) z^_!B?C7+#mX?EH@n5|E9M&Iow-NRXpUt{=Y9DZ|@YfX6SR=tX;S9~^~I_4m?e1i7Q zwvL4=t;O>@rWK`yId+I~ch*c6Yx!9J<}Uk`*wmf&|7?w4a&ijn5@B5z9uhT0iq&PW zxrn2l>mSXt3p8B!dIaxK3JPJ-6c^!U6YDTxWzy2}^>TQr(ezzkVF3rDlhn$|GykXm zT(k9hWUyb_xic!o&us3e%>6oV@BO{!=M{hZx6i-+)Zx`EXO%Tyv;4euwM;z6XWjC( z;V)x|ivpE1Ij3HGAGG@Ng$KU5yxzLjryc6=zPL0w;AybHg@%7Kzn*d2 z`oD3T@h)kW-|AH-Uh;f4QC?PV{x(6+)ro!ipG`+5&UqM(PB}X1-1QxG+g+3{it`2U@|~ITHRx(%xIt^o;pyv7^*e6a z7xYD4Yn$W^KE)qL;sW0KCVGiJnR2%vWX|QX=bVw6RuMMOIqPQ`psM>@OQM*GJ@6iN*K*hvuqjr#h_)>Iv%f z6t!O*(Qd49^+ijWXs3%(@u^*}z1oyZ4h87Cx|U37oX26R;ij39IwMpnY+oE_wCc^3 z2_lAT-(OkN`-?5`Q>3T4X>_Q|=d7k%pI+TkGBvH*-OKB*A{6<8`L0WK&|YnkknOIE zHFy<8!h16EL@%DSVEdKw;)UDxpdGXSwdR#rg|vyXbM6RQ{VUA&wd`TkD-dT&wvOL4KE-!H~pT3x1B z)$g)4zeMy7CbqiG7vw{On)s`fcc{A~Blj=ZBrXPsJhc6k5tG2{%~_hwOLX7!SzlPuY) zVjE|kalZ8<;BrpQ-hUH3RM-~yONM;A+SR5wmAC)Y+o{ESrv2TJl$OfBrf61gVz1eY zI}^2XojZ>xxTk7wX$(Ep^2ecSy-=r1`h3xyEsZlKXE9`UtnOwy%JKGam4xNnQ&kpc zv*#K3&rn};U)XJW?YTncxRs0x6~i0aEVgZkoh~CHJ?qcvJCFOfB=0ofU3FgOhwwAb z&n<67-Bq$yFnC8hiCo-P?l8-Jv*BZfe_!>!Z`&r?Jx#1T>hj9a;~rZ~#Fg94`{mLC zRI(gO+QoB?1H2+5TXz|s*UinYPj>u$|M|B4+ZNs4Lwg zXSyhJs$gs9*Ty%uvQEy}z9RQo)1usuf0(z&W={?Do9)5lrW3a(9jF`}XbG?YVnj?n-v! z)feh?>|EL{eo|7(GAqTq_;gb%ciddd$-2pBZftzLX79Nd8z0|@i2w0?jbweaNqOM! zN!On3o6`C{YJc7Ljw`FL%YDmzdvwyZ)a0%u3y&zY{=WSG*|lw~-s0T9`t!oq?>9{U zHm6cLf6vDq8%m3ez^Dk+IvSUO z(fBqoo_R{KXx5XhM!R0#tA0N;F!4moq#bxG7OqHT+uKRfV|$4^2MbjVnqOJli8_oVWX}+3R_| zAHH1n|Nkc4KKSm%=Wf?#dmpXx6PmB#{#|_kk5*1E)+sq(KhOVv=c(r@U7=1t6BlJ+ zqu~8AB88UHxmza6l*-sjyyk8FaclL@r`c0JS$sZY%y0e1pfzdlyuxFW71xXZJ>;+d z(Qg0e;o9x@y4-ctUN~p%le%jE;~@X8KNkd+TJD*OA&I??=MS>yVxXoHq?^y;Fxy~tEE+4k8uYKDh>}TM4U`@*kG!*LoUGn4P!l<@Ei3o<6t#Um0!nf9^izHx3nsk>9wSl`m$_&fQj6 z_k5#L?%uE06jN4eEE1bE`>@ng^Wf(k{WTA{;|~;OZ4=BD2|1j-sxRWyGM|}E!WRXU zCd(Sv{`%srxAVx}r6nrYjOFdEJ`1|b1loF-Otj?P8o6ds!}RE1n@;N$@89`7=_2pL zyR%+}ZP|EdQQz;0?s6|5|GHifHm~5tj1?y!8)AorSK2N%<&sX1Dd~fl=@B9DP#w6#c z9SMA2`@T9iF`+9@zAisJC^MvJ+sVo5yC<#Sf60_nBDd|BGoR%V^<8OCN`k`Wrybb>mlS@z8m=y;$YI2{ zlR4hykJIz~nIF z{MrLz*UqQUul?36|7Ss&kYe-ZG!D}ZN0kqBOg7n4!z+Aof^XfQ$MV&`r>?JQ6=+Oa z#AbK0DcWl~-#3MCX+>O@c{qc&*8IA~XZ_~DzQ^5W>4$mEbzZM-ymRa8wdnJib6Z$W zGd$^5c4*C5e2vpuF!JT6)B5UnBh07F`ubbZvHE&s`dkC%pQVK}{mt*c_j+QeE@C2| zt~@P8;@7wB`_C?WcdJL%L-zB+vWGkLgwusOBVJ_%wAyf-nd>fFIwiXMLhYTxQ?`yyeWl4;^}ORIbN4zuY|s&)z!FA4PC;|f1K%h%OGL!<5DWUgZ- zCnr5{Oqg3B9nC#=4)bZT(;K3%Pt*7)9O}dSrmJ!Jf!?=9SqdV@r|mJDa#-A(Pb)BT z-CB{FMTF_IsHr9y^|Y>^u6Y{@?TZikv%XM~c^MIWAYd z!!=j^dNALH{->9V6S-Hf&{ez}-7G18BjR+Ugve{#qh}|#E_t=zF+gdeM8braEiDPl zT+A2AHwsJc??@BVIW*hHG5LPNnk6O$Gv<`vt8}T0-XL1p{HIwtEu71f zrzq@{HuuWP?sQQKbdFoi5nUH2sJ<}erqcALiwC0J{Ouy2r&t}ZnBn?Hx;kTLYnhsk z-j{x`m0 z_qlJMH^>G()=mu<7mLghb8d8hmbeIa+%4;i`RK*XCPpTfwDr^w9O& zu>wEWG3hJsIl%6zA$+ss<oO$$Ok`j+sz?$u@ixLl%9`*LN*J&&M{kTW#Mk-_zUZ6D7^D;b->>vx@(}@9QT`@Cm#$K|_(N?}egJ`-hC8^}Vu1 z@Ah)-vHO0f_-IKYS7vthx}9pDii9?L7hO(S&DC=+p_%tcv!|d-R)~G6(+-sj?al!_ zmf5#+w~NX>OLNMt>-RA25%7AFv`^P5Tu}Ax8l$A%BS(TfGQW5Jo3>-slLc%d9XgqL z4Qwm+McA)gYg!_{^HGetU?4{2MK@VcXKy5Wn*HRV4vQnZ&VG5)UyS62@yS+{b|P0W=Zyp?laE!e;hN{>O8qIZ=de=JCkfwxxOvx)>FDH z+UfT8($RgKU!#pqPR>Z|v)a(>>U>0|h)cZr%D$k>8(00XTp7-Cw_~rHK+-O&?upB0 z_N-mBX!Um0-QlbJbk5%BdX=~P$v-~NKTG$Y;cQ-bg<-)I&*JXhS4xK8Pkh%Db-onl z5;gg-bLVIEKVO#H=bl+MapuX!<`l2p$#?C)MjL60mGZ|PzBpl4`hc%nt1Q1J5wz&w%2LsEvk-I{-P{C>CF zz07}NhQSWQ3jyah-}CmY`LHJX-9v-;1q<7PPi<&Ee*5$L?;U$|m)56DYwJ+tj9Vr@ z$<0SrD|&XnT~eQp^phr$L(_7MW^Z9U@rM8O#z*O&W=JlH?3?nwBbMXn-2-(Zp9EhA z#V|+nzptM8*zLBGXX`EbBH?SwyWQk;v}%4lY`?ijRwzcySeh&H>0z#v3x}(2%qu(d zRBbs6?<%Ve6ZLKvm^_jEcjLHS*v_N;o3F=JPqkces#zqqah~Y2^o3SUceKkx+n6?L zA8kl--R~T6OQj=|HI*qZkUD01Dk`a_u8f&n06z(x+nL`wm$)nB`ma_-A+pI z&UwFZ>aKgQdDpT8bXS?quTwuUp?20>>oaFU9fWnVm>Q?KulF!fsrn%?xvhX@z4j&n z_d|j{63<@?Fl37VU-N)}l3jCQMP|-HwVcIIere3gQLgNIe^gH-&F29Bal_4O`8^+0 zkFmU7_jd0p#hE518yuViRD_t9P5(Nf&FO}tB-8XlcacTmRTHh`^+dL@-dVyRHgSH! zxfutRd3HYDt6DyLSw__rxuhd1+h!m5mDv|z$>Op-Nbxkw=S;T5BEL+Hi7SkGVk8Pz z__fG>W8B2w%&=BoUQs0RZ`nh>C~3EZDK2^*?1rx5&Ww3qECjQjC}gi%956L}T0lGZ z`l;8SsdTlwBy4{%*+cmA!pIkk6(@My7Wi_(v@iHWM^P%*9--(QM{^_X%!qq!zU~GK zU(_h|pFFm$<>?8Zz9|L_GaX{OddwKN^Bu8!R3zKFR$|_wf@=PyipJ7g-bh|^zsEF% zbK2bUj}8y3>$Ly!xxNc|7pgbQS-0yzSmO-mY^VHkRuk_93DOaLQ>H$e^gib4<^1@# zg$kbPHXn}&mqxGt*R3Wb;ld^OvvuzEgT6)UaCS^bMVrz9N&jlkZ(S`r<}%zp6obM|DxF(+b}( z%lqfgxAq&Zo}%iPk|^NhwPa!7Zk_fumVdUbGSY}T*7YN&Ww=#)dl@Y?2Eyw3;$ktk~sE&$%npME0+ksxs;58h(vqma?fbKjSqzFT57tG%rHc!b|yy z&ZEu~MrKh9PF1Ey@ zh^oKYKZIZHt1QX2mz#O?`@PhSRa_I}T_?ZLlU{VPYI@qi0QH){;;Lwq!q8LU)|va2 zvXspQ*R%v&UiCvTrB_2MY1WPGQ&SqHX6^Zr;k}@2y9KU&gsgJwL zv8fO9I=H<}_!u46zgoA;d6&$C1y9d$>TO=&mJ%@ikcY|6l{zo4JKqkNv)R%3jUg*{ zw@f)#@$}M*D(lPdJ?&OoxIivTuz7xdW06aOqZN~gD1ZMt%{l`_yjZvK`n5UdUQ4g_J&}4PC)+2b@VAGy_Q^&2 z1Z0lzrti%U@RyYC?P_(Ip(megE50&QtG)c^-Jg#%e2+}?&@0uRvTNR6L-jw4r#u(f zdLfeipW5RWr==zp7>KwtyY3BP-f8S-_cO&tHFojoEf$XQ%jZ>PU0mUj*)i{Ef=}S8 z%XzZ`wGYjbwY8V(Ynu_Z!l_4}tLLGJz53qHseYV_$wnN39XFR+i)+sAYxU?4W0SI) zUa+3;?vdWw{hJJD%+%Zc#%S_M>x1P>zojrtjkeem<2FU?QIEy17mFhWraBj`zIgTI zt`(F2$Z*Q{yiVB|a80O}Q(J~<)2*G+udWxn&-&b8qQuL&UTEgIeZop-TE*i$&QJQk z^={eig^I`0VlJc#&i7cVc*0_u+42)?3pHQy8ahokQ@fU7mYn}IJ;7v~ZPLWWN#QCN zj2M1?JM7buy2w}i-oiDmUrlEw$q1Xc%X?WVmuX&ou_c2eG16JY#>n`>4Am9E3Ptui z=JLEU|F$WnO}ej5;=gstEVYYMYUfDCEZ8j{m&)JMyu>9s z`;j|E8&16lD|(?F|Fdh^k%=by&nG^d^nOOd(Z5Na%H|(;xxF-6sJkd->eqxFPxhKl zkWl#V`DM-SDRxJbwR`lKeCPD~yM5{8%6fNLPR!}mtXrEZw;XWI-|G6*PW-O2P5K7Y zezmC6$=hP<1*d*K-rIRjcX_EPaVNj@I^pWt{=!U$?_AQd6T3wH z_H?)?S@vt4kC?Hxuc}+<{M5|pTT)uZ9JK$2ept9f=_W^nXa4FFcg^E>OU;i^=1u+l z!sDu-{EKp-;tp=M=+7?%`c3mhJzlDPSa{QB*F;mJtU7+-3pydw;-nZt4|u)N6E*DC zzcZ&rYSKP-$0=)aazk2E@05O;d8aYs>9W~*N|LRoU9C9Yot`1+)%MBaf&s_l zCcl_TL6*FYD~Hiw&QL&T!(rG{RnxAN9UU)h{I zw{OueGplCRnfIROtUJCr+1l59%MkA+s!v1a{Y-adBXzb5FX32sN?F|yGe&xETP-{@%MYx?|Yvm`RSf`c5#a4 zqGj)=J2zS#GvELDoHhTdXBX@8zxRs794lSNo4Pr6`EAv6Gc!zD3hoLE3%x45+_v!6 z+CIAmO^2_prz7r^nlyh{S-50EvrpReg7>a`+cGQKSDPAh-<{JwzhHBjp}F_l z1$EY^3zn#thrEpWeycKJYj@!Zy8t`xrwcyctoo-e@L~6g=~K=w4!rd5_j~&pv)y+q zZmKLPnsD2pMEbVV%luW=0&^pxoQ2nfOGTxod{)Spvwg}uIkU{#=hmMu!G02EX0zSR z#oYMwqqbBq92Q?3EFqohQhh~MY4X8Wr@Nxon_RgRB2)HOyZcs~sBiPms1Itoi~r5d z`8|2|v@P2U+f}95)*daB-Xg#CEkjsj+L07*HSX@$D}x*P8oAsOIagk>RTVx|9cP5X#6bea@jEK#4q1X@?2NNkN0H6UAPuw&Aat@|IOL4Yu}cM z>dvUCoPR6K)NA3|yS`8U{H8&IIE%?jJkb@765G0M|G%`O>%JvT74&8Ik=p<5N8)xn+y4`% zi-jjDRhz}9TPXedyxM#E*7B6zz{9idZT@#+`t$8}#?_IfuQX4lt}WDklc0Yt^Q}W% zS+DffEw?(Ji9grbylIVT-3|5aQLWtHR~>)0&m{lmg|tO25`sU)=Bx_XuR57U$T-kl z_6D0*u4-q_mRlQ&zeN<^pQZo{`L#rFzIiH)?C}DJX`+n^GD`lTmL?}xU;@0SJVI0wtVTom+oBK8lJf@ z;ora3)?%^k;v3f7C|UdP@T}YM^Ve&p7v9^u`G4K%?Em}joml?Adhzdhu@%p>H#^(j zsahO(f5xU`>Fa8rHrDIRDtyBBf6neVJ-5?iKfc&=_nzssP}Me@irp6jSl;NEyIjbg zc}|b#tfFmw!&!a%rS%WbOswr}lUiMABANK_(6*~?+hum2&ibE!sYU+mjL+Y%PybxBd5wX>0D#{La=Wnt5cj?hh?&)uL-?Z4R^;PBlg(G~@y}Ld>DDAJl-=hDkJ!|4>59l9zm30UOsnjk`Hq|a{~^`f?7p{N9of0o zIk!3AN98|JyuP>SM(O&1cYQPV+**`+^u$Bo{{6d3)}Q|O@$+(VlkGpcy97IH&tG;QkJWl z*l^9o@pi(Y4SVm~zH`o(|NZICwVmF#WJJ>|PTxq}EWX8hQElY!JJ+^#CP#H~scibP z==kgf3uo{gZGW*useMO1hnFA9v>48I|AHJsw+pVHf|NJx{jTpG`j)X|kpw)9-awGKc8V z4~f3X?xy=Ksxy~|t~j8&y8md{+xptQTQl-!@7<95XouMB=-apE&)oUs>CLsu$G6OQ zWqe9YAT=clCO$*bA_ zZ>+el{cq<-E9H0ANq^VZXM8<>??=|gC2M03|F-lFm%p9E^fL3R;MxB(Hk+_6JmxcZ zy^^6|&6TGU{>ia4TDb6h^53Z4X(qJIS$dP8XJ<>wO2bHz{^CcnKYh|pb+|-0dj9Cp zohg;NEGaWZdzz*o^Rr|tPUbste%=QR-(HK(pL%ae--;h!+*c|YP`Ot=G{;E$k(#jeD{m)PE2+;x&PtH?8Ie!hRq?$>wKe7!8~Hq(B&YhTWF9-d#bxbzXn=dMt9 z^Yvz{US8RIt)}warrH1V8LfU_IF|fQc4x+HUblH4Z%5A9a>n1J#9Sqsm;-^Y% zaML{PGF7@tY?q_Sw?(3&9Ugjofm}{j=Bj?B?HTfI3uRKLKN7B5u=?urwNDDNWchYI zpI4otd~%k_gf5YnlWoc`eXmuT>Fv?@GgNPr<5I=*uYOECyZrsWXB`hUmj3v)cD>>2 zx{S>mqt{z+ik-R9{>rr~V&o^Rilhfn+Swl}OWyL;B{fBUab`*ihu{Ejz=em~z+y?5g6b@s1jhELzY z9v5}t+p$At#_==mT2%+mKKOaF?4^I#uTRtaR;-^_{4dvBs`T9Zdq1YDugi@r{w!#{ z=GV5ZF*%pl`s-T!yS~0~@891?1Q$n7v;Da}(*5q2SLxg57kC){tNwm=--CUYt;P)( zERUP9P3l~*TYb(Jr>=>!qoSraZ+kPz-q9oQ5>II5=^T~S_Z*IDM+bEJ2=+AZpQHFm ztkbE>?Zgh3I2XmKm*y~D^awZFxk-3SzjLn8HqRgyCH0d|^0J0yKBw2^%NzgI&(AYh z_w?t_(*=L8yj9=wc=7GDw}01djCio}`m}S=TXOzwN;>pn+DhxSQEbA#GME2M3yrqh zd$)yGoo{)Et@-k=pWL6BnG06lvfp~PVoKT9$DjB5-7Ph}EI)hak=IvFu3ohH_5VN5 zCLPV)y*GKy-v9ZZ3;)l!TXlE-GxMz`Z?|8yV3uC~Zqu#F#?x(no)Y@(nPr`4RJHoK z_`d4D6F;8h|5N_2v5nfUWSV zF5)S>m7yYjuP*Y}Jh!ulE_ZtIAt{F|%r8 zJ>GbF+P44q*IcXc+smtyt<9u=CVTU7=6vtY@OwGdUw+N3`KJ8u>4YX$?_18v+?t$w z`W-6|6)x_wHJAN-tyB5mw_}r>*Vpabn{cChW~|I3ubNZh%lCW9>u7zr^CneLG_r0& z_~gWgkG4G*zj-y~`k`yzX8+HB__aRH;Q`kxpEV|1er^ogw4lXQ;6gLM-3kfjYYW^G z+t0DuZV=_3I5TT@qS%*%cMi|fy}f!)TFxw~tFOc+mK@6Sy^$znBsn)xn@gd4lJ3P< zY@v#46yv^~xxV@0s>5Njw_jfgGe52$Q4=OIqpt3AJ$EaIuGqA_6Ot2HYc*`wd91lI zXVcbWrt4$WHbt%KT5dM))7Lkq_mreQbr-IP3M{*|`j_z=J0GVRrzIllL$-Yn>$Mf$ z(8IKe=XQ=;j>8vIL54)OAbk;SL)X=t`_4)9oH?GlZAQ*?&KLO^mnJ;_`R@GM{ikl^ zoVD?o7_sBQ*~)IQXbpD0tG2$1FEx6O`^mTpChvBtReYwP$-KLu-KfV!aot7>UB*+< zZ<5z!m1;C3&SzVe@k+X=^Jkf+sz;JjR-tE^=Ja!EB9C9yJKfbzZ5Hcf3CwWdGar)7YjMG;?^RM*~ zoEumhE_(bemxj|h`=r>dr#SgFg|ww36fT`Q)xIAz9<|6NMZ2nX$-)oiPW+qeOsqww zEZokxa_cFdr%9SmTJGtUzl?Hs)!)@Pf!Au!t}V4+cIr$&@#RXGV5~f2*(s%so8~8m z$;BCPGhbclx0u%{I^~I3-i~J%Ykxi}nSD9FN9vCAxkr*$Z|<~WZ=BaLE6&bh{xqvOAJk=iT4cjlL3G|G9e+syKe z_s?6jfKO)EtN_E3_hNpp428Sa8BVslQ^Qp?GqT{#rQYKY-0go&+&E2+FT5#^x2A}T zD`DN|X%qSHR=AwBi~s-Y`qo^n{VOw`Exfz=`J8&j@79}N{o19-CAxUi%gq(HbGLWy zNWWz4c-Zo@Wq_qi;5@$>>wFDneDi>1w|z2UI_Pz;Xj#_V zMOWG5+qxBfI@hS5*b%>V-{mGmAU*S+vAA(-FCqh!P5m5H(Q;3Rr}?L zu>TKZ*0nnye-)PtS(u?Iu(RFy=K6S(yw4d2-~8%+Y1QxbMeuUUrOm5K7j5&kc+{cX zr!d23uGLiT$=Z!G3O*hcUo3h}^6uk;_FG>=RQN6Rn0@uv?|de8w?$xrv9j{SH?Hax z=QcK*m43YFr=1k~OtHw()6p>H%Hw|fd8dlsY&@Q&)jdh(#KTp;nHF8ln=kM#Vt(qH zw_EqxiA>#L#`EJ!u>am4kGiio^mHy4=(PyHqIu_@-E&ieR%^Le`?^7Sh>zJ2%OpxPp}PvR@D^Hh6VF*=GXJZfwI|Dc&) z?RQI)v)G06?OT*C_y2jc_L$@R-*=vu?ACv*(~@8L##7bfpz-^M>ASa14{_bb74+i3 z&53Q!JdVYF8Xu;dc@#2h@xui(obMd)>d;{^IrvrXx6wt*FV=@9{%lc8-@qNC8=n1g zkHR4Zov@TMhc2n4&EFwnmUCpueUt75r}(Aw_ZU7r{WW3!j-oiBN1}^VUK^S{)cF^+ zh zdAyKynNoYjq1D|T+a6DOvA|&;$J!mu^NkjTUu?|c`C@TZ!s<&Bujnr4{h252I@bSL ze5gRU-Y>Jltk=T%L>JrUZ3fyI$2}x@Y_Ck?5L)|?5FQ1^yLy{zT7E3zwwGdlZ^Mi1&alRIfCV?eOFw( z%*<~SaFK0Sc1EDD>}<1KDOJDqM|jQeTu`6(IhJ3smDTHU%`~;D`|s=jSBHr1Rx)f~ z@Z^-Xbm;xURbG1;sXz79=9n*ZhFNWVgFJtO%8wCusCq* z>o4wqUxn{KG=uNUPP@JK%4dZ--z4hqiczna#UU-QTHy62^_i(HO~=}tWE3VDtnpag z*$~*THeca&%29Kcp5o86>nO&9Co#7?YMbD;?Rb$S#SoMC+(A)FD>8I(NYg#)Uc20k~ zqxgO1M$0`R^Xiu@2;8dcSg)XE&vrsJMagUO}j5FgZ z670}e>BSP@^1XAe;NqOcA8hzEo!S*_Cw6^n+F>^{Y+H+jQls-Z_WUVFxbyd(lAWA! zYvG~1l1ak9)j1sU+CxGE>+PJZI(Enfo||*W{7ymhp9o2bLdoxU%jf^$?-VhLsts$g z_D-CfqZq!;XU4SKic=yF``j;0*;w`3zdIvG{?)I)rQ7cmb^GfGbsjmDD%ke#<#QfQy_0CfzSBmhMzQ>g%+B{S4o&W7 zwRv(WU@nV0hwPNLdk3}q1((c7;$>G--n03*T=fZ7QJIcCAxvs_7Z@~N@zXH+eR=-B zEhbSDCvQ73wNxncU6NF*zW;o?yT>^#4#gL_90(OW71Mu*d!oyUj~ATzzltrjnj@ic z&uYe&a}zzT)VJAMO)yqH>!h&BU8*oaEc%G*BK`^be#t^h)DyjYHqZ2UzG88o(&iJZ zC)`mu6}gF3=|GtI-IB=ycG9Zm9=DWICZ|1G1APVO^L?<$U;n?@!|O#)W83_XI3AI|t(m$+_sk22 znZG{STq!LHby>nO$xlT{ySMF7#8L~k&l8jqpU5U`nYOF+5U2Ws))~QN@B15jFJA1G zQK{^TP-$&4Y1yA*Q1L)^ksH6ESHIWo)ar?mH}+eHoOe~yS|K>yBlMWcf=_>RTw07Y zV>O-~lg?K$S3J0*?bGFz6P&~ZSLpDH%N)Es^?Ig)y>pg?q8)Q*YCM?~qqTH> zVy1@Zp$|pF0^;CIV(kN_*8Kv-_xgj{nN@9CC?r#SC>8VL;Al{Pvx2ud?8CT zq}N??&H29K_V9=B`Zys$ zb%V*IJGRG4wOA@kjW=ih5N@mRll-_mJoT8haGB*X1ykuu*Y=`@8Xr$%*Gm>IeTmrALY*sPSrOI`0{u0;_J@M*Q7V~2xMF| z2rl8Z-!C9%_MU^uLnUm{e7mH8Uw+Ou#!e|u`3q#aJEv+Lm|Jwl@Hj{4Mpu=t4HmUq zSiYQcxMb|~M5=$o^A+#q@9r>pQvKw%&^cv?jW1MNSU>u&{G}tk*h3{uZqah*`a;H+ zZlOgx86Vx+(35ne!ri6g_Z$`#^@p2I>j}F!iBI06$>+CX!#h*HHPKR14R<1~);7#C zIY{N>$mBvx;l#GNnV~{s&~poxLcRJLP4hqu7cl zjRes~Gpi|`oKy0i?Y=NEv_tv-_K=8fhE+lf)+n~~7_CfSld&nZbETm3mDCx{n@>(s zRpEXiFyU>4p8oB8?|r%&om1ZE8N@2g~eoYRfoqSi4NT* zQzvck^l>_R!u?g|f}WsxlLE5t8Zb&uj1-t3n!5dNnetkJQx!6E+?CVpS1olu#&*!X zJA9x2$-mP?rnvKq&+!#aUp?uxm%V%OB<~KVWhaA;dlSyMNjy|kb5~yc&sE8B=7f_e zPs{AJA1wdIe3IjC$ft9kuC6$md!k_*L*@rl! zKJBgkca>+Nl0TnPkHwNp-(36@gN{YBx1~rkUVhPRt~(|7$}?S8|4kexJ0@Do$k-jS z6r9ZGw8-No)7&{%g4?{ZzxxQ6Sa46Dl(TI~wcbU?m4)ZO+%5F+*#2p!@!Z~|M8%%! z8FCNI%rH@TmVj!CrOE zV&+F|wOyRY`V}|c+pd3aj)}{ngHkDa`@_EE^?kV_WHxET2aahUn`esk@kl%8s`#wb zYx(iRMYAMs>HEno8yCvoe*f_Ci;PVXta%ewWpr=)dDuqeNO-1*&yw?U;$OPc(rZ&g z3l3dk6n~z+?1Pw2i{XZ2(z7r0*Ed~X_-sRZV&pp+t=UQICq6sppuGIb^-~fe|EjG- za!-7IzjjUSH?@?90(&0(R_gzdy6H!WW?bMbjj+Uni5CnbV--KEevz;H@v!LQ*@aCj zn_PZP<#l=J6t_-MZ}!Vs%XvN)&fS#jeMGg-vTL7PZSmO{iDjxnh1$Ek7k9<|pEr{s z?&r3{3_dT`2etlVx#WB|{YJT1aP=jdSu!aXQo~dCufC-aTNcW%$FLL;M zF+geJ0=J238Q&Lvy)JvG;?NBj&6VDuEnFfs%Y3%AuGu%kWQs@1*P~MF<0ZJbuP<1? zZ-$4;re8^y1lESeyjm`JeZGlyaosM9)Kb14-IXtATOh!{a?8F6 z@-M~NWcTSbUZ3-YCD}*hY^-o+qkCBV8q2L)?GDb?=rOSQ-sHu~;##WFq1K)C?DgFE zE5<^RwSjiFH?tm0UA$}6K8e74&8zsQ@JTi`Xw_FlZ`cvxzV+pki5x#qGJXBpv1Xsf z$-ozDLd^~>vu=4X)$!_u{inQ^v|i6_`|H*4syOQ6Yre3XbDB#78n*KAbgn!uTRtZs z)3VWZuj0h3;wQf z{9?D}PTwS#+>Cbp2|mj!V_&_V(k2vHE4VqqB)vE)dW&Xyfx?^9l_8JX>Yx33z5csM z$M1CYsntukqGFscUEuoUzT)>`29^D19tlXU>gW^@IlEFc*~R(Q%v8-yyWGO!bB zQZn-XY*aM)=F&A=3zsxsH5H1io!Ih-Pkf39XaB0Clbe?HJ>-s7dKpy6Vf^@pXke{j zrpKZ^Tjokkzqz64QSutCj$3Y7qN%P&s@%ikRc;A?TYN_}y_-Q~&tl$PRs3(}6|D{3 z@96gZe*OMJ$$AS7Bg;*(i!#1ES#U&P#XgJDS0QgD7X6v`>!^>@n|U$^kG0eu?e_fp zYJTUWWDld||2K;})ql4{NS7X7jm8&rYq6tn07h z;>=dr#AVt!qe6E_Gs>}F3IcuI-(|2`a$KotWizjzdt`Oo!W3F-R|?ubJeB7 zmpAS@?bGL?#584Lu=HxV%kD~<9mzrJuFulfF1l+g7`o7aNm1k2rZY>fd%NgaDNgLD zdo)L)@Nh+{=M>|KK|YrP^cU<}eZ@}h)aP^7{c*>f&zpZ->0j%`cvqlRuKv%*jE)--XDeoH=^$TCtRu3h&1Y+Iy51O(_n15zw;h_5N3D4b5*ZogVjU>kGEd zC5m~aH~C+=z5aXlwU#ZDq^PI!%;0OqE9{p4D|tHYYIywKH}bs=RfilqQz5OFQDc8VbiZ(?&e6LJmnK-v@VEc_ zMcCh_@a@*?THh7BLl3L{jd~mO%5~H0(D2ySyhpDEE?1m2y}n}kN!>>RQ%%m>evf$@ z_9iGH=Agjm-h-C&E1yY5{x(iOrvo;B9aD{B=|9j;k_i5ZUGM9@?`}Q3iZ@T^yz@rI z>nkTGnFQN>y%Ox(@k_JlW8vjHJBxcw4@}`+)O%ca`<+J`>6gPiUN4+mcFS|+1f_`{ zSLP+&XSgKrE%3GTZi|49?+2Lque^=UV;2gnpS)*r@aj(w>VKY&PnjcFqayHj`~AAC zgDV&pt?il;-a7Y$`zv!T(MJM4BA=Elsabw%om{8OtQFJO*K;iqv&>y!D}1e^YW)JI z9c#i{FT65GeqZBv{j{pet5Vy}_wA(hKUT;8?K<~$sebKAMbI8QGd4D( zgquBA7%m31_GbS7`+a)E5xJ5-ACI5zH`NpBv`cBw0RX}-A!E-##udFeut zLpu|*YyHfn$;#ysJS!49I-A_2l-|db-!0X-+_K=tYPpWM>ED{y&p$V87X zj5<>}PUL2~uDPt1oe^@HGkZ^aQ`JP1km~0zPBrSAM=WcRy86_jOjYP_lC}c-N=c_F z3Sw6ue@&Kmlu&2NB8U9l z&4mkXKAlirGr8;ML*;WZ3%BV^y(PA8%6=u^E2TXyi_Ge^bKk98KCkNC&gU*$5>*$f ze7{qC{#tbYTiumQbRNsI1m?Xwxqyv3@Y01Mm$3Z-<&3>$sVB}SICwd~yDF7)Sm{AT zip%zmdYx6ti#vZ;-rG~jZ~H|cX_KtsM)}ji2~5xHK7KpME?@I>YPip|V=6zU&G+_~ zQs3yhLC<)_Yfq_H<{m7MZ(Du4k!<~5=>k_|2y?tfKw!Q{N?y85lOxOA6ImiJ^nHUm zIGK6h`qZ-@n|0RwzRY6}(FA)l_s5b8w^=zV=qyxU@oL-cJm>ndnaakUUF|(9D$WJ` z_llI?7a#w$_WRxIETW$tJ~=s=)#3Uz**(^QC(3pv2lCrbjCeWIEueYBd&Y+^(}fnz z{TRe~uk!8I>pB}-WSjaK1uA_epKNKCQC)vqahFqzbwo?o9R{VTd-B%L<8TRUHhGfN z=Jz?{{^K=~n^QKrD_5@R@!HkRf8^uy`St(Kn%{q;J>kFVj+^}-f1a=Zw^;tKhMx7? zEtmh;)WtqLx36kp+j;x{HiB1vDac=SDm*S*uF4co;-Jvv=$m-)_~wzTyXt7lwT(!{)J zS!uEyE4kih`1FmM7<&(bNvG zNIJ&nkoK{)O#Qf$$eqFqj_jO;Whc(pecP;1)G2<;*UCY`sJz%JXY19lu&{N8uh&gpAd!3JjncE-51lV= zu6=Z*Gw1xrD;0WA6gPUb%oF@|tIzsf$GHhnHnO$F0&TySi>@3@8mruA^Y54=Y+m0ac%r}qVI@Kp!T7= zr#B_bylI}apr(8C3A?;}wgoGaA75oDue);KVae(*H&e5+6)(@tdZzt(YgnST*<9`Q zdnOrbcs%)Vn1A_{*0U>0+K-hZci-R1{&qL7d)*6sy!FcCeShEPw+9_FJiorPB*fHs{_F$m{W=$a`T0&_ z>Wh+PhH^i*HeC_w6m@p4XbjMoxMjPODMe$u`O^c>+a3tFb=%DoUTLT$DAgv#`}M=> zhtHcn>E4{w5wb6Itts2~`*pv|_y3NK7he2TuKJCj)Yp5}?`5k`JH9yId8CWwX3L@@ z8j<_gt`N)+`L!ZlN~$8@;~L91zCAbp|D6BdlSxac^B`lnvapen)+@2ZIiF?)UO63E zutR8phYFkgiGKk+nJT=hLXowGtM%1{I@j!*k$V1+y#9fxPwrRtzGpZ%;nuW|TTAa9 z69$w6*vgy~NDV~d5{;N40X%P*pop@JS>BpwZ64MVyPXBqZ z)?Fige(kpHQ-e1C>j;l2JUZFmuJT4=J7=c8mcsQnD;D<&CFkaszxj6i{=c$+e|}!A zKGwBHU#PQg)xH;OeKRZy&&L)`xGnT*(XXVpE7z8`uh{r$@B7+*&;QBtzh}g3-gJId zL6D}|^q8W~imv|pKaZ9AwX&OUWK7=^dB3Rqbl*~+T!z2rR5o?~`6hU&EM@z}nOFS< zRxVsP;THD`A16+`NyV=Z@Yg(GHvQo)6j^(5t%kh9o}4111as~~FERwKYg*lVfBm8O+JE6URAXj4srx@aV|;$ef|EA| z{WKMLKQ>C_J>Omy`0mVc_d{0~Ewp3QUCb`Dchx?LNqsMbH7DfR9BbM8?bhiku^2J) ztecb8+iWhZtl0B5W}VKxX~JOxDP7Wb+nuFl`fL|px$jV3+xsK9 zgg>Y0kVd2+tNtYGCbf*>F2)}xmtIt|e)?v~*U6iw$V~K?-l@50+8oFC#_f}5r!3l_ zt>`W-99g?D{AjHUkJr(H1);p!JD;X-7%1!z^>lbt@pxYN*|wd<-MZT*u)NEg;&xs{ z_3Q!L_YqTbZSW<{?{er(PA>ie&G>{M6le=|OzR@bah&0n8-y7JamBj+OP zKMY-IPNhF+KLSGeb{{7&iljmH`S^YuJ@tZ;C_U5&D}b-V{<{< zm3K8NmlS-J{{KjPe}RXmXX-7*iCVW*r!6RpEDKTF{@{ev#Cd5AQ&W0>^fv#HdD>SP zrM5&mZ^uJ*`=6a#xxY`H_Q@qI{>@aAC;Jw?Ts=Wl)sDmTUR#QYUrBL?cT1k)tt<7$ z7X|7xx##UvfBTigqg_d6=TF`9Vu6n)8CR%A{G9R+)NfV!82WC;yw&^kcmCK{K5xDJ zzYp!7PFxUR<O;UcpTt45AX;X_5)V4-PXUk@7KDd zBkGpFvCzr2cZ*Kz-t5%zTH!uzzvYh1S65bUu{079pS|p=>mqZH%oDagMdjIvV%uJ6 z1~1!SoWR@S6j|)dw$e4!xI6F16$zOuiidnz=I_Y=YPiind*1tfOQ%>~OMbL%ySAO` z(uM!}Hz#R@Xm7 zp_{aLPTd-JhQ9Mkxv{lhud4l6T6vad5zmI`eRtiJYf9u^|7;wg`6fnc?hG7nZMSI%Ac= zYFo&XEaTI%T&E?YH6WkKndMxN&IB7dNr`t3pCva43aAxnrRA(np0jfyxSV@+K-1^k z!>QYUM8>>~|6+6~P{X|}asGm~OCc={7kqs_aH;$)suMZC{MyuLqphYBPrT~B+E8wF zL}qGp(eI+gljkgHo|Ebw7Vo37>DQxEu3_;q6#-LggQq;#3qJfqgkxQ-8TWFh@2Ve_ zu63=^oSgCHRkx?}{@-`s?>Kg1Dc8|Y)5G6A>Ysk=l>hm2%l9Uw?pna0^e`^NBV(mo z&)%)t#i2g}9y%SDDfWptDBQVbpM}P3cYd2A<(%T6Hf3*V?%oGY++INn{_`pxbxw+k z{J|n7*im*ncl#%Y{I7?58Wg^FNp0GDwq;uYhmi1^5K!l~@Pm23+y$QM7Nz@lCFDK7 zDt(>8<0>ciMQ4)J9L0~zC$;UcOino2C8Z#%AoY9A=5s|w53d|jaE+^ZZhe1YtL4H3 zkBgpjq?mSev$-oxT)DPuTH?$gY4OCsnR#xqlbO{1d;7Uv6ivw#uwFdNw97F%HQViz z-;sX7l{eF+nYDCIh{^2(G?=?Y4%AMJbR zS|yj(g7#t`Ixr<{!UV-6Q@<77rce9MO8=IKDZLunq@Qyna_ZMFLY*#Rjk+n9PrTz+ zTV%_5IcfDV&A7!s+HR%kxc6N4xw!3ysG$hI&4&a3|GodOr6R)Wup`|5=Sly%pQq!m zMNj;(IIXEzX|BcQRkCxYpUdY-J+p-~uG`H`Y2u{`I(Cb?mUW(BEk6+-`u*|h_`h1# ze41_(6@H0a?q3t~&LHH_8fC`N3TsEt4STq*b+l!A-m-nU(%G|kPHMi1OL1DL*y6yg zQQbz#H<#~S)xGWgzTaFM^`(S6T`ma-Z<X#tK~XnL;k*sbunAc^qkv$=h5>@|Njg2vvmEXeZICNXbme^b@MW*CjQnBB{$aD{P^{5NST~=Nw)K?VC1Mr!-3{ZH11cM7iXc%$wBh zpV5`sqF}l4#mR_C$NTI5B&Qzx9igf}kws-%=#qU#)kU3cadUJ0C+m3Er={Ka&Sdn! zaLRi9Py18SN^Xee)_6E4t^Dob-1$V|;qR#LJ1$>~&fmMK?(>Ak^dpaSyB*3L-2%Te zO}rs^QtTc7R|l`WZQ8r`xWy{wZ(i-c=>6$=Q+e2VPX?uPc}Hw8l~NLjyfwLP*R?2b z!-zw#V$1I?owX>1+f1P}VQINWd)bY|_E59_ds(a3ib&5g$-Jar|I^!3x;Cd^hDT<{ zo(F=Z$~#3@pO0b84XpKQ@858AfquV)R9BHz?1ccUH|H&%%Ul&Kb)4|yooI-llEb6- zll`nbpNEzvgvL*iS(@s%_>9H-ldf7QB1cd1I=_m&Jt)yY9Sxc>PpsrRz-gwtE_?GKpJ0dU*xy z$U4kxzU6eZvF@~0^Q=EibeFr>)R?h&fAdyhc31vt=AO3rDK~>y4$YEEN!eYrxNq;v zWwYnBD=vC7+k>e{@=Qc3BWJsXOuFX9RKHT!^VydIlmgj(uE_EhPR(F@+^EhN+BSOw zkHExh5y`#na#bAS96OG3?>HPSoqN!0Prj4SmH9tE&;S2MAbI}R7mNF|&K}T7WjgIV zVZqyrZvxsHjEx(rN}WX9EQ*R8wK6m~G)yd7Cv6OpiB>gQw(m8ss*on{O=(+ktM66E zeAlqEX}G0uZam@h&9~Z9FROhK18d*TutjEup6(x$T%2!Amvh*@XzRocPH&kmf8aZ& zs6BDR9D|-0+g=p(?~HLaP~i0Dm+t+eQP{WY-*r`9RiUrB(uV}^sGVq?xh$tuiiyKh z{n$q?j;06Bs~2@oy|&1rvSm-^J8<|uoT0teNyKo=QO7k_){1|*&l6D=&8UoV`b$}Qw~dRn>**P zM#oAqwNuY7s$RZd`~9xbGwb#Cbt<|hDU(Gzr}m!7?p1I&_MqayO20(iNk22VnJyV0 zW2g-gvo?26o)I)TX_pzJjNj4Er>-T3KTQ=V&?+^NGjED;k$WX46(udz^{jT=YvIJ4 zfV;ud&Mw}4)X)0ulhado-l`ODmAo8Zez)|fgVMwf_S?yO?ikqbw)y`oOLqSZs0-V9y76hY<%*_+Gg&E9R<4~WdrdXWr~A1}lk3c#?XHrV zYc{yfn!&7n?3W(Tj6G~GHN92XR`&D!j`;lJdi$$Q?g~jBUQ(~b-Z9+w(~J}9%lWu= z?Fq5-ohCdh9|^c78(h5bSfS7C#Eyk|wyF02f1W>WckWN$@_ALOPHnJZvPs>3w`_Lo z^!U1+u`*mo8x$vYB+NhIBA*mtw{e-tmZ#IAyHd6bxMpSFw2{&Yxc}#w`R1d=f0gFn zuyVL0@LfIRTDsP3ckX=+N)tU&nisezP4oawxge^FFq2J{TewQi?-U$fyZxS&;V0%M z7f{{r)Dkk|*^KF85j$(&-Pw8n@4Ir#b0JO_>K?Dzd`>7Mo<~8b^UW=;n>M?cxMb&4 zKARc1KX3ovZ^0A8mt`9oc&I2vhuXC(Y+V?B-%IO|$BSI+{W)^6d4W$n6S7%M_+*4m zI%dsqEu6pb`nSGF=SO*8`p@zFj&l~h_rB)2^>O+7J$L$&4ovWH(PghS4e^z!>W!YL zqs@MlN%(7D%H%eaMVCDb|Ns4d{m51c50xOPNdaenX#6zR3i|#rr(;dk;r>?+t$~Nv z$p3dJ5-`r5lJ4z)^V4ki`1-$Jf1Qt<3mUonw%~60{n&}Sb{Mnqb%vapa{u-8;LM#L zV^}@Dyn8jTn2Yt*IqUZ>-F{d1i{|WgdN!r>u1!?i-gv*yFTC~lUg2L>`Q^#U$shS* zYkz%tDf4ZgwdXgjSTW{K7qPwUHCNoD)xWwg?8q=)+qPv*t!m8GUmI7yc`hjW-uvWf zz33!y>79J3pZ0d9ZFB#6W9qc6v(GMmzx(|@rHK)oO_gs8c2r0Bx;pW`@7mUJ%x^Wf zfaLwS3(kSl+gZ8AeCAjLuHaf{xXf^3!<$QAb$(SoP`)hFw=gSxLeBIV9#`sjACU^( zyeY%PB|ZH0>Mp@uc@LEHbFb%4eIQ>ezi5lyHm>w(d#wZoJ0?WkT(zeE&y2H+g*$)s ze|&wI^I}&3!>VcFJWD6CCAPCHaWPT#du;qQ*W{0)vukEqY=g|Eqhiq#*U$Cb+-f>; zh4pQLrWg8|8aY;pe>=A?Vn57!tZ>~~li7l?XISh-2nR0gV$<Xo-@uRVNTCR(WTpa4sNYBJ-ljz zX6=5nsk<@9=;wEqIj6qNcbBgfdEc?|+A-&q6O#KZpPBFf*_)YP|NAz-#RCSVOM&jP zS3fWK>eBRg#xMP}cF{@=)8`s1+bw0DI`7*czf<%1>=9Kn zo2wU7_;;7yaTa9w`D*q5`s(jY(V<(PG1k;(zc2okm+9T8<$N&c=#9V^2Ga}{Hwbn( z9dhP0c6nmi$t;*G@lncSPmy7ldDoHC21XiwJf~K~NXp7F8$M{BK3UQsVU37}YgCk+ zZtlz1b2eX}RliF($l_~Yqn*Wn`8#vp)s`tve=vXR^|;r+&pkf+e0{&-qYRGAhCi0C zTeOI&es|v9wQDOL9I(H)zc5}q{>J{F&t@MzdUQqQwOtO4*QA)|Pt^`z7qOA)_Sp}M z4*oy9cay{7*xAh;f6|ryxE^ZYm^{g1ud21Xa@#HQ1BstA1S@~P-QF)_xhdvMvC>3qzeKXZy_Kt0IkEj*?Bx@c{7Z86gTKK#Eyt%m zJv}`+rA519dE0y2sxKO+nt$XbbiSzCSo!70$H!N%9_y7}9`&b`yL4-Nl!nr-xI1SY zU3wIil#U4q8n$(G+^~__eK?>=N;mqi@3&YC>GmAgwnznC6ZrD>HKbN%SIkeaSihjxDXcaK_IIy~-Ion6eBEpGqsNAj9Q z$4+JDTn})$a`5VO3)fyv#Wh{WblUeSMIWpvWC7gcQe7{qCqqzU^=JR&l@1}Qk zSV_!wU%W~(i1RM@pDJgUBNDGNG-BJ5)^~OM2yk;bBB8WM0_0J%e!fDrv=;f%zjFMLF%a<>IeB&2e&hg{7 z7Of0kz9{s|6wP3>{Cj6iuesd0RTVtTefqR%NsV8*_4gRm{`zv}%o*+L7qz6^_xEd; z-TS?Ek*Hu{-ix-wzh0`(t4MlxXJ>|D@3Tj1*}b;4#>@7uT?7h{9hD|=y^_g)=A|~X z^Ut#^Ry$R@VDjGhU(7q3;~r;-_O4sIqlszL-(O#oS7$7GeaJjjzV^$+`!-UV%{yk= zR+}BOtBCGj`%R;|ZSVRS(oz-$3itZX&Nk-{T|F`K#4>)n9}MOTKAJ?k3LCcNIegC8 zQx&fJ=h?-TD_2HkUoSmB$Flh#-@Vq<^z`HtkInnPMY}Fmd3W|kyI>LEXY|WOqZ86sH2HBqylDctweq31S zd}Ct2=#9Fyrf)jGo)&#*mDO4E^XYW$@O4kzA{WJbaGLcWV;1+5J^u0gVnx$}=lg1Z zZ_B&ewd3ZtTK@+YJ*}`k|9;@X7jJ-;M{| z;A^@l?B@KUYFqJhzcbOwJq5C!DLo&xd)Gv54iPBdTegMbbyr((MwPvHq7Nl{&O>dBMCQx&g<3U)Fb=a=}O zvHoAkk(YCY=1*1NbPT+rct?6`rmo$BU&}JDPkd$aRxQnnFY%n+ZGX*g_C4W1xiF&`yU3K1UmGhp9pLBGeGuu?^&>_j3qyt{5*Gt!TDk>%M{QN!h(&fwf zk1{w8>Gl|2KLV->wp?ozGdFK@Ibt6-Q&CANOP2dBUwil5t_}^eA2vR`sd@5XM5m(Crm))0+t)nW z6m4K+Z)qxVVUg_BiH<2BFKZ=-+_%9Lv2<_OAGp*z0kv;Y~98zxRTo#{8)+ zDN|Ri1)swRYz_ z2`1653M;*cVChF9rE3)X+7EqAeB5Pvtm_cJ%=$$~S6anydwDlpd7?-Eyqn@$^)g0p z9$LTCyYb=N>dj*NE|xp&N?&8&w&~gr{ar35>moL&z522|>*&q2^KHF`W=cB_NGNqF z9^;mL-TBF8wX17?+lQ0t+3}pMvzMQ%m*h|C{krwwkCtP*W;qxrE?E-k>748wdNk8q zV*0$&-H+L(Z2ej)p1oR2c+#ayRo^b&%3QH}<<5Y4Q)bP)w0L>0a^jztiqeK!IR%dj zO@|ZRwpSdg=M8^9enZ?<}u(F1`_UCvoev z4S~nJPOMnJeVx9x?yUd6o^29#H``-pul_%Omh@|Xd25UMquYKg+0wyMR=aK8x@E66 zvTEB!Z+^1-uQiwa%*5WVG@T@m%4vo!BGop+mf`veQ6*QDXJ$l;pUB{9^`E=;)SKJF z#+RA;idP2CvI)Jpz{_9Ge}D3epB_OPs_J^Wzn{D`-r4%Nh)exX=EWuZtDeYzI(|-1 z*D@@$?$P<|_{6ZSe0@jxx^b>r_R#H{A-}wIfawe@iB`X&`iz!OeH-FGG>*u3>XZc&3 zlK#!*_d9b+QiRjAci#8oJB~~VaGq=EW*Oxwc)ly>SXBRF#YGXyk5rF#hiN_NxTaMl zIN{nsPJjLT`@S8mkN=ZVHJ@?fv$kq?+k3C|KgDd+EHtY5^X0$I*SqT8Y9_Jk&PsoJ zu;BMQ`@(|j_4#q)J^qp*7FM=~Keh`$&-pq1e(kSz&6BoOPw#zqICvv7*Hn4)F^?O< z=T}65{3j8pX6d&@;(FjErB`gTtIPjQ*8i9Nbme>HhtK39w=Yjgdpz~#7uElBX3ToX z_UPZgpHrWE)pvCJpLt_#AR)h_`oo2|y+&I-j^*w=$YO4)`uhF9m%ZHSU9O%{>-TjQ zUW@9i3vOF2c)n`hm8i@A&dJ;r6O>Gzw(pz#&d2KPF`O1rE?dHK52^pSKXsw^>Nu&e z&Toggm;YGvH16)Jkl1Qxkz^4&E>|CmH*;@od-?smzY!?zmDj|6&cA*4-}e;$J9YIi<=p1U+flEb>}a8=X7dbWai@b`<592^-Fc0 zw{;|SbJUf!zUuzxf7(3N#qjto?c;vW(gkL_3kzBogG$tn4nr4EGZfU+7DSYxuTGV? zy1Fi3!=SEoDQf!EsV|w?`L0~Q{@A5dM=6Qz>a}a{Zf \uicontrol Git > + \uicontrol {Local Repository} > \uicontrol {Branches}. The checked out branch is shown in bold and underlined in the list of branches. Double-click branch names to edit them. @@ -528,6 +529,9 @@ \row \li \uicontrol Rebase \li Copy local commits to the updated upstream head. + \row + \li \uicontrol Reset + \li Hard reset the active branch to the selected branch. \row \li \uicontrol {Cherry Pick} \li Cherry pick the top commit from the selected branch. @@ -540,7 +544,8 @@ Patches are rewriting instructions that can be applied to a set of files. To apply a patch file that is open in \QC, select \uicontrol Tools > \uicontrol Git > - \uicontrol {Local Repository} > \uicontrol {Apply from Editor}. + \uicontrol {Local Repository} > \uicontrol Patch > + \uicontrol {Apply from Editor}. To select the patch file to apply from the file system, select \uicontrol {Apply from File}. From 659b0b47883da1dbd5496185853bbbc0f0bdc1d0 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 27 Jul 2016 15:51:20 +0200 Subject: [PATCH 52/86] Android: Add context objects for QObject::connect with functors If several threads can be involved in the signal/slot exchange we need to show the receiver objects to connect() so that the signals can be queued when necessary. Change-Id: I24b4fe90095ce10eeeff9618faff97bd9d05c6eb Reviewed-by: BogDan Vatra --- src/plugins/android/androidanalyzesupport.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/plugins/android/androidanalyzesupport.cpp b/src/plugins/android/androidanalyzesupport.cpp index e64b839969c..0c859c8f198 100644 --- a/src/plugins/android/androidanalyzesupport.cpp +++ b/src/plugins/android/androidanalyzesupport.cpp @@ -72,35 +72,35 @@ AndroidAnalyzeSupport::AndroidAnalyzeSupport(AndroidRunConfiguration *runConfig, auto runner = new AndroidRunner(this, runConfig, runControl->runMode()); - connect(runControl, &AnalyzerRunControl::finished, + connect(runControl, &AnalyzerRunControl::finished, runner, [runner]() { runner->stop(); }); - connect(runControl, &AnalyzerRunControl::starting, + connect(runControl, &AnalyzerRunControl::starting, runner, [runner]() { runner->start(); }); - connect(&m_outputParser, &QmlDebug::QmlOutputParser::waitingForConnectionOnPort, + connect(&m_outputParser, &QmlDebug::QmlOutputParser::waitingForConnectionOnPort, this, [this, runControl](Utils::Port) { runControl->notifyRemoteSetupDone(m_qmlPort); }); - connect(runner, &AndroidRunner::remoteProcessStarted, + connect(runner, &AndroidRunner::remoteProcessStarted, this, [this](Utils::Port, Utils::Port qmlPort) { m_qmlPort = qmlPort; }); - connect(runner, &AndroidRunner::remoteProcessFinished, + connect(runner, &AndroidRunner::remoteProcessFinished, this, [this, runControl](const QString &errorMsg) { runControl->notifyRemoteFinished(); runControl->appendMessage(errorMsg, Utils::NormalMessageFormat); }); - connect(runner, &AndroidRunner::remoteErrorOutput, + connect(runner, &AndroidRunner::remoteErrorOutput, this, [this, runControl](const QString &msg) { runControl->appendMessage(msg, Utils::StdErrFormatSameLine); m_outputParser.processOutput(msg); }); - connect(runner, &AndroidRunner::remoteOutput, + connect(runner, &AndroidRunner::remoteOutput, this, [this, runControl](const QString &msg) { runControl->appendMessage(msg, Utils::StdOutFormatSameLine); m_outputParser.processOutput(msg); From 4bdd1ffbf7aa315e6e2a3298b7934b4f16d2a1fd Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 27 Jul 2016 18:25:06 +0200 Subject: [PATCH 53/86] Themes: Enable using the original Window color for toolbars This patch adds a flag which enables the "fancy" side/tool/status bars to use the original Window color from the application palette. The flag is disabled for all themes by default. Task-number: QTCREATORBUG-16331 Change-Id: I1433e865e1903012d521a2cdb7083f110086e455 Reviewed-by: Thomas Hartmann --- share/qtcreator/themes/dark.creatortheme | 1 + share/qtcreator/themes/default.creatortheme | 1 + share/qtcreator/themes/flat-dark.creatortheme | 1 + share/qtcreator/themes/flat-light.creatortheme | 1 + share/qtcreator/themes/flat.creatortheme | 1 + src/libs/utils/stylehelper.cpp | 6 ++++++ src/libs/utils/theme/theme.h | 3 ++- 7 files changed, 13 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme index 1963587a2bd..546827ee1d2 100644 --- a/share/qtcreator/themes/dark.creatortheme +++ b/share/qtcreator/themes/dark.creatortheme @@ -216,6 +216,7 @@ FlatSideBarIcons=true FlatProjectsMode=true FlatMenuBar=true ToolBarIconShadow=true +WindowColorAsBase=false [Gradients] DetailsWidgetHeaderGradient\1\color=0 diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme index da10636a8f5..ceb0f39f439 100644 --- a/share/qtcreator/themes/default.creatortheme +++ b/share/qtcreator/themes/default.creatortheme @@ -187,6 +187,7 @@ FlatSideBarIcons=false FlatProjectsMode=false FlatMenuBar=false ToolBarIconShadow=true +WindowColorAsBase=false [Gradients] DetailsWidgetHeaderGradient\1\color=ffffff diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index 820b7fa8877..d2e194dd3f6 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -221,6 +221,7 @@ FlatSideBarIcons=true FlatProjectsMode=true FlatMenuBar=true ToolBarIconShadow=true +WindowColorAsBase=false [Gradients] DetailsWidgetHeaderGradient\1\color=0 diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme index 6c8d65440ad..f801f9eaa5b 100644 --- a/share/qtcreator/themes/flat-light.creatortheme +++ b/share/qtcreator/themes/flat-light.creatortheme @@ -198,6 +198,7 @@ FlatSideBarIcons=true FlatProjectsMode=false FlatMenuBar=false ToolBarIconShadow=false +WindowColorAsBase=false [Gradients] DetailsWidgetHeaderGradient\1\color=0 diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme index 2f49efef577..285bc9c99ce 100644 --- a/share/qtcreator/themes/flat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -197,6 +197,7 @@ FlatSideBarIcons=true FlatProjectsMode=false FlatMenuBar=false ToolBarIconShadow=true +WindowColorAsBase=false [Gradients] DetailsWidgetHeaderGradient\1\color=0 diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 1dfe1d89ddc..78d20c55db5 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -114,6 +114,12 @@ QColor StyleHelper::m_requestedBaseColor; QColor StyleHelper::baseColor(bool lightColored) { + static const bool windowColorAsBase = creatorTheme()->flag(Theme::WindowColorAsBase); + if (windowColorAsBase) { + static const QColor windowColor = QApplication::palette().color(QPalette::Window); + return windowColor; + } + if (!lightColored) return m_baseColor; else diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index a32e7b05533..dd2eac9a0d2 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -326,7 +326,8 @@ public: FlatSideBarIcons, FlatProjectsMode, FlatMenuBar, - ToolBarIconShadow + ToolBarIconShadow, + WindowColorAsBase }; bool flag(Flag f) const; From 80ca67e43fea432e58305b31c552d31306ac352f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 10:25:51 +0200 Subject: [PATCH 54/86] StyleHelper: Fixing alphaBlendedColors Change-Id: Ib2f5e37e213e221ecfcce876ed2f44013815ca46 Reviewed-by: Alessandro Portale --- src/libs/utils/stylehelper.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 78d20c55db5..088b7ff5154 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -66,14 +66,14 @@ QColor StyleHelper::mergedColors(const QColor &colorA, const QColor &colorB, int QColor StyleHelper::alphaBlendedColors(const QColor &colorA, const QColor &colorB) { - const QRgb base = colorA.rgba(); - const QRgb overlay = colorB.rgba(); - const qreal overlayIntensity = qAlpha(overlay) / 255.0; - return qRgba( - qMin(qRed(base) + qRound(qRed(overlay) * overlayIntensity), 0xff), - qMin(qGreen(base) + qRound(qGreen(overlay) * overlayIntensity), 0xff), - qMin(qBlue(base) + qRound(qBlue(overlay) * overlayIntensity), 0xff), - qMin(qAlpha(base) + qAlpha(overlay), 0xff)); + const int alpha = colorB.alpha(); + const int antiAlpha = 255 - alpha; + + return QColor( + (colorA.red() * antiAlpha + colorB.red() * alpha) / 255, + (colorA.green() * antiAlpha + colorB.green() * alpha) / 255, + (colorA.blue() * antiAlpha + colorB.blue() * alpha) / 255 + ); } qreal StyleHelper::sidebarFontSize() From 8c42cd9e23ee3be7d757960be95678f9743a5ed7 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 27 Jul 2016 14:48:16 +0200 Subject: [PATCH 55/86] AutoTest: Fix retrieval of executable Respect different location if tests are installed before executing. Task-number: QTCREATORBUG-16638 Change-Id: I2d154e26cdd0f28bd51e7a885c5486d36af38a68 Reviewed-by: Christian Kandeler --- src/plugins/autotest/testconfiguration.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/testconfiguration.cpp b/src/plugins/autotest/testconfiguration.cpp index 0e92789ae3f..1082594009b 100644 --- a/src/plugins/autotest/testconfiguration.cpp +++ b/src/plugins/autotest/testconfiguration.cpp @@ -151,7 +151,12 @@ void TestConfiguration::completeTestInformation(int runMode) Runnable runnable = rc->runnable(); if (isLocal(rc) && runnable.is()) { StandardRunnable stdRunnable = runnable.as(); - if (stdRunnable.executable == targetFile) { + // we might have an executable that gets installed - in such a case the + // runnable's executable and targetFile won't match - but the (unique) display name + // of the run configuration should match targetName + if (stdRunnable.executable == targetFile + || (!targetName.isEmpty() && rc->displayName() == targetName)) { + targetFile = stdRunnable.executable; workDir = Utils::FileUtils::normalizePathName(stdRunnable.workingDirectory); env = stdRunnable.environment; hasDesktopTarget = true; From 876ec5996ce16e58702d1d0ff3f0285aad54e78b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 27 Jul 2016 14:39:36 +0200 Subject: [PATCH 56/86] QmlDesigner.FormEditor: Adjust CSS for LineEdit Change-Id: I7d4fbb3c16747f6d2b290db18b7c48b63a23bdd3 Reviewed-by: Alessandro Portale --- .../components/resources/formeditorstylesheet.css | 9 +++++++++ .../qmldesigner/components/resources/stylesheet.css | 8 -------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/plugins/qmldesigner/components/resources/formeditorstylesheet.css b/src/plugins/qmldesigner/components/resources/formeditorstylesheet.css index f11a2a42d4c..1ab3cf047f3 100644 --- a/src/plugins/qmldesigner/components/resources/formeditorstylesheet.css +++ b/src/plugins/qmldesigner/components/resources/formeditorstylesheet.css @@ -14,3 +14,12 @@ QGraphicsView:focus { background-color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate; } +QLineEdit +{ + color: creatorTheme.PanelTextColorLight; + border: 1px solid creatorTheme.QmlDesignerBackgroundColorDarker; + padding: 2px 8px; + margin: 2px; + background-color: creatorTheme.FancyToolButtonSelectedColor; + selection-background-color: darkgray; +} diff --git a/src/plugins/qmldesigner/components/resources/stylesheet.css b/src/plugins/qmldesigner/components/resources/stylesheet.css index 15de3f502fd..126ac51b29e 100644 --- a/src/plugins/qmldesigner/components/resources/stylesheet.css +++ b/src/plugins/qmldesigner/components/resources/stylesheet.css @@ -37,14 +37,6 @@ QTabWidget::pane { /* The tab widget frame */ background-color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate; } -QLineEdit -{ - border: 2px solid #8F8F8F; - padding: 0 8px; - background-color: white; - selection-background-color: darkgray; -} - QLineEdit#itemLibrarySearchInput { color: creatorTheme.PanelTextColorLight; From b8a22a5ec1a9c974cafbef148077f3836c392b95 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 12:28:43 +0200 Subject: [PATCH 57/86] QmlDesigner: Rework of theming colors * Use the original fancy toolbar colors by removing the Alpha channel. * Use the splitter colors for borders to avoid white borders in light themes. * Use the FancyToolButtonHoverColor for buttons and combo boxes. Change-Id: Id636e0713c8e2769c5eb03a115a60ccad8226f23 Reviewed-by: Alessandro Portale --- .../common/DesignerScrollViewStyle.qml | 4 +-- .../itemLibraryQmlSources/ItemDelegate.qml | 4 +-- .../HelperWidgets/ButtonRowButton.qml | 2 +- .../HelperWidgets/CustomCheckBoxStyle.qml | 2 +- .../HelperWidgets/CustomComboBoxStyle.qml | 19 +++-------- .../HelperWidgets/CustomSpinBoxStyle.qml | 4 +-- .../HelperWidgets/LineEdit.qml | 10 +++--- .../HelperWidgets/RoundedPanel.qml | 8 ++--- .../statesEditorQmlSources/StatesDelegate.qml | 2 +- .../statesEditorQmlSources/StatesList.qml | 2 +- .../components/componentcore/theming.cpp | 32 +++++++++++-------- .../components/resources/scrollbar.css | 12 +++---- 12 files changed, 46 insertions(+), 55 deletions(-) diff --git a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml index ba826a424ad..c7741be76fa 100644 --- a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml +++ b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml @@ -29,8 +29,8 @@ import QtQuick.Controls.Styles 1.1 ScrollViewStyle { readonly property color scrollbarColor: creatorTheme.BackgroundColorDark - readonly property color scrollbarBorderColor: creatorTheme.QmlDesignerBackgroundColorDarker - readonly property color scrollBarHandleColor: creatorTheme.QmlDesignerBackgroundColorLighter + readonly property color scrollbarBorderColor: creatorTheme.QmlDesignerBorderColor + readonly property color scrollBarHandleColor: creatorTheme.QmlDesignerButtonColor padding {left: 0; top: 0; right: 0; bottom: 0} diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml index e32c19de79b..cd046a65e38 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml @@ -28,9 +28,9 @@ import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.0 Rectangle { - color: creatorTheme.QmlDesignerBackgroundColorLighter + color: creatorTheme.QmlDesignerButtonColor - border.color: creatorTheme.BackgroundColorDark + border.color: creatorTheme.QmlDesignerBorderColor border.width: 1 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index ef134a1a554..ccaf16a06f7 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -78,7 +78,7 @@ Item { anchors.fill: parent visible: !checked - color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate + color: creatorTheme.QmlDesignerButtonColor } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomCheckBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomCheckBoxStyle.qml index 054c807ec4f..b553c81d0d3 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomCheckBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomCheckBoxStyle.qml @@ -38,7 +38,7 @@ CheckBoxStyle { color: control.pressed ? creatorTheme.FancyToolButtonHoverColor : creatorTheme.FancyToolButtonSelectedColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor anchors.margins: 1 } Image { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml index 680317bd8ab..318f689a636 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml @@ -40,30 +40,19 @@ ComboBoxStyle { Rectangle { anchors.fill: parent visible: !control.pressed - color: creatorTheme.FancyToolButtonSelectedColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerButtonColor + border.color: creatorTheme.QmlDesignerBorderColor border.width: 1 } Rectangle { - color: creatorTheme.FancyToolButtonHoverColor + color: creatorTheme.QmlDesignerBackgroundColorDarker anchors.fill: parent visible: control.pressed - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor border.width: 1 } - Rectangle { - color: creatorTheme.IconsBaseColor - width: 1 - anchors.right: imageItem.left - anchors.topMargin: 4 - anchors.bottomMargin: 4 - anchors.rightMargin: 6 - anchors.top: parent.top - anchors.bottom: parent.bottom - } - Image { id: imageItem width: 8 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml index 82adcd00e4d..e6f73eebb29 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml @@ -67,7 +67,7 @@ SpinBoxStyle { background: Rectangle { implicitWidth: Math.max(64, styleData.contentWidth) implicitHeight: 23 - color: creatorTheme.FancyToolButtonSelectedColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml index 56c651859bc..6d9e86d23aa 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml @@ -118,8 +118,8 @@ Controls.TextField { background: Rectangle { implicitWidth: 100 implicitHeight: 24 - color: creatorTheme.FancyToolButtonSelectedColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor } } @@ -172,10 +172,8 @@ Controls.TextField { y: 1 Rectangle { anchors.fill: parent - border.color: creatorTheme.QmlDesignerBackgroundColorDarker - color: control.pressed - ? creatorTheme.QmlDesignerBackgroundColorLighter - : creatorTheme.FancyToolButtonHoverColor + border.color: creatorTheme.QmlDesignerBorderColor + color: creatorTheme.QmlDesignerBackgroundColorDarker opacity: control.hovered || control.pressed ? 1 : 0.75 } Image { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml index 6f5afaa5a97..a0f3fe17966 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml @@ -43,8 +43,8 @@ Rectangle { */ border.width: roundLeft || roundRight ? 1 : 0 - color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerButtonColor + border.color: creatorTheme.QmlDesignerBorderColor Rectangle { anchors.fill: parent @@ -71,7 +71,7 @@ Rectangle { } Rectangle { - color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBorderColor anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right @@ -81,7 +81,7 @@ Rectangle { } Rectangle { - color: creatorTheme.QmlDesignerBackgroundColorDarker + color: creatorTheme.QmlDesignerBorderColor anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml index 323eaf17c39..209b6d478d9 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml @@ -37,7 +37,7 @@ Rectangle { property int delegateStateImageSize color: baseColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor MouseArea { anchors.fill: parent diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml index 099e76ad3f7..c9cc82ee326 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml @@ -111,7 +111,7 @@ FocusScope { background: Rectangle { property color buttonBaseColor: Qt.darker(creatorTheme.QmlDesignerBackgroundColorDarkAlternate, 1.1) color: control.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor - border.color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor border.width: 1 Image { source: "image://icons/plus" diff --git a/src/plugins/qmldesigner/components/componentcore/theming.cpp b/src/plugins/qmldesigner/components/componentcore/theming.cpp index a096b9b51ee..c2ba9b37d9c 100644 --- a/src/plugins/qmldesigner/components/componentcore/theming.cpp +++ b/src/plugins/qmldesigner/components/componentcore/theming.cpp @@ -27,31 +27,31 @@ #include "qmldesignericonprovider.h" #include +#include #include namespace QmlDesigner { +QColor midtone(const QColor &a, const QColor &b) +{ + QColor alphaB = b; + alphaB.setAlpha(128); + return Utils::StyleHelper::alphaBlendedColors(a ,alphaB); +} + void Theming::insertTheme(QQmlPropertyMap *map) { const QVariantHash creatorTheme = Utils::creatorTheme()->values(); for (auto it = creatorTheme.constBegin(); it != creatorTheme.constEnd(); ++it) map->insert(it.key(), it.value()); - /* Custom Colors */ - - QColor darkerBackground = Utils::creatorTheme()->color(Utils::Theme::BackgroundColorDark); - - if (darkerBackground.value() < 40) - darkerBackground = darkerBackground.lighter(150); - - map->insert("QmlDesignerBackgroundColorDarker", darkerBackground.darker(120)); - map->insert("QmlDesignerBackgroundColorLighter", darkerBackground.lighter(140)); - - if (darkerBackground.value() < 100) - map->insert("QmlDesignerBackgroundColorDarkAlternate", darkerBackground.lighter(120)); - else - map->insert("QmlDesignerBackgroundColorDarkAlternate", darkerBackground.lighter(110)); + /* Define QmlDesigner colors and remove alpha channels */ + const QColor panelStatusBarBackgroundColor = Utils::creatorTheme()->color(Utils::Theme::PanelStatusBarBackgroundColor); + const QColor fancyToolButtonSelectedColor = Utils::creatorTheme()->color(Utils::Theme::FancyToolButtonSelectedColor); + const QColor darkerBackground = Utils::StyleHelper::alphaBlendedColors(panelStatusBarBackgroundColor, fancyToolButtonSelectedColor); + const QColor fancyToolButtonHoverColor = Utils::creatorTheme()->color(Utils::Theme::FancyToolButtonHoverColor); + const QColor buttonColor = Utils::StyleHelper::alphaBlendedColors(panelStatusBarBackgroundColor, fancyToolButtonHoverColor); Utils::creatorTheme()->color(Utils::Theme::PanelTextColorLight); QColor tabLight = Utils::creatorTheme()->color(Utils::Theme::PanelTextColorLight); @@ -64,8 +64,12 @@ void Theming::insertTheme(QQmlPropertyMap *map) tabDark = tabDark.darker(260); } + map->insert("QmlDesignerBackgroundColorDarker", darkerBackground); + map->insert("QmlDesignerBackgroundColorDarkAlternate", midtone(panelStatusBarBackgroundColor, buttonColor)); map->insert("QmlDesignerTabLight", tabLight); map->insert("QmlDesignerTabDark", tabDark); + map->insert("QmlDesignerButtonColor", buttonColor); + map->insert("QmlDesignerBorderColor", Utils::creatorTheme()->color(Utils::Theme::SplitterColor)); } QString Theming::replaceCssColors(const QString &input) diff --git a/src/plugins/qmldesigner/components/resources/scrollbar.css b/src/plugins/qmldesigner/components/resources/scrollbar.css index e55255fcb82..35606d21f68 100644 --- a/src/plugins/qmldesigner/components/resources/scrollbar.css +++ b/src/plugins/qmldesigner/components/resources/scrollbar.css @@ -1,18 +1,18 @@ QScrollBar:vertical { background-color: creatorTheme.BackgroundColorDark; - border: 1px solid creatorTheme.QmlDesignerBackgroundColorDarker; + border: 1px solid creatorTheme.QmlDesignerBorderColor; margin-top: 3; margin-bottom: 3; width: 10; } QScrollBar::handle:vertical { - background-color: creatorTheme.QmlDesignerBackgroundColorLighter; + background-color: creatorTheme.QmlDesignerButtonColor; margin-top: -5; margin-bottom: -5; min-height: 18px; width: 8px; - border: 1px solid creatorTheme.QmlDesignerBackgroundColorDarker; + border: 1px solid creatorTheme.QmlDesignerBorderColor; border-width: 1; margin-left: -1; margin-right: -1; @@ -45,20 +45,20 @@ QScrollBar:horizontal { background-color: creatorTheme.BackgroundColorDark; - border: 1px solid creatorTheme.QmlDesignerBackgroundColorDarker; + border: 1px solid creatorTheme.QmlDesignerBorderColor; margin-left: 3; margin-right: 3; height: 10; } QScrollBar::handle:horizontal { - background-color: creatorTheme.QmlDesignerBackgroundColorLighter; + background-color: creatorTheme.QmlDesignerButtonColor; margin-left: -5; margin-right: -5; min-width: 18px; height: 8px; - border: 1px solid creatorTheme.QmlDesignerBackgroundColorDarker; + border: 1px solid creatorTheme.QmlDesignerBorderColor; border-width: 1; margin-top: -1; margin-bottom: -1; From dd2d17ed36e8f7c9ade33a31c688a4b974e12071 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 10:14:31 +0200 Subject: [PATCH 58/86] QmlDesigner.FormEditor: Do not overwrite auxiliaryData width/height We using F2/goto into component the auxiliaryData is typically already set. Change-Id: Ib201198f5fcd7a716fb416b54537488cc5b68afc Reviewed-by: Alessandro Portale --- .../qmldesigner/components/formeditor/formeditorview.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 1e3f09fac2a..8e8c996793a 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -424,8 +424,10 @@ void FormEditorView::instanceInformationsChange(const QMultiHashupdateActions(); } else { From c7ba291c68bc97f7236e93d6c0235a6a66db5b48 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 27 Jul 2016 11:30:35 +0200 Subject: [PATCH 59/86] QmlDesigner.ItemLibrary: Adding logging category This makes it possible to debug the .metainfo files in a release build/package. Change-Id: Iceae98b0e00b9d4deba0ae3f31b1f55fca2c5cf2 Reviewed-by: Alessandro Portale --- .../itemlibrary/itemlibrarymodel.cpp | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index f68f520e20f..08e65c847b3 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -36,11 +36,14 @@ #include #include +#include #include #include #include #include +static Q_LOGGING_CATEGORY(itemlibraryPopulate, "itemlibrary.populate") + static bool inline registerItemLibrarySortedModel() { qmlRegisterType(); return true; @@ -150,23 +153,35 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model) if (import.isLibraryImport()) imports << import.url() + QLatin1Char(' ') + import.version(); + + qCInfo(itemlibraryPopulate) << Q_FUNC_INFO; foreach (ItemLibraryEntry entry, itemLibraryInfo->entries()) { - NodeMetaInfo metaInfo = model->metaInfo(entry.typeName()); - bool valid = metaInfo.isValid() && metaInfo.majorVersion() == entry.majorVersion(); - bool isItem = valid && metaInfo.isSubclassOf("QtQuick.Item"); + qCInfo(itemlibraryPopulate) << entry.typeName() << entry.majorVersion() << entry.minorVersion(); - if (!isItem && valid) { - qDebug() << Q_FUNC_INFO; - qDebug() << metaInfo.typeName() << "is not a QtQuick.Item"; - qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName); - } + NodeMetaInfo metaInfo = model->metaInfo(entry.typeName()); - if (valid - && isItem //We can change if the navigator does support pure QObjects - && (entry.requiredImport().isEmpty() - || model->hasImport(entryToImport(entry), true, true))) { + qCInfo(itemlibraryPopulate) << "valid: " << metaInfo.isValid() << metaInfo.majorVersion() << metaInfo.minorVersion(); + + bool valid = metaInfo.isValid() && metaInfo.majorVersion() == entry.majorVersion(); + bool isItem = valid && metaInfo.isSubclassOf("QtQuick.Item"); + + qCInfo(itemlibraryPopulate) << "isItem: " << isItem; + + qCInfo(itemlibraryPopulate) << "required import: " << entry.requiredImport() << entryToImport(entry).toImportString(); + + if (!isItem && valid) { + qDebug() << Q_FUNC_INFO; + qDebug() << metaInfo.typeName() << "is not a QtQuick.Item"; + qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName); + } + + if (valid + && isItem //We can change if the navigator does support pure QObjects + && (entry.requiredImport().isEmpty() + || model->hasImport(entryToImport(entry), true, true))) { QString itemSectionName = entry.category(); + qCInfo(itemlibraryPopulate) << "Adding:" << entry.typeName() << "to:" << entry.category(); ItemLibrarySection *sectionModel = sectionByName(itemSectionName); if (sectionModel == 0) { From 638279cc98d1d4262aa38b5223809c9519ad17bd Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 12:33:07 +0200 Subject: [PATCH 60/86] QmlDesigner.PropertyEditor: Unify size of controls Change-Id: I375396ada5f394247346c3a66319796295894641 Reviewed-by: Alessandro Portale --- .../HelperWidgets/BoolButtonRowButton.qml | 2 +- .../propertyEditorQmlSources/HelperWidgets/CheckBox.qml | 1 + .../propertyEditorQmlSources/HelperWidgets/ComboBox.qml | 2 +- .../HelperWidgets/CustomComboBoxStyle.qml | 2 +- .../HelperWidgets/CustomSpinBoxStyle.qml | 4 ++-- .../propertyEditorQmlSources/HelperWidgets/FontComboBox.qml | 2 +- .../propertyEditorQmlSources/HelperWidgets/LineEdit.qml | 2 +- .../propertyEditorQmlSources/HelperWidgets/SpinBox.qml | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml index 28ebab18040..2b413caaef3 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/BoolButtonRowButton.qml @@ -84,6 +84,6 @@ ButtonRowButton { ExtendedFunctionButton { backendValue: boolButtonRowButton.backendValue x: 2 - y: 4 + anchors.verticalCenter: parent.verticalCenter } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml index 263e154bf01..d69490d53ad 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CheckBox.qml @@ -39,6 +39,7 @@ Controls.CheckBox { ExtendedFunctionButton { x: 22 + anchors.verticalCenter: parent.verticalCenter backendValue: checkBox.backendValue visible: checkBox.enabled } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml index 8f982032713..08f76b4f252 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ComboBox.qml @@ -112,7 +112,7 @@ Controls.ComboBox { ExtendedFunctionButton { x: 2 - y: 6 + anchors.verticalCenter: parent.verticalCenter backendValue: comboBox.backendValue visible: comboBox.enabled } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml index 318f689a636..97d10c2c789 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomComboBoxStyle.qml @@ -35,7 +35,7 @@ ComboBoxStyle { background: Item { implicitWidth: 120 - implicitHeight: 25 + implicitHeight: 24 Rectangle { anchors.fill: parent diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml index e6f73eebb29..bdfb067640d 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml @@ -60,13 +60,13 @@ SpinBoxStyle { height: 4 source: "image://icons/down-arrow" x: 1 - y: 2.5 // Hack! Spinbox sets an non-int offset, somewhere + y: 3 } } background: Rectangle { implicitWidth: Math.max(64, styleData.contentWidth) - implicitHeight: 23 + implicitHeight: 24 color: creatorTheme.QmlDesignerBackgroundColorDarker border.color: creatorTheme.QmlDesignerBorderColor } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontComboBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontComboBox.qml index 6b8c0fea649..dafd287dd85 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontComboBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/FontComboBox.qml @@ -68,7 +68,7 @@ Controls.ComboBox { ExtendedFunctionButton { x: 2 - y: 4 + anchors.verticalCenter: parent.verticalCenter backendValue: comboBox.backendValue visible: comboBox.enabled } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml index 6d9e86d23aa..afabd39276e 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/LineEdit.qml @@ -52,7 +52,7 @@ Controls.TextField { ExtendedFunctionButton { x: 2 - y: 6 + anchors.verticalCenter: parent.verticalCenter backendValue: lineEdit.backendValue visible: lineEdit.enabled && showExtendedFunctionButton } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml index 08ac2a01573..2a07b058178 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml @@ -35,7 +35,7 @@ Controls.SpinBox { ExtendedFunctionButton { x: 2 - y: 4 + anchors.verticalCenter: parent.verticalCenter backendValue: spinBox.backendValue visible: spinBox.enabled } From dbe42bf040a360f777b1eaabc5a7763c0edf602f Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 28 Jul 2016 13:17:54 +0200 Subject: [PATCH 61/86] QmlDesigner: Avoid double borders between items in the item library Change-Id: I09ecba996d269a63ab24668f7f8a1c0669d9a2af Reviewed-by: Thomas Hartmann --- .../itemLibraryQmlSources/ItemDelegate.qml | 96 ++++++++++--------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml index cd046a65e38..f7836ffdf5d 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml @@ -27,56 +27,58 @@ import QtQuick 2.1 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.0 -Rectangle { - color: creatorTheme.QmlDesignerButtonColor - - border.color: creatorTheme.QmlDesignerBorderColor - border.width: 1 - - - Image { - id: itemIcon // to be set by model - - anchors.top: parent.top - anchors.topMargin: styleConstants.cellVerticalMargin - anchors.horizontalCenter: parent.horizontalCenter - - width: itemLibraryIconWidth // to be set in Qml context - height: itemLibraryIconHeight // to be set in Qml context - source: itemLibraryIconPath // to be set by model - } - - Text { - id: text - font.pixelSize: 9 - elide: Text.ElideMiddle - wrapMode: Text.WordWrap - anchors.top: itemIcon.bottom - anchors.topMargin: styleConstants.cellVerticalSpacing - anchors.left: parent.left - anchors.leftMargin: styleConstants.cellHorizontalMargin - anchors.right: parent.right - anchors.rightMargin: styleConstants.cellHorizontalMargin - anchors.bottom: parent.bottom - anchors.bottomMargin: styleConstants.cellHorizontalMargin - - verticalAlignment: Qt.AlignVCenter - horizontalAlignment: Qt.AlignHCenter - text: itemName // to be set by model - color: creatorTheme.PanelTextColorLight - renderType: Text.NativeRendering - } - - MouseArea { - id: mouseRegion +Item { + Rectangle { + anchors.rightMargin: 1 + anchors.topMargin: 1 anchors.fill: parent - property bool reallyPressed: false - property int pressedX - property int pressedY + color: creatorTheme.QmlDesignerButtonColor - onPressed: { - rootView.startDragAndDrop(itemLibraryEntry) + Image { + id: itemIcon // to be set by model + + anchors.top: parent.top + anchors.topMargin: styleConstants.cellVerticalMargin + anchors.horizontalCenter: parent.horizontalCenter + + width: itemLibraryIconWidth // to be set in Qml context + height: itemLibraryIconHeight // to be set in Qml context + source: itemLibraryIconPath // to be set by model + } + + Text { + id: text + font.pixelSize: 9 + elide: Text.ElideMiddle + wrapMode: Text.WordWrap + anchors.top: itemIcon.bottom + anchors.topMargin: styleConstants.cellVerticalSpacing + anchors.left: parent.left + anchors.leftMargin: styleConstants.cellHorizontalMargin + anchors.right: parent.right + anchors.rightMargin: styleConstants.cellHorizontalMargin + anchors.bottom: parent.bottom + anchors.bottomMargin: styleConstants.cellHorizontalMargin + + verticalAlignment: Qt.AlignVCenter + horizontalAlignment: Qt.AlignHCenter + text: itemName // to be set by model + color: creatorTheme.PanelTextColorLight + renderType: Text.NativeRendering + } + + MouseArea { + id: mouseRegion + anchors.fill: parent + + property bool reallyPressed: false + property int pressedX + property int pressedY + + onPressed: { + rootView.startDragAndDrop(itemLibraryEntry) + } } } } From 735bf2cf09d658ea5e4074cb13c38212ebedb0fe Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 28 Jul 2016 15:04:43 +0200 Subject: [PATCH 62/86] Doc: Fix capitalization of "Editor settings" label in docs Change-Id: I3ee24f7eb52c71057ee88004d98acd977dbd2841 Reviewed-by: Leena Miettinen --- doc/src/projects/creator-projects-settings-editor.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/projects/creator-projects-settings-editor.qdoc b/doc/src/projects/creator-projects-settings-editor.qdoc index 3914bc0b125..f1f49b90fba 100644 --- a/doc/src/projects/creator-projects-settings-editor.qdoc +++ b/doc/src/projects/creator-projects-settings-editor.qdoc @@ -52,7 +52,7 @@ \li Select \uicontrol Projects > \uicontrol Editor. - \li In the \uicontrol {Editor Settings} field, select \uicontrol {Custom}. + \li In the \uicontrol {Editor settings} field, select \uicontrol {Custom}. \li Specify text editor settings for the project. From 589aef89e0c98849dda2356f5982644a779abe8f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 14:29:51 +0200 Subject: [PATCH 63/86] QmlDesigner: Remove lines/borders from scrollbars Change-Id: Iefc1d6a42df2aa858b68d4ce25840c766a8c86cb Reviewed-by: Alessandro Portale --- .../qmldesigner/common/DesignerScrollViewStyle.qml | 5 ----- .../qmldesigner/components/resources/scrollbar.css | 8 ++++---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml index c7741be76fa..0b21e2bbfb6 100644 --- a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml +++ b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml @@ -29,7 +29,6 @@ import QtQuick.Controls.Styles 1.1 ScrollViewStyle { readonly property color scrollbarColor: creatorTheme.BackgroundColorDark - readonly property color scrollbarBorderColor: creatorTheme.QmlDesignerBorderColor readonly property color scrollBarHandleColor: creatorTheme.QmlDesignerButtonColor padding {left: 0; top: 0; right: 0; bottom: 0} @@ -38,15 +37,11 @@ ScrollViewStyle { height: 10 width: 10 color: scrollbarColor - border.width: 1 - border.color: scrollbarBorderColor } handle: Item { implicitWidth: 10 implicitHeight: 10 Rectangle { - border.color: scrollbarBorderColor - border.width: 1 anchors.fill: parent color: scrollBarHandleColor } diff --git a/src/plugins/qmldesigner/components/resources/scrollbar.css b/src/plugins/qmldesigner/components/resources/scrollbar.css index 35606d21f68..164417a4c91 100644 --- a/src/plugins/qmldesigner/components/resources/scrollbar.css +++ b/src/plugins/qmldesigner/components/resources/scrollbar.css @@ -1,6 +1,6 @@ QScrollBar:vertical { background-color: creatorTheme.BackgroundColorDark; - border: 1px solid creatorTheme.QmlDesignerBorderColor; + border: none; margin-top: 3; margin-bottom: 3; width: 10; @@ -12,7 +12,7 @@ margin-bottom: -5; min-height: 18px; width: 8px; - border: 1px solid creatorTheme.QmlDesignerBorderColor; + border: none; border-width: 1; margin-left: -1; margin-right: -1; @@ -45,7 +45,7 @@ QScrollBar:horizontal { background-color: creatorTheme.BackgroundColorDark; - border: 1px solid creatorTheme.QmlDesignerBorderColor; + border: none; margin-left: 3; margin-right: 3; height: 10; @@ -58,7 +58,7 @@ margin-right: -5; min-width: 18px; height: 8px; - border: 1px solid creatorTheme.QmlDesignerBorderColor; + border: none; border-width: 1; margin-top: -1; margin-bottom: -1; From f398e7d22ac710dd8ed7bc110b56424e4e3c6b2f Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 24 Jul 2016 09:42:35 +0300 Subject: [PATCH 64/86] TextEditor: Use initial palette for default colors The theme might be incompatible with the text style settings, especially those that rely on the default palette (and were designed before themes were implemented). Task-number: QTCREATORBUG-16482 Change-Id: I8f63460ad250a494dcafd11366d7bacdbb71c142 Reviewed-by: Thomas Hartmann Reviewed-by: Alessandro Portale --- src/plugins/texteditor/colorschemeedit.cpp | 3 +++ src/plugins/texteditor/fontsettingspage.cpp | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/plugins/texteditor/colorschemeedit.cpp b/src/plugins/texteditor/colorschemeedit.cpp index 198f03b11f5..18b719ba2fb 100644 --- a/src/plugins/texteditor/colorschemeedit.cpp +++ b/src/plugins/texteditor/colorschemeedit.cpp @@ -26,6 +26,8 @@ #include "colorschemeedit.h" #include "ui_colorschemeedit.h" +#include + #include #include @@ -148,6 +150,7 @@ ColorSchemeEdit::ColorSchemeEdit(QWidget *parent) : m_formatsModel(new FormatsModel(this)), m_readOnly(false) { + setPalette(Utils::Theme::initialPalette()); m_ui->setupUi(this); m_ui->itemList->setModel(m_formatsModel); diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 97865a404ae..7357510abda 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -253,15 +253,17 @@ FormatDescription::FormatDescription(TextStyle id, QColor FormatDescription::defaultForeground(TextStyle id) { if (id == C_LINE_NUMBER) { - const QColor bg = QApplication::palette().background().color(); + const QPalette palette = Utils::Theme::initialPalette(); + const QColor bg = palette.background().color(); if (bg.value() < 128) - return QApplication::palette().foreground().color(); + return palette.foreground().color(); else - return QApplication::palette().dark().color(); + return palette.dark().color(); } else if (id == C_CURRENT_LINE_NUMBER) { - const QColor bg = QApplication::palette().background().color(); + const QPalette palette = Utils::Theme::initialPalette(); + const QColor bg = palette.background().color(); if (bg.value() < 128) - return QApplication::palette().foreground().color(); + return palette.foreground().color(); else return QColor(); } else if (id == C_PARENTHESES) { @@ -277,7 +279,7 @@ QColor FormatDescription::defaultBackground(TextStyle id) if (id == C_TEXT) { return Qt::white; } else if (id == C_LINE_NUMBER) { - return QApplication::palette().background().color(); + return Utils::Theme::initialPalette().background().color(); } else if (id == C_SEARCH_RESULT) { return QColor(0xffef0b); } else if (id == C_PARENTHESES) { @@ -287,7 +289,7 @@ QColor FormatDescription::defaultBackground(TextStyle id) } else if (id == C_AUTOCOMPLETE) { return QColor(192, 192, 255); } else if (id == C_CURRENT_LINE || id == C_SEARCH_SCOPE) { - const QPalette palette = QApplication::palette(); + const QPalette palette = Utils::Theme::initialPalette(); const QColor &fg = palette.color(QPalette::Highlight); const QColor &bg = palette.color(QPalette::Base); @@ -308,8 +310,7 @@ QColor FormatDescription::defaultBackground(TextStyle id) fg.blueF() * ratio + bg.blueF() * (1 - ratio)); return col; } else if (id == C_SELECTION) { - const QPalette palette = QApplication::palette(); - return palette.color(QPalette::Highlight); + return Utils::Theme::initialPalette().color(QPalette::Highlight); } else if (id == C_OCCURRENCES) { return QColor(180, 180, 180); } else if (id == C_OCCURRENCES_RENAME) { From 5303a9b48578b75adc7f28a5cf2e21202e975121 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 27 Jul 2016 16:10:19 +0200 Subject: [PATCH 65/86] QmlDesigner.PropertyEditor: Show border between buttons without this it is not 100% clear that we have separated buttons. Change-Id: I2d8ee228a0104d68e381d23c5435a1b9cb7cf4cb Reviewed-by: Alessandro Portale --- .../HelperWidgets/ButtonRowButton.qml | 2 -- .../propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml index ccaf16a06f7..8b956fb6c40 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ButtonRowButton.qml @@ -65,7 +65,6 @@ Item { anchors.fill: parent RoundedPanel { roundLeft: isFirst() && buttonRowButton.roundLeftButton - roundRight: isLast() anchors.fill: parent visible: checked @@ -74,7 +73,6 @@ Item { RoundedPanel { roundLeft: isFirst() - roundRight: isLast() anchors.fill: parent visible: !checked diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml index a0f3fe17966..2389de12f1e 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/RoundedPanel.qml @@ -30,8 +30,8 @@ import QtQuick.Layouts 1.0 Rectangle { id: panel - property bool roundLeft: false - property bool roundRight: false + property bool roundLeft: true + property bool roundRight: true /* From 80352d703c6fdcbac6c3d92e00da9ae75aeea352 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 28 Jul 2016 15:24:20 +0200 Subject: [PATCH 66/86] Tests: Disable QTest crashhandler for plugin unit tests Temporary workaround to avoid dead lock when executing plugin unit test. Change-Id: Ie6c3673d756ff3b67320bcc75d590933e58a5276 Reviewed-by: Ulf Hermann --- src/libs/extensionsystem/pluginmanager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index e26863265e1..63d98408538 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -1024,6 +1024,8 @@ static int executeTestPlan(const TestPlan &testPlan) << QLatin1String("arg0") // fake application name << QLatin1String("-maxwarnings") << QLatin1String("0"); // unlimit output qExecArguments << functions; + // avoid being stuck in QTBUG-24925 + qExecArguments << "-nocrashhandler"; failedTests += QTest::qExec(testObject, qExecArguments); } From 14428c1586854846a2320c86e8621d65d9f4fc0a Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 27 Jul 2016 08:48:46 +0200 Subject: [PATCH 67/86] Clang: Decrease order of snippets The order is 0 by default and thus the snippet items were at the very top, e.g.: enum EnumType { EnumValue }; void f() { EnumType et = // Complete here and see snippet items at top } Change-Id: I70a160d102b91a2589972354c50aa5f0b29323e8 Reviewed-by: Tim Jenssen --- .../clangcodemodel/clangcompletionassistprocessor.cpp | 3 ++- src/plugins/cpptools/cppcompletionassistprocessor.cpp | 5 +++-- src/plugins/cpptools/cppcompletionassistprocessor.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 0fde4dd2763..f979a33af8a 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -136,7 +136,8 @@ using namespace CPlusPlus; using namespace TextEditor; ClangCompletionAssistProcessor::ClangCompletionAssistProcessor() - : m_completionOperator(T_EOF_SYMBOL) + : CppCompletionAssistProcessor(100) + , m_completionOperator(T_EOF_SYMBOL) { } diff --git a/src/plugins/cpptools/cppcompletionassistprocessor.cpp b/src/plugins/cpptools/cppcompletionassistprocessor.cpp index 5dd52285388..d1a1be9baca 100644 --- a/src/plugins/cpptools/cppcompletionassistprocessor.cpp +++ b/src/plugins/cpptools/cppcompletionassistprocessor.cpp @@ -40,7 +40,7 @@ using namespace CPlusPlus; namespace CppTools { -CppCompletionAssistProcessor::CppCompletionAssistProcessor() +CppCompletionAssistProcessor::CppCompletionAssistProcessor(int snippetItemOrder) : m_positionForProposal(-1) , m_preprocessorCompletions(QStringList() << QLatin1String("define") @@ -72,7 +72,8 @@ CppCompletionAssistProcessor::CppCompletionAssistProcessor() << QLatin1String("endif")) , m_hintProposal(0) , m_snippetCollector(QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID), - QIcon(QLatin1String(":/texteditor/images/snippet.png"))) + QIcon(QLatin1String(":/texteditor/images/snippet.png")), + snippetItemOrder) { } diff --git a/src/plugins/cpptools/cppcompletionassistprocessor.h b/src/plugins/cpptools/cppcompletionassistprocessor.h index 7ccc632e635..535ce62a5e9 100644 --- a/src/plugins/cpptools/cppcompletionassistprocessor.h +++ b/src/plugins/cpptools/cppcompletionassistprocessor.h @@ -45,7 +45,7 @@ namespace CppTools { class CPPTOOLS_EXPORT CppCompletionAssistProcessor : public TextEditor::IAssistProcessor { public: - CppCompletionAssistProcessor(); + CppCompletionAssistProcessor(int snippetItemOrder = 0); protected: void addSnippets(); From ccf040239fa47dd3ee8b490367b4a8209e5a73ff Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 15:02:45 +0200 Subject: [PATCH 68/86] QmlDesigner.PropertyEditor: Improve binding editor The binding editor now behaves like a modal dialog in the property editor. Change-Id: I9b1a0635dbe5cc0b055225411af653dd8bf6b735 Reviewed-by: Leena Miettinen Reviewed-by: Tim Jenssen --- .../HelperWidgets/ExtendedFunctionButton.qml | 207 ++++++++++-------- 1 file changed, 112 insertions(+), 95 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml index a3d14a710e6..2eaf898b6ac 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ExtendedFunctionButton.qml @@ -125,123 +125,140 @@ Item { } } - Rectangle { - parent: itemPane - visible: false - x: 6 + Item { + + Rectangle { + anchors.fill: parent + color: creatorTheme.QmlDesignerBackgroundColorDarker + opacity: 0.6 + } + + MouseArea { + anchors.fill: parent + } + id: expressionDialog + visible: false + parent: itemPane - onVisibleChanged: { - var pos = itemPane.mapFromItem(extendedFunctionButton.parent, 0, 0); - y = pos.y + 2; - } + anchors.fill: parent - width: parent.width - 12 - height: 120 - radius: 2 - color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate - //border.color: creatorTheme.QmlDesignerBackgroundColorDarker - border.color: creatorTheme.QmlDesignerTabLight - Controls.TextField { - id: textField - anchors.fill: parent - anchors.leftMargin: 4 - anchors.rightMargin: 4 - anchors.topMargin: 4 - anchors.bottomMargin: 20 - onAccepted: { - backendValue.expression = textField.text - expressionDialog.visible = false + Rectangle { + x: 4 + onVisibleChanged: { + var pos = itemPane.mapFromItem(extendedFunctionButton.parent, 0, 0); + y = pos.y + 2; } - style: TextFieldStyle { - textColor: creatorTheme.PanelTextColorLight - padding.top: 3 - padding.bottom: 1 - padding.left: 16 - placeholderTextColor: creatorTheme.PanelTextColorMid - background: Rectangle { - implicitWidth: 100 - implicitHeight: 23 - radius: 2 - color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate - } + width: parent.width - 8 + height: 160 + + radius: 2 + color: creatorTheme.QmlDesignerBackgroundColorDarkAlternate + border.color: creatorTheme.QmlDesignerBorderColor + + Label { + x: 8 + y: 6 + font.bold: true + text: qsTr("Binding Editor") } - } - Row { - spacing: 0 - Button { - width: 16 - height: 16 - style: ButtonStyle { - background: Item{ - Image { - width: 16 - height: 16 - source: "image://icons/error" - opacity: { - if (control.pressed) - return 0.5; - - if (control.hovered) - return 1.0; - - return 0.9; - } - Rectangle { - z: -1 - anchors.fill: parent - color: control.hovered? creatorTheme.FancyToolButtonSelectedColor : creatorTheme.BackgroundColorDark - border.color: creatorTheme.QmlDesignerBackgroundColorDarker - radius: 2 - } - } - } - } - onClicked: { + Controls.TextField { + verticalAlignment: Text.AlignTop + id: textField + anchors.fill: parent + anchors.leftMargin: 8 + anchors.rightMargin: 8 + anchors.topMargin: 24 + anchors.bottomMargin: 32 + onAccepted: { backendValue.expression = textField.text expressionDialog.visible = false } + + style: TextFieldStyle { + textColor: creatorTheme.PanelTextColorLight + padding.top: 6 + padding.bottom: 2 + padding.left: 6 + placeholderTextColor: creatorTheme.PanelTextColorMid + background: Rectangle { + implicitWidth: 100 + implicitHeight: 23 + radius: 2 + color: creatorTheme.QmlDesignerBackgroundColorDarker + border.color: creatorTheme.QmlDesignerBorderColor + } + } } - Button { - width: 16 - height: 16 - style: ButtonStyle { - background: Item { - Image { - width: 16 - height: 16 - source: "image://icons/ok" - opacity: { - if (control.pressed) - return 0.5; - if (control.hovered) + Row { + spacing: 2 + Button { + width: 16 + height: 16 + style: ButtonStyle { + background: Item{ + Image { + width: 16 + height: 16 + source: "image://icons/error" + opacity: { + if (control.pressed) + return 0.8; return 1.0; - - return 0.9; - } - Rectangle { - z: -1 - anchors.fill: parent - color: control.hovered? creatorTheme.FancyToolButtonSelectedColor : creatorTheme.BackgroundColorDark - border.color: creatorTheme.QmlDesignerBackgroundColorDarker - radius: 2 + } + Rectangle { + z: -1 + anchors.fill: parent + color: control.pressed || control.hovered ? creatorTheme.QmlDesignerBackgroundColorDarker : creatorTheme.QmlDesignerButtonColor + border.color: creatorTheme.QmlDesignerBorderColor + radius: 2 + } } } } + onClicked: { + backendValue.expression = textField.text + expressionDialog.visible = false + } } - onClicked: { - expressionDialog.visible = false + Button { + width: 16 + height: 16 + style: ButtonStyle { + background: Item { + Image { + width: 16 + height: 16 + source: "image://icons/ok" + opacity: { + if (control.pressed) + return 0.8; + return 1.0; + } + Rectangle { + z: -1 + anchors.fill: parent + color: control.pressed || control.hovered ? creatorTheme.QmlDesignerBackgroundColorDarker : creatorTheme.QmlDesignerButtonColor + border.color: creatorTheme.QmlDesignerBorderColor + radius: 2 + } + } + } + } + onClicked: { + expressionDialog.visible = false + } } + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.margins: 4 } - anchors.right: parent.right - anchors.bottom: parent.bottom - anchors.margins: 2 } } From b1477190de01afb12cc11a326f0fd36c8f026e06 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 28 Jul 2016 11:29:06 +0200 Subject: [PATCH 69/86] Fix qbs build on macOS "osx" -> "macos" Change-Id: Ie25e096b2759cf8f96411560fcca337169d80b08 Reviewed-by: Jake Petroules --- qbs/imports/QtcAutotest.qbs | 2 +- qbs/imports/QtcDocumentation.qbs | 2 +- qbs/imports/QtcFunctions/functions.js | 2 +- qbs/imports/QtcLibrary.qbs | 6 +++--- qbs/imports/QtcPlugin.qbs | 6 +++--- qbs/imports/QtcTool.qbs | 2 +- qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs | 2 +- qbs/modules/qtc/qtc.qbs | 16 ++++++++-------- share/share.qbs | 2 +- src/app/app.qbs | 10 +++++----- src/libs/ssh/ssh.qbs | 4 ++-- src/libs/utils/utils.qbs | 6 +++--- src/plugins/clearcase/clearcase.qbs | 2 +- src/plugins/coreplugin/coreplugin.qbs | 8 ++++---- src/plugins/ios/ios.qbs | 2 +- src/plugins/projectexplorer/projectexplorer.qbs | 2 +- .../componentsplugin/componentsplugin.qbs | 2 +- .../qmldesigner/qtquickplugin/qtquickplugin.qbs | 2 +- src/tools/3rdparty/iossim/iossim.qbs | 2 +- src/tools/3rdparty/iossim_1_8_2/iossim.qbs | 2 +- src/tools/clangbackend/clangbackend.qbs | 2 +- src/tools/iostool/iostool.qbs | 2 +- src/tools/qml2puppet/qml2puppet.qbs | 2 +- src/tools/sdktool/sdktool.qbs | 2 +- 24 files changed, 45 insertions(+), 45 deletions(-) diff --git a/qbs/imports/QtcAutotest.qbs b/qbs/imports/QtcAutotest.qbs index 35d67e7af2f..586626b22d6 100644 --- a/qbs/imports/QtcAutotest.qbs +++ b/qbs/imports/QtcAutotest.qbs @@ -26,7 +26,7 @@ QtcProduct { // The following would be conceptually right, but does not work currently as some autotests // (e.g. extensionsystem) do not work when installed, because they want hardcoded // absolute paths to resources in the build directory. - // cpp.rpaths: qbs.targetOS.contains("osx") + // cpp.rpaths: qbs.targetOS.contains("macos") // ? ["@loader_path/../Frameworks", "@loader_path/../PlugIns"] // : ["$ORIGIN/../" + qtc.libDirName + "/qtcreator", // "$ORIGIN/../" qtc.libDirName + "/qtcreator/plugins"] diff --git a/qbs/imports/QtcDocumentation.qbs b/qbs/imports/QtcDocumentation.qbs index 350033be174..c98ee8dec39 100644 --- a/qbs/imports/QtcDocumentation.qbs +++ b/qbs/imports/QtcDocumentation.qbs @@ -28,7 +28,7 @@ Product { Group { fileTagsFilter: ["qch"] - qbs.install: !qbs.targetOS.contains("osx") + qbs.install: !qbs.targetOS.contains("macos") qbs.installDir: qtc.ide_doc_path } } diff --git a/qbs/imports/QtcFunctions/functions.js b/qbs/imports/QtcFunctions/functions.js index 23a51f80e8f..c9dd1cf3a05 100644 --- a/qbs/imports/QtcFunctions/functions.js +++ b/qbs/imports/QtcFunctions/functions.js @@ -4,7 +4,7 @@ function qtLibraryName(qbs, name) if (qbs.debugInformation) { if (qbs.targetOS.contains("windows")) return name + "d"; - else if (qbs.targetOS.contains("osx")) + else if (qbs.targetOS.contains("macos")) return name + "_debug"; } return name; diff --git a/qbs/imports/QtcLibrary.qbs b/qbs/imports/QtcLibrary.qbs index e4dd782b116..5c54ba8894a 100644 --- a/qbs/imports/QtcLibrary.qbs +++ b/qbs/imports/QtcLibrary.qbs @@ -18,14 +18,14 @@ QtcProduct { var flags = base; if (qbs.buildVariant == "debug" && qbs.toolchain.contains("msvc")) flags.push("/INCREMENTAL:NO"); // Speed up startup time when debugging with cdb - if (qbs.targetOS.contains("osx")) + if (qbs.targetOS.contains("macos")) flags.push("-compatibility_version", qtc.qtcreator_compat_version); return flags; } - cpp.sonamePrefix: qbs.targetOS.contains("osx") + cpp.sonamePrefix: qbs.targetOS.contains("macos") ? "@rpath" : undefined - cpp.rpaths: qbs.targetOS.contains("osx") + cpp.rpaths: qbs.targetOS.contains("macos") ? ["@loader_path/../Frameworks"] : ["$ORIGIN", "$ORIGIN/.."] property string libIncludeBase: ".." // #include diff --git a/qbs/imports/QtcPlugin.qbs b/qbs/imports/QtcPlugin.qbs index e18607ffba7..8d68c234fe2 100644 --- a/qbs/imports/QtcPlugin.qbs +++ b/qbs/imports/QtcPlugin.qbs @@ -27,17 +27,17 @@ QtcProduct { cpp.internalVersion: "" cpp.defines: base.concat([name.toUpperCase() + "_LIBRARY"]) - cpp.sonamePrefix: qbs.targetOS.contains("osx") + cpp.sonamePrefix: qbs.targetOS.contains("macos") ? "@rpath" : undefined - cpp.rpaths: qbs.targetOS.contains("osx") + cpp.rpaths: qbs.targetOS.contains("macos") ? ["@loader_path/../Frameworks", "@loader_path/../PlugIns"] : ["$ORIGIN", "$ORIGIN/.."] cpp.linkerFlags: { var flags = base; if (qbs.buildVariant == "debug" && qbs.toolchain.contains("msvc")) flags.push("/INCREMENTAL:NO"); // Speed up startup time when debugging with cdb - if (qbs.targetOS.contains("osx")) + if (qbs.targetOS.contains("macos")) flags.push("-compatibility_version", qtc.qtcreator_compat_version); return flags; } diff --git a/qbs/imports/QtcTool.qbs b/qbs/imports/QtcTool.qbs index e8dd54efaa1..304e2e87a95 100644 --- a/qbs/imports/QtcTool.qbs +++ b/qbs/imports/QtcTool.qbs @@ -12,7 +12,7 @@ QtcProduct { '/' + qtc.ide_library_path); var relativePathToPlugins = FileInfo.relativePath('/' + qtc.ide_libexec_path, '/' + qtc.ide_plugin_path); - var prefix = qbs.targetOS.contains("osx") ? "@executable_path" : "$ORIGIN"; + var prefix = qbs.targetOS.contains("macos") ? "@executable_path" : "$ORIGIN"; return [ FileInfo.joinPaths(prefix, relativePathToLibs), FileInfo.joinPaths(prefix, relativePathToPlugins) diff --git a/qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs b/qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs index 88128a97d13..00d2d34bddc 100644 --- a/qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs +++ b/qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs @@ -8,7 +8,7 @@ Module { property bool enableProjectFileUpdates: true property bool installApiHeaders: false property string libInstallDir: qtc.ide_library_path - property stringList libRPaths: qbs.targetOS.contains("osx") + property stringList libRPaths: qbs.targetOS.contains("macos") ? ["@loader_path/" + FileInfo.relativePath('/' + appInstallDir, '/' + libInstallDir)] : ["$ORIGIN/..", "$ORIGIN/../" + qtc.ide_library_path] property string resourcesInstallDir: qtc.ide_data_path + "/qbs" diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index 955850dfa97..65ea37e7149 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -16,10 +16,10 @@ Module { + ide_compat_version_minor + '.' + ide_compat_version_release property string libDirName: "lib" - property string ide_app_path: qbs.targetOS.contains("osx") ? "" : "bin" - property string ide_app_target: qbs.targetOS.contains("osx") ? "Qt Creator" : "qtcreator" + property string ide_app_path: qbs.targetOS.contains("macos") ? "" : "bin" + property string ide_app_target: qbs.targetOS.contains("macos") ? "Qt Creator" : "qtcreator" property string ide_library_path: { - if (qbs.targetOS.contains("osx")) + if (qbs.targetOS.contains("macos")) return ide_app_target + ".app/Contents/Frameworks" else if (qbs.targetOS.contains("windows")) return ide_app_path @@ -27,24 +27,24 @@ Module { return libDirName + "/qtcreator" } property string ide_plugin_path: { - if (qbs.targetOS.contains("osx")) + if (qbs.targetOS.contains("macos")) return ide_app_target + ".app/Contents/PlugIns" else if (qbs.targetOS.contains("windows")) return libDirName + "/qtcreator/plugins" else return ide_library_path + "/plugins" } - property string ide_data_path: qbs.targetOS.contains("osx") + property string ide_data_path: qbs.targetOS.contains("macos") ? ide_app_target + ".app/Contents/Resources" : "share/qtcreator" - property string ide_libexec_path: qbs.targetOS.contains("osx") + property string ide_libexec_path: qbs.targetOS.contains("macos") ? ide_data_path : qbs.targetOS.contains("windows") ? ide_app_path : "libexec/qtcreator" - property string ide_bin_path: qbs.targetOS.contains("osx") + property string ide_bin_path: qbs.targetOS.contains("macos") ? ide_app_target + ".app/Contents/MacOS" : ide_app_path - property string ide_doc_path: qbs.targetOS.contains("osx") + property string ide_doc_path: qbs.targetOS.contains("macos") ? ide_data_path + "/doc" : "share/doc/qtcreator" property string ide_include_path: "include" diff --git a/share/share.qbs b/share/share.qbs index df3e418bf49..08688ec0926 100644 --- a/share/share.qbs +++ b/share/share.qbs @@ -55,7 +55,7 @@ Product { ] if (qbs.targetOS.contains("windows")) list.push("notepad_win.xml"); - else if (qbs.targetOS.contains("osx")) + else if (qbs.targetOS.contains("macos")) list.push("vi_mac.xml"); else list.push("vi.xml"); diff --git a/src/app/app.qbs b/src/app/app.qbs index db720637dba..2eac52ac64a 100644 --- a/src/app/app.qbs +++ b/src/app/app.qbs @@ -2,10 +2,10 @@ import qbs QtcProduct { Depends { name: "bundle" } - Depends { name: "ib"; condition: qbs.targetOS.contains("osx") } + Depends { name: "ib"; condition: qbs.targetOS.contains("macos") } Properties { - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") ib.appIconName: "qtcreator" } @@ -23,7 +23,7 @@ QtcProduct { installDir: qtc.ide_bin_path property bool qtcRunnable: true - cpp.rpaths: qbs.targetOS.contains("osx") ? ["@executable_path/../Frameworks"] + cpp.rpaths: qbs.targetOS.contains("macos") ? ["@executable_path/../Frameworks"] : ["$ORIGIN/../" + qtc.libDirName + "/qtcreator"] cpp.includePaths: [ project.sharedSourcesDir + "/qtsingleapplication", @@ -51,7 +51,7 @@ QtcProduct { Group { name: "qtcreator.sh" - condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos") files: "../../bin/qtcreator.sh" qbs.install: true qbs.installDir: "bin" @@ -74,7 +74,7 @@ QtcProduct { } Group { - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") fileTagsFilter: ["aggregate_infoplist", "pkginfo", "compiled_assetcatalog"] qbs.install: true qbs.installSourceBase: product.buildDirectory diff --git a/src/libs/ssh/ssh.qbs b/src/libs/ssh/ssh.qbs index e3ef0cf3f53..c79dacb79fd 100644 --- a/src/libs/ssh/ssh.qbs +++ b/src/libs/ssh/ssh.qbs @@ -69,7 +69,7 @@ Project { result.push("advapi32", "user32") else if (qbs.targetOS.contains("linux")) result.push("rt", "dl"); - else if (qbs.targetOS.contains("osx")) + else if (qbs.targetOS.contains("macos")) result.push("dl"); else if (qbs.targetOS.contains("unix")) result.push("rt"); @@ -95,7 +95,7 @@ Project { "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", "BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO") - if (qbs.targetOS.contains("osx")) + if (qbs.targetOS.contains("macos")) result.push("BOTAN_TARGET_OS_IS_DARWIN", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY", "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs index dc5e7b71e94..8b41c2f6028 100644 --- a/src/libs/utils/utils.qbs +++ b/src/libs/utils/utils.qbs @@ -18,7 +18,7 @@ Project { if (qbs.targetOS.contains("windows")) { libs.push("user32", "iphlpapi", "ws2_32", "shell32"); } else if (qbs.targetOS.contains("unix")) { - if (!qbs.targetOS.contains("osx")) + if (!qbs.targetOS.contains("macos")) libs.push("X11"); if (!qbs.targetOS.contains("openbsd")) libs.push("pthread"); @@ -29,7 +29,7 @@ Project { cpp.enableExceptions: true Properties { - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") cpp.frameworks: ["Foundation"] } @@ -278,7 +278,7 @@ Project { Group { name: "FileUtils_osx" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") files: [ "fileutils_mac.h", "fileutils_mac.mm", ] diff --git a/src/plugins/clearcase/clearcase.qbs b/src/plugins/clearcase/clearcase.qbs index 2c52f4690a0..9fd072a28e0 100644 --- a/src/plugins/clearcase/clearcase.qbs +++ b/src/plugins/clearcase/clearcase.qbs @@ -3,7 +3,7 @@ import qbs 1.0 QtcPlugin { name: "ClearCase" - pluginJsonReplacements: ({"CLEARCASE_DISABLED_STR": (qbs.targetOS.contains("osx") ? "true": "false")}) + pluginJsonReplacements: ({"CLEARCASE_DISABLED_STR": (qbs.targetOS.contains("macos") ? "true": "false")}) Depends { name: "Qt.widgets" } Depends { name: "Utils" } diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index d2e2c7d268b..ed50f54985d 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -27,7 +27,7 @@ Project { return ["ole32", "user32"] } - cpp.frameworks: qbs.targetOS.contains("osx") ? ["AppKit"] : undefined + cpp.frameworks: qbs.targetOS.contains("macos") ? ["AppKit"] : undefined Group { name: "General" @@ -176,7 +176,7 @@ Project { Group { name: "ProgressManager_mac" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") files: [ "progressmanager/progressmanager_mac.mm", ] @@ -184,7 +184,7 @@ Project { Group { name: "ProgressManager_x11" - condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos") files: [ "progressmanager/progressmanager_x11.cpp", ] @@ -288,7 +288,7 @@ Project { Group { name: "Locator_mac" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") files: [ "locator/spotlightlocatorfilter.h", "locator/spotlightlocatorfilter.mm", diff --git a/src/plugins/ios/ios.qbs b/src/plugins/ios/ios.qbs index 0eb70f2f104..e38618c7a4f 100644 --- a/src/plugins/ios/ios.qbs +++ b/src/plugins/ios/ios.qbs @@ -11,7 +11,7 @@ QtcPlugin { Depends { name: "QmlDebug" } Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] } - cpp.frameworks: base.concat(qbs.targetOS.contains("osx") ? ["CoreFoundation", "IOKit"] : []) + cpp.frameworks: base.concat(qbs.targetOS.contains("macos") ? ["CoreFoundation", "IOKit"] : []) files: [ "ios.qrc", diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index af6b8fbc8ad..e7103ce1dac 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -17,7 +17,7 @@ Project { cpp.defines: base.concat("QTC_CPU=X86Architecture") Properties { - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") cpp.frameworks: base.concat(["Carbon"]) } diff --git a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qbs b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qbs index 55f6c6a1df5..e8a5cae40bc 100644 --- a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qbs +++ b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qbs @@ -4,7 +4,7 @@ QtcProduct { name: "componentsplugin" type: ["dynamiclibrary"] installDir: qtc.ide_plugin_path + '/' + installDirName - property string installDirName: qbs.targetOS.contains("osx") ? "QmlDesigner" : "qmldesigner" + property string installDirName: qbs.targetOS.contains("macos") ? "QmlDesigner" : "qmldesigner" Depends { name: "Core" } Depends { name: "QmlDesigner" } diff --git a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qbs b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qbs index 60f07116742..56f5a83d87c 100644 --- a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qbs +++ b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.qbs @@ -4,7 +4,7 @@ QtcProduct { name: "qtquickplugin" type: ["dynamiclibrary"] installDir: qtc.ide_plugin_path + '/' + installDirName - property string installDirName: qbs.targetOS.contains("osx") ? "QmlDesigner" : "qmldesigner" + property string installDirName: qbs.targetOS.contains("macos") ? "QmlDesigner" : "qmldesigner" cpp.defines: base.concat("QTQUICK_LIBRARY") cpp.includePaths: base.concat("../designercore/include") diff --git a/src/tools/3rdparty/iossim/iossim.qbs b/src/tools/3rdparty/iossim/iossim.qbs index 3c55f5f6498..5a7f6425635 100644 --- a/src/tools/3rdparty/iossim/iossim.qbs +++ b/src/tools/3rdparty/iossim/iossim.qbs @@ -2,7 +2,7 @@ import qbs 1.0 QtcTool { name: "iossim" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") Depends { name: "bundle" } Depends { name: "Qt"; submodules: ["widgets"] } diff --git a/src/tools/3rdparty/iossim_1_8_2/iossim.qbs b/src/tools/3rdparty/iossim_1_8_2/iossim.qbs index ce138f7a206..f2537dad067 100644 --- a/src/tools/3rdparty/iossim_1_8_2/iossim.qbs +++ b/src/tools/3rdparty/iossim_1_8_2/iossim.qbs @@ -4,7 +4,7 @@ import QtcTool QtcTool { name: "iossim" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") Depends { name: "Qt"; submodules: ["widgets"] } Depends { name: "app_version_header" } diff --git a/src/tools/clangbackend/clangbackend.qbs b/src/tools/clangbackend/clangbackend.qbs index 83684c17f94..7f154f963d0 100644 --- a/src/tools/clangbackend/clangbackend.qbs +++ b/src/tools/clangbackend/clangbackend.qbs @@ -24,7 +24,7 @@ QtcTool { cpp.rpaths: base.concat(libclang.llvmLibDir) Properties { - condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos") cpp.linkerFlags: base.concat(["-z", "origin"]) } } diff --git a/src/tools/iostool/iostool.qbs b/src/tools/iostool/iostool.qbs index 53fc2b74e3f..b06d996e003 100644 --- a/src/tools/iostool/iostool.qbs +++ b/src/tools/iostool/iostool.qbs @@ -2,7 +2,7 @@ import qbs 1.0 QtcTool { name: "iostool" - condition: qbs.targetOS.contains("osx") + condition: qbs.targetOS.contains("macos") Depends { name: "bundle" } Depends { name: "Qt.widgets" } diff --git a/src/tools/qml2puppet/qml2puppet.qbs b/src/tools/qml2puppet/qml2puppet.qbs index 0395e8b7777..e5fe8f44d72 100644 --- a/src/tools/qml2puppet/qml2puppet.qbs +++ b/src/tools/qml2puppet/qml2puppet.qbs @@ -3,7 +3,7 @@ import QtcFunctions QtcTool { name: "qml2puppet" - installDir: qbs.targetOS.contains("osx") + installDir: qbs.targetOS.contains("macos") ? qtc.ide_libexec_path + "/qmldesigner" : qtc.ide_libexec_path Depends { name: "bundle" } diff --git a/src/tools/sdktool/sdktool.qbs b/src/tools/sdktool/sdktool.qbs index be97b827502..a031232aba7 100644 --- a/src/tools/sdktool/sdktool.qbs +++ b/src/tools/sdktool/sdktool.qbs @@ -7,7 +7,7 @@ QtcTool { Depends { name: "Utils" } Depends { name: "app_version_header" } - cpp.defines: base.concat([qbs.targetOS.contains("osx") + cpp.defines: base.concat([qbs.targetOS.contains("macos") ? 'DATA_PATH="."' : qbs.targetOS.contains("windows") ? 'DATA_PATH="../share/qtcreator"' : 'DATA_PATH="../../share/qtcreator"']) From 9f53b0e13c6ebc4da4e688da364a39a313cdb723 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 28 Jul 2016 17:18:31 +0200 Subject: [PATCH 70/86] ProjectExplorer: Themable miniprojecttargetselector.cpp Replace some hard-coded colors with theme colors. That is required for the Flat Light theme. Change-Id: I2ce289fce8c2e6437148eb691484e0441975979f Reviewed-by: Tim Jenssen --- share/qtcreator/themes/flat-dark.creatortheme | 2 +- share/qtcreator/themes/flat-light.creatortheme | 2 +- share/qtcreator/themes/flat.creatortheme | 2 +- src/plugins/projectexplorer/miniprojecttargetselector.cpp | 7 +++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index d2e194dd3f6..5469e2d1d3f 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -105,7 +105,7 @@ MenuItemTextColorNormal=text MiniProjectTargetSelectorBackgroundColor=shadowBackground MiniProjectTargetSelectorBorderColor=shadowBackground MiniProjectTargetSelectorSummaryBackgroundColor=shadowBackground -MiniProjectTargetSelectorTextColor=text +MiniProjectTargetSelectorTextColor=fancyBarsNormalTextColor PanelStatusBarBackgroundColor=shadowBackground PanelsWidgetSeparatorLineColor=0 PanelTextColorDark=text diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme index f801f9eaa5b..ef550cc0106 100644 --- a/share/qtcreator/themes/flat-light.creatortheme +++ b/share/qtcreator/themes/flat-light.creatortheme @@ -102,7 +102,7 @@ MenuItemTextColorNormal=text MiniProjectTargetSelectorBackgroundColor=shadowBackground MiniProjectTargetSelectorBorderColor=shadowBackground MiniProjectTargetSelectorSummaryBackgroundColor=shadowBackground -MiniProjectTargetSelectorTextColor=text +MiniProjectTargetSelectorTextColor=fancyBarsNormalTextColor PanelStatusBarBackgroundColor=shadowBackground PanelsWidgetSeparatorLineColor=0 PanelTextColorDark=text diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme index 285bc9c99ce..51fd6df5aa4 100644 --- a/share/qtcreator/themes/flat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -101,7 +101,7 @@ MenuItemTextColorNormal=text MiniProjectTargetSelectorBackgroundColor=shadowBackground MiniProjectTargetSelectorBorderColor=shadowBackground MiniProjectTargetSelectorSummaryBackgroundColor=shadowBackground -MiniProjectTargetSelectorTextColor=text +MiniProjectTargetSelectorTextColor=fancyBarsNormalTextColor PanelStatusBarBackgroundColor=shadowBackground PanelsWidgetSeparatorLineColor=0 PanelTextColorDark=text diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 975a1771725..0622f60b9c4 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -152,7 +152,7 @@ void TargetSelectorDelegate::paint(QPainter *painter, QFontMetrics fm(option.font); QString text = index.data(Qt::DisplayRole).toString(); - painter->setPen(QColor(255, 255, 255, 160)); + painter->setPen(creatorTheme()->color(Theme::MiniProjectTargetSelectorTextColor)); QString elidedText = fm.elidedText(text, Qt::ElideMiddle, option.rect.width() - 12); if (elidedText != text) const_cast(index.model())->setData(index, text, Qt::ToolTipRole); @@ -174,7 +174,10 @@ ListWidget::ListWidget(QWidget *parent) : QListWidget(parent) setFocusPolicy(Qt::WheelFocus); setItemDelegate(new TargetSelectorDelegate(this)); setAttribute(Qt::WA_MacShowFocusRect, false); - setStyleSheet(QString::fromLatin1("QListWidget { background: #464646; border-style: none; }")); + const QColor bgColor = creatorTheme()->color(Theme::MiniProjectTargetSelectorBackgroundColor); + const QString bgColorName = creatorTheme()->flag(Theme::FlatToolBars) + ? bgColor.lighter(120).name() : bgColor.name(); + setStyleSheet(QString::fromLatin1("QListWidget { background: %1; border-style: none; }").arg(bgColorName)); setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); } From bc6faeade2b42f2cc7ed4eaf903fc43d47e2e278 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Jul 2016 17:22:42 +0200 Subject: [PATCH 71/86] QmlDesigner: Use proper icons for Controls 1.0 * Using proper icons * Removing unused images Change-Id: I0b4ba6d33f14950fef28f9546aa39b7f5d5a38dd Reviewed-by: Tim Jenssen --- .../componentsplugin/components.metainfo | 28 +----------------- .../componentsplugin/componentsplugin.qrc | 12 -------- .../componentsplugin/images/busyindicator.png | Bin 1145 -> 0 bytes .../images/busyindicator16.png | Bin 826 -> 0 bytes .../images/busyindicatora.png | Bin 767 -> 0 bytes .../images/busyindicatora16.png | Bin 670 -> 0 bytes .../componentsplugin/images/button.png | Bin 716 -> 109 bytes .../componentsplugin/images/button16.png | Bin 502 -> 107 bytes .../componentsplugin/images/buttoncolumn.png | Bin 523 -> 0 bytes .../images/buttoncolumn16.png | Bin 432 -> 0 bytes .../componentsplugin/images/buttonrow.png | Bin 485 -> 0 bytes .../componentsplugin/images/buttonrow16.png | Bin 429 -> 0 bytes .../componentsplugin/images/checkbox.png | Bin 790 -> 190 bytes .../componentsplugin/images/checkbox16.png | Bin 569 -> 122 bytes .../componentsplugin/images/combobox.png | Bin 934 -> 151 bytes .../componentsplugin/images/combobox16.png | Bin 659 -> 149 bytes .../componentsplugin/images/item-icon.png | Bin 396 -> 337 bytes .../componentsplugin/images/item-icon16.png | Bin 312 -> 266 bytes .../componentsplugin/images/label.png | Bin 351 -> 151 bytes .../componentsplugin/images/label16.png | Bin 299 -> 152 bytes .../componentsplugin/images/progressbar.png | Bin 261 -> 103 bytes .../componentsplugin/images/progressbar16.png | Bin 293 -> 100 bytes .../componentsplugin/images/radiobutton.png | Bin 959 -> 184 bytes .../componentsplugin/images/radiobutton16.png | Bin 627 -> 176 bytes .../componentsplugin/images/slider.png | Bin 776 -> 160 bytes .../componentsplugin/images/slider16.png | Bin 540 -> 154 bytes .../componentsplugin/images/sliderh.png | Bin 814 -> 0 bytes .../componentsplugin/images/sliderh16.png | Bin 554 -> 0 bytes .../componentsplugin/images/tabbar.png | Bin 271 -> 0 bytes .../componentsplugin/images/tabbar16.png | Bin 152 -> 0 bytes .../componentsplugin/images/tabbutton.png | Bin 545 -> 0 bytes .../componentsplugin/images/tabbutton16.png | Bin 410 -> 0 bytes .../componentsplugin/images/textarea.png | Bin 780 -> 138 bytes .../componentsplugin/images/textarea16.png | Bin 549 -> 134 bytes .../componentsplugin/images/textfield.png | Bin 755 -> 135 bytes .../componentsplugin/images/textfield16.png | Bin 467 -> 127 bytes .../componentsplugin/images/toolbar.png | Bin 226 -> 0 bytes .../componentsplugin/images/toolbar16.png | Bin 138 -> 0 bytes 38 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/busyindicator.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/busyindicatora.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/buttonrow.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/sliderh.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/sliderh16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/tabbar.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/tabbar16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/tabbutton.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/toolbar.png delete mode 100644 src/plugins/qmldesigner/componentsplugin/images/toolbar16.png diff --git a/src/plugins/qmldesigner/componentsplugin/components.metainfo b/src/plugins/qmldesigner/componentsplugin/components.metainfo index 22f782038b9..29490fa471d 100644 --- a/src/plugins/qmldesigner/componentsplugin/components.metainfo +++ b/src/plugins/qmldesigner/componentsplugin/components.metainfo @@ -71,32 +71,6 @@ MetaInfo { } } - Type { - name: "QtQuick.Controls.ButtonRow" - icon: ":/componentsplugin/images/buttonrow16.png" - - ItemLibraryEntry { - name: "Button Row" - category: "Qt Quick - Controls" - libraryIcon: ":/componentsplugin/images/buttonrow.png" - version: "1.0" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.ButtonColumn" - icon: ":/componentsplugin/images/buttoncolumn16.png" - - ItemLibraryEntry { - name: "Button Column" - category: "Qt Quick - Controls" - libraryIcon: ":/componentsplugin/images/buttoncolumn.png" - version: "1.0" - requiredImport: "QtQuick.Controls" - } - } - Type { name: "QtQuick.Controls.Label" icon: ":/componentsplugin/images/label16.png" @@ -168,7 +142,7 @@ MetaInfo { ItemLibraryEntry { name: "Slider (Vertical)" category: "Qt Quick - Controls" - libraryIcon: ":/componentsplugin/images/sliderh.png" + libraryIcon: ":/componentsplugin/images/slider.png" version: "1.0" requiredImport: "QtQuick.Controls" Property { name: "orientation"; type: "Enumeration"; value: "Qt.Vertical"; } diff --git a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc index 3a8361e20bd..04b2667776c 100644 --- a/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc +++ b/src/plugins/qmldesigner/componentsplugin/componentsplugin.qrc @@ -3,10 +3,6 @@ components.metainfo images/button.png images/button16.png - images/buttoncolumn.png - images/buttoncolumn16.png - images/buttonrow.png - images/buttonrow16.png images/checkbox.png images/checkbox16.png images/combobox.png @@ -19,20 +15,12 @@ images/radiobutton16.png images/slider.png images/slider16.png - images/sliderh.png - images/sliderh16.png images/label.png images/label16.png - images/tabbar.png - images/tabbar16.png - images/tabbutton.png - images/tabbutton16.png images/textarea.png images/textarea16.png images/textfield.png images/textfield16.png - images/toolbar.png - images/toolbar16.png images/window.png images/window16.png images/column-layouts-icon.png diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicator.png deleted file mode 100644 index 3cf3c11ddbe4e08932efc2380e600982e7e3739d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJoI14-?iy0WWg+Z8+Vb&Z8 z1_l;wPZ!4!kK7}jn&xuw=4eM{{N zR_ns9C6Wdg96K2o-BIQc71_B`!Ce0VYyOIgm2=i@J#6XvK}ddI;`_6=?r;AVRlT!oizCE5A&z zU~TkT%JlsC^9P@QR#jdS*RS(o`O~=XM9h1Er&w`I->ANUtAtXaRl z``fo~?^29zo-f)trzkD0>{`;cg0SwXhbMmtTODd)ZOwe+)~%)xt*;I0+oSGh&-Dw} z?$eAhFc(i$V4Qxs^$DX|fQCrJp^0bH5>r!Ijb`>(Oh27{vF~!$R+&$B3r;xHTGYhN zfA`{rhs%*IhFz9FMH-(zO)V0-kS+Mk_4@tm=V$sXGkE6aQ}0p9c;|xCleqQbn`YkT zTyij)SX`j*)WCkxROGqnAmdUgYG$voZ;C zH+;WT*wvi1=Dq*T&inF$h?xI#Shj87F8Se>qlr{&fkn+yhMS^Xt{T%%pOM>}&iBao zmy^H)b`2MWQbxXZ;YlY&xQ@$?cennL z9dF~LGfbqerEMsR)V=aJin0H=GQ)0lZ8@)3u8qHS6m&{h@>DWDbG|#?z-mx&lfNW95g`qO?@`oQi zQo8Y$Z$reIaIOd)v9!$_Hk`P{9cmQ%b;^DJm^%j!$m=I&W_o6ny{P2g7F(9{%DHU! z-!#VAbGM4Dz8aNX5v^+@e{N~R`bjh54>(8W+kNORDH?szSYkB`0(|Q|JQT9 zYTB~m`s<^Q-yc`~``3P@l(~7;`Sp`^<9ImhYC9^69;r6|XLxYif_Y`n=iLkp3=E#G KelF{r5}E*n^Bzh7 diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicator16.png deleted file mode 100644 index 15e7f442a6ba6bed24dfab8a5ff7459f760c3bd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_q`#o-U3d7XGEdx&D(9MfTZk`RVxIF*-gcXX{IUje5`M+86pyxbwSy#C7TWvQ7#Y z&D9PrQ0rj*)gZNlle;p|VJ63^n5>Lt{?9k0?s|3jDBts#=ey3=-hJM9GsVqB>gbuC zzbpM#m%rR%b^gPJ4?B-0o%OAs;a9Quo=b-Emib=G&Ru@_#maHo>8J0X7Fo*3$S^Fv z7TDsnP^x#C`QotcGW+YzP4{it^5@RmxSEvhw^vV}-ukM-=3hmA{(DZ@B_DtPxxZ(= zt@X{EZOZ~Q7@C`%&u@vk+jlaQPTe1WwN0+_c<`(Y;qtk6&rfOcNt+K9 zHYZoET+n}ScOR`nr$2!(YCsp|P`33vcy^`n8n|DwC zMSZLQi(~7$bJM;3mY*&tEp=62D)>{%(MIgQ_k$NNIBveN^YiOd>{5!+3lCqs$+IQs zV#F1`*I{SVyk{QGX^s2N7WZC=sWHK`VO{IrJ9dW_8hrU>p1}7rY}xf!`%f(Sq;%!1 zZn{WE>DI5JELZlecr2r)e*e(J4U=bxpQ}`ly0UhuRPhY$>00Yvyt?mbe>83Ct`%8X zdg=|1mJ>9pOlx1%T@B6(IWg7dZT^&E`Nb*@>PDx2KAHVMO>Ec2AO4NTX3l!SVFk@j z_c&&8Oxb<)$kt!G+U&z8Xu8b$#v>x~)#~r78!sYe=H6jjeYES^v~AJK#b<;idDT|+ zAIjM@W#h*`3>o>aIWA3>(9^HK*l_j|G93w<>RoE=lfLI>9kBFb{(sz(nJr{+^c;T6MW9pmxSr= z5_kOn-sFn+>6^3wv4>vVR@|f_zPe*LE%dBrU0vuPqlw^O(dDfDf)bhx5 zSNX|Qw&Qa)-^@`ylbB~9vF7I8yR6%`Z`-(WBjfhlx{8yRBYEco!i@u}}@GyjG0*{zV=%Z|NdH~+CBZl-QDH#3>y+w<@K`v2nL;s5^g zZ5kgP=lGVaVm70HLOqjcb;19C^%EqkzrWe}<-tK_&kd~8^eb%6Obb}rSRH&XDfpg{NC|LvSHGcDvUAz8v^#bR*O+P~ z*0bK-vW;Ojf5WULjrU>e{JhakW7p~3 zyQ>elvTnGLb1;kXLK+Wu+WC2#v)|pRoTRHO;9T&KZNcg4>faL6^kTE@i=VAAkI;Sb z`gMGho}(_$YW`K3SqE=zeSJh+FT$fV{>&UhWAU7W2b1XF$HO;*A&%zu91hJ=GoaSL1@ cgt0Pwk4y{-OL2U~z`(%Z>FVdQ&MBb@0Fnb-wEzGB diff --git a/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png b/src/plugins/qmldesigner/componentsplugin/images/busyindicatora16.png deleted file mode 100644 index 2e6083c1c81ecacb58ce16a33657741083cb117d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0XB4ude`@%$Aj z3=B*Go-U3d7N=_`+vW>93bZ}{_N}I{=y`vH#-z0kK8}tPTvaq0n)FmveS0RnSWw{F z+#tjiHASobz&}QhLRXdF>;Veg9KBOdSg@Sjcli6%+q;v~{wm&fl+4caUp}||er4L) zEw^(&*t`!DU^(AkCnM^rqU0L*pnjqX=aL}Jy3*p$voq7|#JrEng@=YlU;Mhf)#+iO z+2oT)C8l#4@QCbGUbN!)j8C2Jg@3f>pWnYkNO!vQdlyEv$&6OBI42l9mkHLc-1q&U zR8)E7=LZiK3J3r)a z`SspCxgY!d%a$hv=uKZ3w))`LqMbA2kL_+dcan(MFcThHZNayc_I z{IbcU_sDIhwZmp>-Os(y!ev; z-QDA6tQnfU{A|nx8+h$G8m4!t7R;Ts8Q@?0&rC@x;<9`8+{QO4A<0^#;-nZ~z_YMv zI`^i`5VI;3b@V&Rp}^^vqkm?$KUZUm(aoG`Z-m!8RhZ~=Y{~DWzVhapBAsVP9GC*H zid*!?YZS~n6FIjtV`bN(4);P6{-V? a+Rs(jPEM#v#2{Q0f|`^v@_F5a$3U4)#n0v32YQn{+xO5-n|!Jzm{h1-LpqvhStWE z;;O4!u`w|ho<4mV#Kf#)a4?OXo&8GI))#;N%sF@NT$s{^11!~ld6^m+Y;9~VynOl6 zi&gE$ndhH<-@SYH;>nYgdOr;bzIGG2{!A08z}{(~k`V%icdHJ&Qcto@Q^@IP?nHYsRx`n^|u6ZRG z&tAWN{m%4OiOR~ox8D}s&M8Bo>RBD}f9Ifu@-B84{Lgujk^wW3TFP}f} z|L(leKOGtj0cl4BJGA=utCOqScug}sTo0ZpJpG+{&Q8hT=wfyo7hm@e{ zCwHk$kgIFrbjzNTaAe!IZTpfpO0*tM+!N-_y*^VzWKo5U-=*B2XG^T^%J;e{vo#;w z$^1F`;Q~unCBaKsTa|A7@e9+MD)^G`?~NNbB086>{^Y!?OF3k#n3s$){I4 z28tZ}zW>qw9l=f-!m5>17w=IDOzN_kG@!&T-`!PbAn}KF-SztHjm_db5!22;znZtb`!h%K^2-aomMXp4?A}^X_T~XA^R(2> zky`^a0*q!Z`CI2d`)u2#ms?i6n1Aqv|MJN<4sx^Uc&i9y*~qC+Kkd3Qr0d-C%?ts~ z3n$FToaH9h?|w#Yawo{iNgHQyEk68EVfkfE)rx~Iivy>+DoxBbkWiVOc-F0KcdXZk zriYB-$K<8iE ulh0+C^y!M7Zh9RX#J&2e)icIj@uwCP|7d)%j*EeTfx*+&&t;ucLK6UtL*$tN diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn.png deleted file mode 100644 index b58d81bc0e66aa8934e6284c42d0a9064934e344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>lzP4 zT{Y|c^XaWl3#a<1buQ94leAI7IOD?cw!$-&cJq&HT4TF4bNS_;sXuKJcHdpMvfy{w z?!Uf$#~(8)nt3vOo_02^^Lgd$w9P-28OwIh&Az>j%P?*R`-ce|m=d0@T2(dG%XKnC z`{9H8;?`UJ_#f-2G*MyKI_sxJH#-<6Rj~Y!E3lE1d~mr|U|MrS&`K3%v2NDa9aGzW zJ`(>MqIJ~lc7;t^BSV7S{NFWO7xg;@RL|x zIjcgrRgrxa>)}%`4IQO=+nl%Za5_v+o$t4tfkC~Uu^@)!N|x#J`|sTwI6km0h+A*H zH_o4pr``E`jos@0Amp!l60@zr>UOJuTMX{v}}FT0Tq^x-80z};xGQ;U|LwP7FIOkbJed+TfrnjOqN9*S_ENuEcEi#`M$D Z_Y@2t%#nSj%fP_E;OXk;vd$@?2><}s-+}-D diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png b/src/plugins/qmldesigner/componentsplugin/images/buttoncolumn16.png deleted file mode 100644 index 9fb324bf8afa82669c9071ce4be9c01da092746e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l z_y1DHY7i2NoYznX)rKt3!d~NZ$6}cUtZ{PD_0s z8XEh1pMK1B(Rt4~Pj3oS$~ygLWd6G-agv+a zUu50}{rjvu@xP42|B6@L;a1X`apb1~&t`U&OZhA(9xgZW^-o#g>DON%t)`csQdYmx i^U%)BS?M3_7)0miEnT1Q+Rwniz~JfX=d#Wzp$P!$@3zta diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png b/src/plugins/qmldesigner/componentsplugin/images/buttonrow.png deleted file mode 100644 index 298be98fb43a35cd9aaac52670e3bfa8c350d206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l=eSI(9W1i1bQvZxvxJ)La*HM$l{F>v`#7 zwnucHso6T2x86HoT(Y>yb;7n=R+We3=QMfB6kOzYOuBcz`v3nwM>1|t^UYM7ed9;n z{{J0|UR3Xl$;-LDuDzixal_$<584t>oO}M6^|NBkWs|bl>&H!e?JEUX;`<)wtX?%q zt8sBbQflNT70;N{o0e4E|GvHZ=px30QnT&l_|2AdalHF(t=-kcsITl0tEkrZ*p&Ul z&zds(R95w(goi!rdm8r1I7qD$naJU?sEa`@>!5{NGG~brgIwnSUWesu1`kR&8-7n# zl4P_@x|3&q%<{T-;Qhek4Z*J75*^RhhlXEe=+koCa&PXUf6uf+*Pn}GNe*(cm@5*P z->YX-@S@q%PtfwUP)Y5D^*?6#OG zSvKqZ^HXPk3p&irS#bKO@qu;MUw1yQ+&BAd+MUmPdLvedmQUnvx|&rw@$NFFWbQwK ld!(%&zm@-clCzFs&GnsAm@mz1U|?Wi@O1TaS?83{1OStW&`JOR diff --git a/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png b/src/plugins/qmldesigner/componentsplugin/images/buttonrow16.png deleted file mode 100644 index 0966da855951fc4095afd181023234e20cf00bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>lbTI@LhmeV#}qB|lb)BB zY|NM#^Tf`MQQX7TTbj#ZTc!2q#cQ@Etk>LhX+i7X=eH{jjy)|({2%$Kz+%tueg6|9 zr}=Jhl#^&X_{gHJFn0RV%wM^)mc2UedHYG_KhTOYLw z=;7n*eOGQ(I=yM{^UC>O7&l*7tvSJ#S%BqW|1Gym6Yu1l_;ze@X3wG*oaXI`5id<@ fGGnG6`zyZrfU-|fZM6*p0|SGntDnm{r-UW|Af&bS diff --git a/src/plugins/qmldesigner/componentsplugin/images/checkbox.png b/src/plugins/qmldesigner/componentsplugin/images/checkbox.png index 586167f65af5e9afc7392d4778f68f1df998c602..32f1efe09c2710a5c37966af192e5688fe13d65e 100644 GIT binary patch delta 174 zcmbQnwvTawL_G^L0|SFlq{3+i1_pxwpAc7BSy_2`c|}D<6%`dNEiHY0eJd-g`1tsQ zgoM=8)QpUboSdAzyu9-A@`{Rz%F4=Zy8oLP7#KV~T^vIsrY38+Gx3Bxn9|ndXwmXn zo~NMjpJMT{H|_;>Tx;8l{-ynyzk)UR+wld#8MZO!)7*5`TQc|eUQ?Fb%iX`UfNztt b=QmA;qf6)AU=-~ZW&j!M>gTe~DWM4fum(Lt delta 779 zcmdnTIE`(BL_G%^0|Uc@a@!va3=C{Z-tI08|3PrU-sO`S7#KJUJR*x37`TN&n2}-D z90>*nrfr@sjv*e$w}##H({dDfQvHY1QRu*q7FRi!qx!o91^zMEF~l&4v#fsz9GCAs)I2$4SM{#dtIog7aiHaW-vfaXyLs!DQu|@Yxb@R(?BuuGGrpeVr=FXi zFKkj)RyKu=t@&X_dHM8DKW$2P$G$4D@@AANSh(=|>wXb7tGRu7d3i5hzU=Hes-z#s z_Mkz!(}g37i+OkbUAv09x@AEtU0#+{DcacBT=@IfcDqD#cLpCH9~)Qm;lqa+)rxn@ zOs;d%nwliS)fy=uli}c<(ZI3krq12FcmH;{C^_ou>zmB=v-~g7+-;&L?bKYh`|QG` zk8j_;UE`}Z`Ofs)6*lJ<$;->1Fx`GOZL)H6+XV*w=(S?{U2cnI>ht#Bf6jd5;bD$L zFO+#d^DkNvwt9|QMospG43moKGkx0J77I>3{@Ad8{rdGkxgEKl%su_+Yt`K6i443C z6%R9TZ}jdsV{b6|Wc<mP}Wi|?ss zc>X!Q*=y+`!Ir~`yLRnbw0*mIy^w7OlheV33FZ3CF&S^(zwhQf_0&k-fX8X!gbOT> zEG~ThTpZWV!SE${qlBY#M#JQu9nbp!C?MU;o#tgTe~ HDWM4ftau@U delta 554 zcmb>0$udE*o{fQlLH_gqLhA9I&ljf{d3L%uiJtiRw~pz0j@kZN^B*2dgSN!2&)gdIm$TqN ztD8i{-h2LL8D_IDR@j6cEwET}FyVmZ11Dvkq>VH7MCh=*RNr-1PqXXL#rNMiV=`JC zO{Ati|7`iS%Cjcd6Ln6@?B{V?ELdL8Ba&@2^TN-XXCFUSs1zh{H5XX?F>z=}S$uK9 z-Mr(h-+#}|+dex&@~h@lFBMNA{VWZUDk+5q$DJ|HZoL1Vq#hyJT7TyG=a7{lE27pG zZB8)wVdBv6Dv4EqyOl|nk6q7A(Re10Xtyh0!2w>JYfG>8Ro(f#;m*u1Z>3lU7``kY4`6NvA{F{I6o{ zmY_SOfiKpzI;_1AcKdd*T%BU>!J1`nAAPFTuY5n}_qm<*-|N@}4gZ|~@woliF*oPf z*t>UU&6@Ri+O%o!nVFgA-@1KUf8)2S*RCzImf>Swyl|o8?bS`MfBmZZTBpotc8~po z@$$=>vuDrVv~QnYbab?lm6aBQ4U@x{c)gejS-pSjZ zl9s0Rp{0eTv%i1(jvW>!&z~3nw|(PA#oF3hafUSw`urv*O9USzG%zG5Cp!uWO*oNZ z(seXR@Ym+eo0ShAKFri~ouPKcYzFB!ckkYfU-|RQnVu(4pRRo4?0F__^Md+KN8W$u z{@bMQ*I<9i^?>h*Rg1Q6{d)M&p+i@1-I_IJ>Qv1Fq0IA7o}{c?wQADUtD!Sz&lV23 zC*3f+@S9%*Q`*7w;^NKyQ=KgrY&NnrGc)rz6fG($s`=RSNc6)s&f<){hmBt@e!q;I9NVFpYdp3{rI#xB?AXU{6!Z4|dv8Za#|tICdTy1KJLk-q^FqBL@%x5t zC1qv%mYn}oE741|pHxEDgvHIk< zZ{N6V>!sx7r}y>oxkoUi2(t>=OTFs87I4KPq+qYidok9Fi`$HuN?&H#4tXx9*>7e$(tdh@Yi=YuX-rt nV0TW9De01%--q>&Mb#rBPpHkD=%UQPz`)??>gTe~DWM4fUIww9 diff --git a/src/plugins/qmldesigner/componentsplugin/images/combobox16.png b/src/plugins/qmldesigner/componentsplugin/images/combobox16.png index 09d74c8c20d6873966916d5e78ed9e5c4d1764db..b0a536ebb79b8ab1d4820223884fc0aae9c70a67 100644 GIT binary patch delta 132 zcmbQtI+byPL@f(50|Ud`yN`kx7#O4jd_r8cw6yf~^^J{<9UL6o-QE5D{VOXg8yXts z&!5k0;N;7|z+md>;uyjaoy^h7)TW>+Adr&E@sgowT2Y{eGp8rZqPE7ViWa;alNxs! lND7!nEH$`#Ah+F+VNr#q|Ea|V0t^fc44$rjF6*2UngG|yC$9hi delta 646 zcmbQrIGJ^VL_G%^0|SHn=l_We3=EtF9+AZi4BWyX%*Zfnjsyb(ldGqTV~B-+>*Uj` zg9-(X^Ka?cJ?)dO2FD_4LB~wRU0<3Wo%;T}wf{q7Ma|sSd_nni%{xb9IsS59T$Ss( zy5kX>W4&W{*94`cSw9QUA3E17_SnCF|IagL%J;Q1GxRCd&-5wU81cq&V?>QI$Dx&% zU)CJE?_?si_rPRt6`>d#xpZ|_+r>8D94C4$eY7_0^~prSE`D9G{ z;l!i$jE_J5c$>AAY5#rxtgTWyV%#QDyf@yK1!zs3m)sQf>WLpi*uNbydI#T@H3zL^ z>2+gvTP%3#rAf2G8`k==BF$1o=9JAhza|)11d7|u?=M|=H7k;(+3`k>*@f3%_a$wb ztzg8^Rm!j2@aS&B(fbj+C04S`f#!1k>}i`NebgrFYgov4y1bju*im(R-m0+Gd&OJ@ zxmuZK_^7cdOt_oZ{;ZR?@ib_gKDk>^!YHFIA znmRf<0RaJlfq}un!C_%xk&%(b#leI>6;)MLoM8)D7#JA%N`m}? z85o)BnOWJ`Ik>oac&E*-vVCm8z`!uc)5S4FBe-XiA{k^R=6(w|9?6c z?_QN1#;@PGBCE+m{*DqLqFM2(jJ$vm>+a(TlMo)NI zKfQl&nDx7%!Th|Mp!qpxX8N18ojLyDL@kH^v%|+u{IM!CEZpBZv6`#=Vdi7CJ^NP# vR>=2h?BVD7Zhr2DSr1<%~X^wgl##FWay zlc_cg42*i7E{-7;x3)|>$=hro;Hs{1{7OSa)B?V!2a~)nvGP8drT3y$di4rs9yK1L z6FP<#Wo}XjC0^G)&d<@Sy?>wK0n;nT_BRoiR=!=u@wQ!MMt!2hrM-Nc8=hCL-?i?2 z`bpo*4!5@%oH=msak&7?`BsKQwfE)UuU^G;d)xDSHNKjyCcXy?=lraUoc3VXyBPPt zFA{o-8#Yc8JGgsYvx;X+!J3~2=MHfyK0a~XAaJjsz`@Tp)7#$rP4xS*kbQ?&%ERTh z2d+*^ooVuC3;U)vugZcg=SrvAXml~@oc<+Q_o6X#mRG?-c8>Yq#AHA8GUTyZJ>+I= zdHf>uVZ7}D{V?`Fv)M)NJDATASEzYxZlK&;E$6VUb`c*c~#{s?}J7fq{X+)78&qol`;+00Nh*i2wiq diff --git a/src/plugins/qmldesigner/componentsplugin/images/item-icon16.png b/src/plugins/qmldesigner/componentsplugin/images/item-icon16.png index 7d2d7a505020408d752a153ecf948bf6c2d0847f..fb2c9b2ed602b647c434387cfe7d04769c0ae4e1 100644 GIT binary patch delta 249 zcmdnN)WtMGvYwfNfk8u;KbV1m!8^bw#I>QJ;Xe#0Dk`d|s2Cd?Ll|mmYU=9hT3TA# z+S)ogIspLzfq{Xcp`nqHk;TQuB_$=LrKRQNd`2{mD zFfmV?K6`FZODh8dL%OGnV~9j}=y}H?zQYC_E*JBA4*lhiUg^hElBlk_xjMsP(M8RZ zAur36mF|iLHz)q6JaAl;r|sz;5jBnj8zRCkyxrNm=I?P13IF>0A3kqe=V;1wKd#5& sBa7mvd{)J{WuDVNt*y@9^ODSr1<%~X^wgl##FWay zlc_cg3=FqCT^vIyZY`M{$k(jE)3*AvoLfi#zQQH8I@YYyBc{b3V%B_Q*|R7}nDa%+ zgIOjE4}_nJXELc&5;NSb$6xh*P@`;)tJ-hRarb~%BxXT}HZ&A1I1PEC6Akd^sf0|NsCgQu&X%Q~loCIB~% BdISIf diff --git a/src/plugins/qmldesigner/componentsplugin/images/label.png b/src/plugins/qmldesigner/componentsplugin/images/label.png index 9c90cc44036996ac21bed6d61f1abca060289885..bc4cea17389d4a3654c2bba9af01f697cb205f1f 100644 GIT binary patch delta 134 zcmcc5G@WsRL_G^L0|SFlq{3+s72p%%s;{qaWMt&(>gw(79TyiDA0Hp+!LQB0z~JEN z;us<^HJQVeiRa2Q4Fd-T?Fqt18jdh}8E`Q*GE5L=5o2y*P*86;c!Xh{PQ$^gjJtWd moDC3``%LS6prCt6^YZVDNPHb6Mw<&;$T^Cn(GS delta 336 zcmbQvc%Ny4L_G%+0|P_8=&JP$3=EPbt`Q}{`DrEPiAAXljw$&`sS2LCiRr09sfj6- zg(p*O7#J8CJzX3_DsC;A;xFWEAacy`m}bsg$FCfHNmk8rOCIZdGu^8Bt+Z8!Y3X`X z;aM)9j%+vNeE+<bES@d{CnBN_w%JTcZs$W74;m^$Ah0%{$mw%GMKXO zeI?7(UPlL;fNcU17YukD0_&DBl*Y1`8LVSn;4O0TTF%nq(?(Mk@5-DPYFfQh?WENw z85Z^X?v_t5jwn5EPJ~uI)eVm_hGU<)P zu1(jpt;ObY(h=JhIHON2R0_f9oRbam|?6DyDN{-Eyi6cK67S$d-JDJ trTnPfg@fz#O-o~^uiw&U$Hc?%YxA1RiHC2-FfcGMc)I$ztaD0e0sw3ckUszb diff --git a/src/plugins/qmldesigner/componentsplugin/images/label16.png b/src/plugins/qmldesigner/componentsplugin/images/label16.png index b744ef0eea4fca67249333e165ca67a8da4d53ac..236ad9b15836456467ba31cf49a3cbeab9dc1062 100644 GIT binary patch delta 136 zcmZ3@G=p)1L_G^L0|Ud`yN`kx7#QRNd_r8cw6yf~_07!8Y;0`o?d{#&-FqtkKTIR?}m|%BGNzuEC$uVBjSoVUd1r&dGBD2XYt$ qH6LU+2sf^7eC;%&`LZ5^^JTRuHkTV$GB7YOc)I$ztaD0WYytqvKr2)L delta 284 zcmbQixSDB#L_G%+0|Uc^i5X@L3=EPbt`Q}{`DrEPiAAXljw$&`sS2LCiRr09sfj6- zg(p*O7#JANdb&7Lv-hIbD!aPysl27%~7C&??ROJQVm5F&q=bArUdO}sEwaY_rH5HEuKH9J!kadh>w-aMZ>=ExE)tbRpiq0xGA;c3w}0oK$HXJbuq3(a(ZYwqw;3217(8A5T-G@yGywoFc6cfP diff --git a/src/plugins/qmldesigner/componentsplugin/images/progressbar.png b/src/plugins/qmldesigner/componentsplugin/images/progressbar.png index b9c3ebf244869bd051cdfe275021647ce0ef278d..b137ef7beb1355fe565be180e2099f8da6fefc96 100644 GIT binary patch delta 85 zcmZo=N}nL%&&15Yz%W0()z4*}Q$iB}>gpJq delta 244 zcmYdqWtt#S&%wsP!0@2l_6Gw416z`}y9>jA5L~c#`D6wL2F?PH$YKTtZeb8+WSBKa zf`Nfysi%u$h{y4_Qw+J76$M;vXH9L5&7-ukP@&dbObM((InW7b*cTD2Tf+_P<`aeh{iz~9sS|%Oy zV|UXsVJ1ZuksvRVIiH;$>~-I`PJ32rFVdQ&MBb@00FIGS^xk5 diff --git a/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png b/src/plugins/qmldesigner/componentsplugin/images/progressbar16.png index 77ce17a47839e9b2e66cb15e58d9db81423e26e6..60da065fc13522c7bac048bb12752794922027e4 100644 GIT binary patch delta 82 zcmZ3=lrllWhl!bifgx$G_$LMi2F?JV5LYQFDSvGF^k}?bo3=E#GelF{r5}E*^yBC81 delta 277 zcmYdU$}~Zuo`a2nfkFQB|3n4`2DT(`cNd2LAh=-f^2rPg44efXk;M!Q+`=Ht$S`Y; z1Oo%ZQBN1g5R21qgT1+040vj{YTan95bb{ydZ%*DJx7g4hi?CH^iCIAbEz4I1L5{1_n=8KbLh*2~7Y9P;+en diff --git a/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png b/src/plugins/qmldesigner/componentsplugin/images/radiobutton.png index 2b9aa4793b47ddea3d7d23e0154fdc8b852c94ca..7e3c28d5f4b115e356219aef282e5d02da536d8d 100644 GIT binary patch delta 167 zcmdnbzJqasWIY1|1H)07Bozh*hI&sI#}JM4TPGTF9Z=wL-8;ESVaH5imLslK+;=y< zcq{F?M#M?|zevqbxB4rp9gMk4#iU&;M1& delta 948 zcmdnNxSxH3WIY=L1H*%I+aC-J3~Wi>?k)`fL2$v|<&zm07&r?&B8wRqxP?KOkzv*x z2?hq{cuyC{5Rcb%YySMH z(Ka=`dg|1vO`A4vUenXVbeY>czP;vV7=~+LH{QC84$+m4_K7sqbeEH&0 z9(C(G)5()31wVfLSl@W)r~m!imy?%w>ej7UYu2qhb?Q`?l%3(R0}XHAy%XE9%p*K7 zFmMCI>x@+&%+1ZSQ$xHqEnTV_85ehLe|L9xmV9!;fq8T1dIkpzEB(7uf9Fm@yZYzrO$VYw6a0Lmr(uj~^$mT(M%qStE5e&Ka-v+S=Og+7@DJ zZob?zEj_)|Szb==$T_V>l7G6`1$xsD%I4~Qfg{q{=R29 z(9n9=Xrl5Ho*RGf-i>8-l#rGV-o1A(uXaIk@#ntg!#O7$*9C~b?LC{cSngoB z0}ZXr+ZQix-X>V%vs32j)2H8#9c!E9?(S~N_+;Ti#jla+Jo6=zenY}&zyiIf3<;iPa zyvXQ3{Zz^zW%rI9H+0RKvVI&{v}h6AnVi#S-pfDR{&ner`rq+K{WCSgR19`4b75d$ OVDNPHb6Mw<&;$TFsMneR diff --git a/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png b/src/plugins/qmldesigner/componentsplugin/images/radiobutton16.png index 923297a3ff43cacba621ffff2b6c2739386f67d7..38fd6eb0b2d8d70491348524582d11bbf13a26de 100644 GIT binary patch delta 160 zcmey&vVn1eL_G^L0|Ud`yN`kx7#LInd_r9H^z@94jm^x=%+1X$EiD}!9NgXA{r&wT zBO{ZOlZ%RqDl02Pxnrj?Ffh1#x;Tb#L?>&sGqI_-&15XLnz7I-J5`_~Fl2A__p(w2 z<+U8xv^~{xpLlh0BhNb7rlz~x6C?{XcO>m7+tJ7&seK`boxv{9^0>m0lgAhs P7#KWV{an^LB{Ts5{K7W{ delta 614 zcmdnM_?cybL_G%^0|SHn=l_We3=C{Z-tI08|3PrU-sO`S7#KJUJR*x37`TN&n2}-D z90>*nCSgw(#}JFtOM_2lDFuqGoiBK2*NH=l7NM;HYFX*3UAqKB3T_x zkAF_{TYp{KHPFXp@x@9Tx%o^JJyQ72CKzb2Ha>r+qxAiB-v7J>7c+S5=D&aY^l9t0 z*QTD6jxhZD^T($nb8FOLbLQD!=NU`&?%8wsc;>?zyX7ZS4l(fMZjB1GkojjY(`V1! zwBIHHtFLmczpkx2z22LNt(oy_)n0A~>!Y@E{VL&$ETlP_CY(syyyi;YcJH}_s&(4&-Q&lPzvMLV@3{85bXAB}{g%6V`z0Nm zc`P&Dv@)K0`Th5rBSkxX7GLb(Yd>6RXkl_>LUY`YzyHoFFHrRN_g}-lG^n%dsFL;T zw9SbO?QIf8mtKBJ6@JPXv?E53^IS&K!hi)adgY869b0eb7Fo@`^!4l3N2e7cEqU5w zuCWU-OqqTDx#WR`3mZ=u&OZC+@O8)dLm`na6MHuuepunXH0Vu!!oip4RVI7B`QyI) z^33x#OW^&Jy8F_ ZZP>EWQran8fq{X6!PC{xWt~$(698yrDHs3% diff --git a/src/plugins/qmldesigner/componentsplugin/images/slider.png b/src/plugins/qmldesigner/componentsplugin/images/slider.png index d62d0b7af9d8187bf03671b6df82a69ca0efb3f5..a3bcd2cd6c539346516904916110037b607a1eb7 100644 GIT binary patch delta 144 zcmeBRTfjI$qMn7Bfq_9NQsFcM1A}^iPl&6rv9YPCshOFXkB^U^pI>}@d`3n_etv#a zQ&VSWXJ236{Q2{D@80cbXTO($fx*Pn#W6%;YBGl_6OYNWmeREzt;I&NuFDQu>V|dO y9*_~xh}r9%ZZ5E(C}2vWL_?B^>>p-^8mHvM`ym_FGcYi4GI+ZBxvXM1MG6B0(=JaJ#}JR>Z$oV} zW+e*jJAXgR+vFp^qp^pMgtOy|kf6eq8f;A*ZBExyI892{F7;lPC+o$bsxUW;bKwrD zmns$|0<$|ZANem-xK^+9D1Oo2>XYIoN4I!SH`A}t_r(eZx)5Ec3gcmYR=4=mCLSXO_e$R@mt)^n0wPaR1&vF z@uuW&zgb-1`e@n`4c9mtWqnZJQf2 z+p4TZRtB6CIoO&PTz@V3_@Z-*a3_m^13%*t8wTEsZ_Awb#-;11$tHPsDo^C_SbE8m zq4wOV_hG!dg@3wyN{rA_^3?a7LesHh!=*Zpa zds44y-jAAn;V0htZH(9xa_q&zQvr*3G(@=eo__w>UsKV)?adN15$|lDWg;z;!xukJ z&zZ~@s`8lKm!I{L^7PXOGfbRJq}D$C+w8RP!_*T32eZE)NHN;DFX_Mhs*qLuWxHeV z=a?-ly_mtUtx?{ZrYwaF9Crd^+SMeHp1Rr9ceTW9<9X>4>q@rC!+J0*#1QC6WF z7cXAqk6Bl$@_C}wH}}~!Ut?W53m$wARFt-GQ2qKNDg4*oxP0kc!5aU+|6)r%+y3~@ bSjSZ7a60|W!rA}^1_lOCS3j3^P6^ zi;JtOswPjKJb(WDBS((7DvKyFFfizOx;Tb#%uF_DV`6(Gp|&~9s#$W{(ub29d6?Pw tUgj<@&u25-a*$_-$fTr4YZ(~$ycHs+9KZ5_fq{X+)78&q9kWwH6992FFM}N z-hKC*#oTk+v(J{D*`#yjb?L$ot-Gs3R)tUWU^$v37`9qeAaU`<9jqp^eGMdd8eEqz z40yq6e!fs9G(vCsgp(=9UY1zhdi`}Ct0O~O;tB~?7N*9E{rBx17YXpNolo94Bi%sa zK+?tq42xEUtyY}swO6%%@=5iL5o?azvSf0xIbUxu(IX|#Xy%TSDMm*(@}EgFwwCMv zUgNbiD2eye&p$lpC&})(n4vQx!^G;iTHgvQ8NLappBl_Q`;FlU-%O6p3^RS){{Cn9 zQ};h|`Q?X(2B{V@ei3W0EzaBS&3!_t@!^V;CjBi1y$j0MOjT&PnqeY)>~;NDr=>xR zYs0u_)E#sDU1cc1UP n%{SkiFLz+9{~!N@?f=T3ze+nM`!FytFmQOf`njxgN@xNAWES)v diff --git a/src/plugins/qmldesigner/componentsplugin/images/sliderh.png b/src/plugins/qmldesigner/componentsplugin/images/sliderh.png deleted file mode 100644 index c0bb24596db5d8eba23fbbc6eac8618519686415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJoI14-?iy0XB4ude`@%$Aj z3=B*UJY5_^JdU58=IJrpQRKLN)QgM3)!l{uZv!=&CMf9rOp4)>Rxzwc)hA)=+y{U*Q4DPvs3CKJnPS#J?k3~78d3e8ylOG zlf$#-*|W44C03^Q+_)x8oTxZu-aNe}7c+up&6<^@tgM`{b?a6|W8>hbd!?f_8DisO zcJJ5`aq{%(;7gY-2{GvE>MAT>6}MizEJvSJA>B!YtJUeViM{>)*-7=G25WtNee)~Vuh&b+%kPhijs3f6=g!W%cVpMAU%z<$`uDRhX4G80aN&cC zltZ8Bugx2`ZZ&=NvBFMYS2r;+k@58D(}#XOe5iQt{P~Avy91-5vKI49W)=|@-Mb}1 zN3hJm)U>s;lhZO?7>;`}EU8j~*%2*vT_BGU(~)vGkle>N;t4^RZ)Y>z=ubta|tD+c*EupFc-L zM;|_Su8*Vl{(JUN^NjzdcfUy9{vWEJ6uI`=^DAF$u2}8+{_WeM#fzD@@CE4`{j=(* z(O-0I*_A6-J|t_iva;UkJ8B~#Bg4`y(_QA9>vUt|UJ(U#b@vXo-WOk2u3WkQEc2~k z&Z2B>))VK>`ArC0?aL4#EYeUh`#<-Ag`MG>1U^b1xoz{}!t;qg{hj|S+DF$h@%^`& VFYUS`hk=2C!PC{xWt~$(696ZcaGwAG diff --git a/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png b/src/plugins/qmldesigner/componentsplugin/images/sliderh16.png deleted file mode 100644 index 94df1a033753acc564c98a96690bd5102f894f41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0XB4ude`@%$Aj z3=E8SJY5_^Ec{z1@AW?9C~-VLyLVcM$VdJUcNGO|+ylR~E6vj9xU|kf>8B{Q$%?!0 z`ms;AyEaU_$U=t0Jod=rLJzgc`C3!89+&M7G?7}$?4u^kDD(60za+ESwXeQbHGG}v zw_M&JM4E%;1w+lbf|5!?P z$66hDT4d@`yf@C?;!x4fmb-cED??t*<1&!yUH*eLFM6%mm*2G#{l^VvpH0|&bAos6 z!BS(b&XUx5X@}Be0tt0+(3v?e9sLY;yw#`J!cM=Qd z{Xe^-*6JDZ9L{rKoxqZ{HOlOi#V#H`;S?ju0~@qkoj%r2@m%bnkf1vK^j{eU>lL0V zLMme2FBujFoaj3KSdjgBt5f4|pXn?PF02>!8HfMo{K1s|*wd^iCh#r;0|SGntDnm{ Hr-UW|M-Sf8#g?qwof+Q!Q!~FOf{2rb?0RB>yA2i4*fsZ`TA** zUM8yzqx+Q)S-%a9K1)V0Fef-{IXfvYXa5ns;>NQcTh2EyD9>#*mXs8DE1claqtxCw zafS1r&NE9^z4$$ERnwuSLyKNpt?GJP<{g?idsWjRCF7M^Mw3@56+e(?UX;srM1#-& zyyT|sKU8m}Ik3Gy>SDM*w$`UVefqh%jLeH-nWBFOm(HL4-D2mCUGrtmTw7qBCGg?f e->sED82!Ho_b{u>O=VzUVDNPHb6Mw<&;$UCG;*Z? diff --git a/src/plugins/qmldesigner/componentsplugin/images/tabbar16.png b/src/plugins/qmldesigner/componentsplugin/images/tabbar16.png deleted file mode 100644 index b91390fec9680dc67174f709acb960399ab4d6e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7;yqm)Lo7}wZ`rmjEh!=4 z$7u(-gybz7w){Eoz?fiSYP|Ri1GDqtg?SBa%hXcYG_*7W(;Au2Y5%*xs07qJ&iTi^wM(3=9kmp00i_>zopr E0OS8NP5=M^ diff --git a/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png b/src/plugins/qmldesigner/componentsplugin/images/tabbutton.png deleted file mode 100644 index 28cca263260eb930c62fd68422a8123035a21a9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJoI14-?iy0WWg+Z8+Vb&Z8 z1_s8=eS?e;tDAaJMn+(u!`&d(E+0$n{kM6Lt`1_WIST=2zYHj9k@An z_fM%d-iujVW!UOxo=sa?w?F^L_ZU6*X{n{hAAg+prFOoAO`GnU`QM6WH@x4lGic=z z%k#>d0csbnCCpH8&~2El!s*$to?nlPh`uPjSs(QIq@>=QZf)cF#G&-soO{PKF@&%4TN4+ZTxdSw6q)jt?=g6wyQxy@L?z`(%Z>FVdQ&MBb@0DHdg AsQ>@~ diff --git a/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png b/src/plugins/qmldesigner/componentsplugin/images/tabbutton16.png deleted file mode 100644 index aee09a0a344c13beef0cf73f123eb59be855c9ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_nkSPZ!4!i_=Rd8)h9g5NVq)a`IT=#|aXTSay}a60k~pAyd`BqdNV?1>-4l3gIs} zcYS4P<(q3&UeK$U;Pd9hMxF1r&Wcm`!ag6~f8x^jd%txzZp(cr(s?$GdGW;;N?nVp zj~D7$KL08>WnudZuC#vse%$Da)B*;Yk&0%0* OVDNPHb6Mw<&;$Ux-men? diff --git a/src/plugins/qmldesigner/componentsplugin/images/textarea.png b/src/plugins/qmldesigner/componentsplugin/images/textarea.png index 388a5c5786b61e3b4bc05655288a6ecbdcf3a341..55a0c40d6b39e96b51c1ae2d34492ecba20febef 100644 GIT binary patch delta 121 zcmeBS>tdWBQN+T`z`!6Bsc;%Z1^9%xN=ZrS>+2gE8^_1TZ`!nJ&z?Pjj&q9{7#NH_ zT^vIs!jlc$n0QvmI9f0ixi~LW5NH-&!os$SSzY)*!x7HZqenRt53XcCX(E#Um`j$y YvDMM)(yd)F3=9kmp00i_>zopr0QVRqi~s-t delta 768 zcmeBT>|vWAQP07~z`*dJ-1Y|p0|RG)M`SSr1K(i~W;~w1B87p0X`iQyV~EG`y2vOjNQyFSZnv4W1rQZ{ccBPp3B3y(USx;E+A2HjKN+7=x1Xi{nl&=hZ%>EX&+ z!Q*-Q)%Gb1IL`e(-x`1KaQOSyn+1;c@9WRme!uhkuNK3U`lz;`;--ZQ7h1I+7L=Bi zt(BFQ)~?ulZ&j1T5v6Aj9wf}YbpO75bWF^VhYuC|`uZk#EnUTxB%m$A)p+C7j~_d# zDl0p0-;RFr`DfROw9Pwq?)+&|v{NP|bZU(2>nf|c$F5!#RZ~+7Nv*1i(iP#FF@L^$ zaie9Bj=UZi`>MdUfdL&6z8t>*eIy&OdKH zn9y)B<4;86IVryO#H~@PiKV5Yva+%_?%q9m?i`-n?gzPWR^R z+tvR*Qz%$u5u2TzZDDVJ{NqQ%Y15{)G*o=q(Bv>byY7E&=ZXosN{UlArvCC1=&-a& zKi6K#^>6Fi_|93vAv6BmW%;uFQ1g401@iXSmHz7enxFksTW$LLMJG>shVGaAdAOWq zqs6Ye{qdn}Y-~w){NyG~y|jw6R=-0t-(;V8b#-;}tV!W-i?lN~t>Q`&SiOF|{&)HfKizfiwdiR%QWbP7bF|QO?FrgAERnj0<1z>=5y>J`*&M1MG6B0<8@CL#}EturIUAd zYdH!W``sUGT%2qu!0c}ll6=(V$_e8OCmdLnT?JeU(;W6Vd_3@5qBKRsQTTPPsKuK1 zA8*8({m9t0YhQeL_*nyng#CiStFK1wjXQ5W*Y9B7_G0~dOPRjNxwP70~bQ0|5A5Ji6@LSG&H}AXe-#U4<$($)hk}E>A5{zc<(wXYz zDRaE`${~@dr&BBJ<|~{wnsYvVf=cI>`|lHX#sr-!uxN2nQrwtgq?xxpT0?}ZWWxF9 z4_ViQtqxdy^~JM`8TBj+13Y%7n9XLaiZqcDmG5WIF_X4BaOC_|mS#tT*=O@Nia%J) zH1TMX;m5lDhfAzNPaVJdwygPRQe)hD_v)6OZ)}lL_)sYsI$I-+udDUEx8| z&H#SD<-&|*yJdYDtm|#$GWENZWcb(*+zDFgB7E?mdKI;Vst07lL1EC2ui diff --git a/src/plugins/qmldesigner/componentsplugin/images/textfield.png b/src/plugins/qmldesigner/componentsplugin/images/textfield.png index a5c77b3a720fb04be6e8071eb7d49f29aca70083..d9f6ff03c7f3f1d345dd5b8d930a32c884c979e9 100644 GIT binary patch delta 118 zcmey&+RivZBAn@Hf+q+U}3OiM1MG6B0(^5|t#}JR>Z$oW8 ziV`LEHWxQHXZtP<6cAl9(OH#Ml$ZC>g&>8LUa@mY(Gl->9eaaVT3IG8(&e=hk-D-# z?4f`C{J#n!4}ZR^eBf65GcX~SlYNi=`|5L_=RDu@U5lZ9%KVm3+8L{56GOv5;S-K}MSQ%xS2dZLnI|4S>U!jHp^U8T!w(-es7+{&@%Hvs*luKM z8hSFt$imv%*=p`Tu?gC<&mMYO6e_a)_FwnEiu2DaPd{DDeZtkRXg`-ow`)vnZ0&*Y z7VcK2ElQ%M=JG7_>gUhjxM4#>TN~R9A2kzm^TjJya^~jdT3A>dc>8wkgp8}1|2f6n zqOV=QURYPB#}reqUQk}Hez@~!(ud!F4WxQ++`jE>A|=Ws_he39Ufz-Trq|P_Pj}k3 ze}DhGcX=v8ov&m+G|oQ#)M(rG?TH&Bmb_|jXFqfP{Njxp1;2j%`r&6yJxBZD7q4C& zI(f3Q#N5h?Yx!l)xqj@;2Njr}XixQe&uVhDx0iRu*|eJ*cJ1ow>*IU#=8b{~*TTJf zV|RV2u-S0?ZGnYML}cW|h)+C6|KC2ipJ_{OULIf7UO8P|-Ak7V~-y{zGKIZ1J9ltou6*?C zSCr7^J$rP*>&wf-|D*|c94cA6cJ0G2Uqnu(2sJu5utdaM<=YbT`R7~JM>ZLPtd%pS zWtJy2O)cWTzVmsrtFf`MsP1K(53&m4uFID%*FN>&K|;&EqQsQy1t?H)JmfpO1bCv^N(bw4EzB;A+AzVQd(MC{{H@(Hf`FoXOH+E>v9GL25nCl z#}JO_pSq>E>mN_OXEJ^4}yw$mZn;|T)^?w-{ P7#KWV{an^LB{Ts5M{*;T delta 452 zcmb=w%sfG&o`a2nfkFQB|3n4`2F?PH$YKTtzQZ8Qcszea3IhXUtEY=&h{frn!MnSd z90lgg5BB-Ps%*H!!-e-q3acZ_!2>QIL_6XaY*>(#R#2X`;z!-XZ3ME7;i|cv@7;%EYKU(c{I(ikSLajD;)Pt6CRnoPS!>c{Pi* zt1O`?dE<@XC!Z@2BWVrJSLmh5PRpTFqUMDdq8?!Y0W=W>MUFpxi)+-Z^Tl2Su5f5xG4Yd!N>c7buca2| zxjEZ!?`QlXdhWS#b=3OnF$>tGdD!--MNSU-Wc&2UQpU$0C6)$xb`@CI{aH}zGf7s4 zkG;oDxy5N=dx3>a-s8l&9?|;AC!cJW6_{Q%$8Y)X&-RzOzjr@qce(%jIs*d(gQu&X J%Q~loCIA#G(h2|o diff --git a/src/plugins/qmldesigner/componentsplugin/images/toolbar.png b/src/plugins/qmldesigner/componentsplugin/images/toolbar.png deleted file mode 100644 index 91b335082d11f0adfbcaa89c94c657e49146816b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0y~yU@&K3U=ZeDV_;w~c{VkTfq`MAr;B4q#NoG>Z26iT z1de{xT$}qxA+O=wH76}il}W8TIJQ5K2%C3sa|Ofs2exbOKA#})ZiBwa{ymxhPo7wt z>wCMD|7)ni$4l!X)}7lcdd2_eN4}ZmzQ%9db7BvNT|Lk*U|_$ttaGc_ss7UmSrfe@ zo2Jg`W?J)P%JT%%_L^+<(L``wPYh6$>-HJDca)MfrEbFaw%*R;KB kuFY<>(h%6W`l#4I_p3PBl@o2fSzrW>|gvyrhY74JPao$u@ ryseU=FSP5ulT%B|dhQ!@D(hD%sP5Sl!#jh4fq}u()z4*}Q$iB}kOna~ From 659950e95d2b1b88d4d07f1c1d18a75f3873f2cf Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 21 Jul 2016 15:07:40 +0200 Subject: [PATCH 72/86] Doc: Using Ctrl+N and Ctrl+P shortcuts to navigate in locator Change-Id: I290f148e5a7ceba42d3fe17a70ec59efcb774aef Reviewed-by: Alessandro Portale --- doc/src/editors/creator-editors.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index 7ac3dfaeaac..9d7e28f1867 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -2537,6 +2537,11 @@ \key Space. The prefix is usually a single character. Then type the search string (typically, a filename or class name) or the command to execute. + You can also double-click a locator filter in the filter list to use it. You + can use the up and down arrow keys or the \key Ctrl+P and \key Ctrl+N + keyboard shortcuts to move up and down the list, and then press \key Enter + to use the selected filter. + For example, to locate symbols matching QDataStream: \list 1 From efe1e70ea26b52527d8e08c730d5a29447af524d Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jul 2016 16:50:11 +0200 Subject: [PATCH 73/86] Doc: Update info about QML file wizards Change-Id: I71a6f068c1b310bf2038379afde63c1ad32652a6 Reviewed-by: Thomas Hartmann --- doc/src/projects/creator-projects-creating.qdoc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index 29bc9b1bd72..f3cd4557a85 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -302,12 +302,9 @@ application executable \li QML files, which specify items in Qt Quick projects. - \uicontrol {Qt Quick 1} creates a QML file that imports Qt Quick 1.1 and - \uicontrol {Qt Quick 2} creates a QML file that imports Qt Quick 2.0. - Select \uicontrol {Qt Quick 1} to add files to a Qt Quick 1 application - and \uicontrol {Qt Quick 2} to add files to a Qt Quick 2 application. - \uicontrol {Qt Quick UI File} creates an UI form (\e .ui.qml) and - the corresponding QML file. + \uicontrol {QML File (Qt Quick 2)} creates a QML file that imports + Qt Quick 2.0 and \uicontrol {Qt Quick UI File} creates an UI form + (\e .ui.qml) and the corresponding QML file. \li JavaScript files that you can use to write the application logic in Qt Quick projects From 412c221ddc8d263afeafcbe050e9b17e0c71bf9c Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 27 Jul 2016 10:33:53 +0200 Subject: [PATCH 74/86] Doc: Describe Qt item model wizard Change-Id: I22256c3060623a8350a96a56274d5cb2fc2504bb Reviewed-by: Alessandro Portale --- doc/src/projects/creator-projects-creating.qdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index f3cd4557a85..85ce1803193 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -295,6 +295,10 @@ \list + \li Qt item model source and header files that you can use to create + classes derived from QAbstractItemModel, QAbstractTableModel, or + QAbstractListModel. + \li \QD forms and \QD form classes, which specify parts of user interfaces in Qt widget based projects From 55466483cb484e7364ef2e23aedd656206a0a175 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 28 Jul 2016 16:16:47 +0200 Subject: [PATCH 75/86] Doc: Update descriptions of Qt Quick Application wizards Some fields are only available in some wizards. Change-Id: Ibecca943fcd5ce8bdc131896762093c1918d56cd Reviewed-by: Tim Jenssen Reviewed-by: Thomas Hartmann --- doc/src/qtquick/qtquick-creating.qdoc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/src/qtquick/qtquick-creating.qdoc b/doc/src/qtquick/qtquick-creating.qdoc index 19c61dbd0b1..7b1e09a09c7 100644 --- a/doc/src/qtquick/qtquick-creating.qdoc +++ b/doc/src/qtquick/qtquick-creating.qdoc @@ -92,16 +92,18 @@ \uicontrol {Qt Quick Controls Application}, or \uicontrol {Qt Labs Controls Application} > \uicontrol Choose. - \li In the \uicontrol {Minimal required Qt version} field, select the Qt - version to develop with. The Qt version determines the Qt Quick - imports that are used in the QML files. + \li For some Qt Quick applications, you must select the Qt version to + develop with in the \uicontrol {Minimal required Qt version} field. + The Qt version determines the Qt Quick imports that are used in the + QML files. - \li Select the \uicontrol {With .ui.qml file} check box to create an UI + \li For some Qt Quick applications, you can select the + \uicontrol {With .ui.qml file} check box to create an UI form that can contain a subset of the QML language. Similarly as with the UI forms for \QD, it is recommended that you use \QMLD to edit the UI forms. For more information, see \l{Qt Quick UI Forms}. - \li For a Qt Quick Controls application, you can also select the + \li For some Qt Quick applications, you can also select the \uicontrol {Enable native styling} check box. \QC adds a dependency to the Qt Widgets module to the \c .pro file. From 7ad279e99d3e9cb7ba24739b60acc3ff1daeb226 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 28 Jul 2016 16:22:18 +0200 Subject: [PATCH 76/86] Doc: Update Qt Quick Designer connection editor docs - Update the screenshot - Use "select" instead of "specify", because items and properties can be selected from lists. Change-Id: I292f7900d956c682e3f4b6071bbef9a6362cc6be Reviewed-by: Tim Jenssen Reviewed-by: Thomas Hartmann --- doc/images/qmldesigner-bindings.png | Bin 5852 -> 4919 bytes .../qtquick/qtquick-connection-editor.qdoc | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/images/qmldesigner-bindings.png b/doc/images/qmldesigner-bindings.png index 723fe3ea119782ae5c432e04e713d73c08e370f0..ebe24eb7582eb5c94ebab5c7ec70b0f73699f5ab 100644 GIT binary patch literal 4919 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 E0Ky8SNdN!< literal 5852 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 diff --git a/doc/src/qtquick/qtquick-connection-editor.qdoc b/doc/src/qtquick/qtquick-connection-editor.qdoc index 236d3f9bbc6..a9ff30855b1 100644 --- a/doc/src/qtquick/qtquick-connection-editor.qdoc +++ b/doc/src/qtquick/qtquick-connection-editor.qdoc @@ -108,13 +108,13 @@ \li Select \uicontrol Item to select the target object whose property you want to change dynamically. - \li Select \uicontrol Property to specify the property to bind to a source + \li Select \uicontrol Property to select the property to bind to a source property. - \li Select \uicontrol {Source Item} to specify the object whose property you + \li Select \uicontrol {Source Item} to select the object whose property you want to use to determine the behavior of the target object. - \li Select \uicontrol {Source Property} to specify the property to bind the + \li Select \uicontrol {Source Property} to select the property to bind the target property to. \endlist From 1d61239bb9d23cf3d4c1cab7aefd9bffd990bf05 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 29 Jul 2016 10:20:36 +0200 Subject: [PATCH 77/86] QmlDesigner: readd the flag to fix a crash Also this is necessary to be at the right middle position of QtCreator. Change-Id: I691002b7ed5a29a1ea2094f62aba121b2a2e458e Task-number: QTCREATORBUG-16673 Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/documentwarningwidget.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qmldesigner/documentwarningwidget.cpp b/src/plugins/qmldesigner/documentwarningwidget.cpp index 0c55a618357..d816db32640 100644 --- a/src/plugins/qmldesigner/documentwarningwidget.cpp +++ b/src/plugins/qmldesigner/documentwarningwidget.cpp @@ -52,6 +52,9 @@ DocumentWarningWidget::DocumentWarningWidget(QWidget *parent) , m_ignoreWarningsCheckBox(new QCheckBox(this)) , m_continueButton(new QPushButton(this)) { + // this "tooltip" should behave like a widget with parent child relation to the designer mode + setWindowFlags(Qt::Widget); + QFont boldFont = font(); boldFont.setBold(true); m_headerLabel->setFont(boldFont); From a13875daf55eb574500125339126312a03040018 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 29 Jul 2016 11:45:17 +0200 Subject: [PATCH 78/86] QmlDesigner: disable validator for source property column The source column can have contain real code so disable the validator and trimm the expression because it is compared with the already trimmed source in the rewriter. Change-Id: I0cc684f8446799e3bd4ee77a8a9bb8077164f3b9 Reviewed-by: Thomas Hartmann --- .../qmldesignerextension/connectioneditor/bindingmodel.cpp | 2 +- .../qmldesignerextension/connectioneditor/delegates.cpp | 6 ++++++ .../qmldesignerextension/connectioneditor/delegates.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/bindingmodel.cpp b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/bindingmodel.cpp index 273d2ea977d..11e03384fb3 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/bindingmodel.cpp +++ b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/bindingmodel.cpp @@ -308,7 +308,7 @@ void BindingModel::updateExpression(int row) RewriterTransaction transaction = connectionView()->beginRewriterTransaction(QByteArrayLiteral("BindingModel::updateExpression")); try { - bindingProperty.setExpression(expression); + bindingProperty.setExpression(expression.trimmed()); transaction.commit(); //committing in the try block } catch (Exception &e) { m_exceptionError = e.description(); diff --git a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.cpp b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.cpp index 74fdd455ae6..e53e2fc1c84 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.cpp +++ b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.cpp @@ -71,6 +71,11 @@ void PropertiesComboBox::setText(const QString &text) setEditText(text); } +void PropertiesComboBox::disableValidator() +{ + setValidator(0); +} + ConnectionComboBox::ConnectionComboBox(QWidget *parent) : PropertiesComboBox(parent) { } @@ -163,6 +168,7 @@ QWidget *BindingDelegate::createEditor(QWidget *parent, const QStyleOptionViewIt } break; case BindingModel::SourcePropertyNameRow: { bindingComboBox->addItems(model->possibleSourceProperties(bindingProperty)); + bindingComboBox->disableValidator(); } break; default: qWarning() << "BindingDelegate::createEditor column" << index.column(); } diff --git a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.h b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.h index 640cc1f757e..581e59c3f9b 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.h +++ b/src/plugins/qmldesigner/qmldesignerextension/connectioneditor/delegates.h @@ -42,6 +42,7 @@ public: virtual QString text() const; void setText(const QString &text); + void disableValidator(); }; class ConnectionComboBox : public PropertiesComboBox From 09cbe5621d38503f6f9dfc491355aebae015e6fa Mon Sep 17 00:00:00 2001 From: Nazar Gerasymchuk Date: Fri, 29 Jul 2016 14:55:58 +0300 Subject: [PATCH 79/86] ProjectExplorer: Fix tab order in CustomParserConfigDialog For unknown reasons tab order in customparserconfigdialog.ui was set incorrectly and behave unexpectedly. Now tab order behave naturally. Change-Id: Ife117dd0dfd8c583e4bfe6b1191bdcae65bad05b Reviewed-by: Tim Jenssen --- .../projectexplorer/customparserconfigdialog.ui | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/customparserconfigdialog.ui b/src/plugins/projectexplorer/customparserconfigdialog.ui index b79dbe32858..7901db4e9b3 100644 --- a/src/plugins/projectexplorer/customparserconfigdialog.ui +++ b/src/plugins/projectexplorer/customparserconfigdialog.ui @@ -429,8 +429,17 @@ errorFileNameCap errorLineNumberCap errorMessageCap + errorStdOutChannel + errorStdErrChannel errorOutputMessage - buttonBox + tabWidget + warningPattern + warningFileNameCap + warningLineNumberCap + warningMessageCap + warningStdOutChannel + warningStdErrChannel + warningOutputMessage From c8020af9972ddc71be291f98ecfb97f5edda7a66 Mon Sep 17 00:00:00 2001 From: Nazar Gerasymchuk Date: Fri, 29 Jul 2016 12:45:14 +0300 Subject: [PATCH 80/86] ProjectExplorer: Fix tab order in projectwizardpage.ui For unknown reasons tab order in projectwizardpage.ui was set incorrectly and behave unexpectedly. Now tab order behave naturally. Change-Id: I56dd70234b6ebd734b5893f50d4f7255c23639d8 Reviewed-by: Tim Jenssen --- src/plugins/projectexplorer/projectwizardpage.ui | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/projectexplorer/projectwizardpage.ui b/src/plugins/projectexplorer/projectwizardpage.ui index 37e53de2a2f..d42fb7edeb3 100644 --- a/src/plugins/projectexplorer/projectwizardpage.ui +++ b/src/plugins/projectexplorer/projectwizardpage.ui @@ -135,6 +135,12 @@
utils/treeviewcombobox.h
+ + projectComboBox + addToVersionControlComboBox + vcsManageButton + scrollArea + From ad49e64ff00259fc1967768695dd5e5a0ee65c96 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 27 Jul 2016 14:48:42 +0200 Subject: [PATCH 81/86] CppTools: Cancel parsing if editor is closed The m_parserFuture.cancel() in ~BuiltinEditorDocumentProcessor() did not cancel anything. Thus, closing a document while the parser was running led to a blocking UI thread. Now it cancels at the next include directive it encounters. Change-Id: I092fddbbd747e0bc95265b6e9b4fcc26b3f76cb3 Reviewed-by: Friedemann Kleint Reviewed-by: Tim Jenssen --- src/libs/cplusplus/pp-engine.cpp | 8 ++++++++ src/libs/cplusplus/pp-engine.h | 6 ++++++ src/plugins/clangcodemodel/clangeditordocumentparser.cpp | 3 ++- src/plugins/clangcodemodel/clangeditordocumentparser.h | 3 ++- src/plugins/cpptools/baseeditordocumentparser.cpp | 9 ++++++++- src/plugins/cpptools/baseeditordocumentparser.h | 7 +++++-- src/plugins/cpptools/baseeditordocumentprocessor.cpp | 2 +- src/plugins/cpptools/builtineditordocumentparser.cpp | 7 ++++++- src/plugins/cpptools/builtineditordocumentparser.h | 3 ++- src/plugins/cpptools/cppsourceprocessor.cpp | 5 +++++ src/plugins/cpptools/cppsourceprocessor.h | 3 +++ 11 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 134fb4d51c8..6a414d8b0fd 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -762,6 +762,11 @@ QByteArray Preprocessor::run(const QString &fileName, return preprocessed; } +void Preprocessor::setCancelChecker(const Preprocessor::CancelChecker &cancelChecker) +{ + m_cancelChecker = cancelChecker; +} + bool Preprocessor::expandFunctionlikeMacros() const { return m_expandFunctionlikeMacros; @@ -1636,6 +1641,9 @@ void Preprocessor::handlePreprocessorDirective(PPToken *tk) void Preprocessor::handleIncludeDirective(PPToken *tk, bool includeNext) { + if (m_cancelChecker && m_cancelChecker()) + return; + m_state.m_lexer->setScanAngleStringLiteralTokens(true); lex(tk); // consume "include" token m_state.m_lexer->setScanAngleStringLiteralTokens(false); diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h index b265de6d46a..19935b2c7d9 100644 --- a/src/libs/cplusplus/pp-engine.h +++ b/src/libs/cplusplus/pp-engine.h @@ -56,6 +56,8 @@ #include #include +#include + namespace CPlusPlus { class Environment; @@ -81,6 +83,9 @@ public: QByteArray run(const QString &filename, const QByteArray &source, bool noLines = false, bool markGeneratedTokens = true); + using CancelChecker = std::function; + void setCancelChecker(const CancelChecker &cancelChecker); + bool expandFunctionlikeMacros() const; void setExpandFunctionlikeMacros(bool expandFunctionlikeMacros); @@ -253,6 +258,7 @@ private: Client *m_client; Environment *m_env; QByteArray m_scratchBuffer; + CancelChecker m_cancelChecker; bool m_expandFunctionlikeMacros; bool m_keepComments; diff --git a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp index 97939dd92c4..129c0669a61 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp @@ -35,7 +35,8 @@ ClangEditorDocumentParser::ClangEditorDocumentParser(const QString &filePath) setConfiguration(config); } -void ClangEditorDocumentParser::updateHelper(const CppTools::WorkingCopy &) +void ClangEditorDocumentParser::updateHelper(const QFutureInterface &, + const CppTools::WorkingCopy &) { State state_ = state(); state_.projectPart = determineProjectPart(filePath(), configuration(), state_); diff --git a/src/plugins/clangcodemodel/clangeditordocumentparser.h b/src/plugins/clangcodemodel/clangeditordocumentparser.h index 65da483e2f2..848e31f1259 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentparser.h +++ b/src/plugins/clangcodemodel/clangeditordocumentparser.h @@ -37,7 +37,8 @@ public: ClangEditorDocumentParser(const QString &filePath); private: - void updateHelper(const CppTools::WorkingCopy &) override; + void updateHelper(const QFutureInterface &future, + const CppTools::WorkingCopy &) override; }; } // namespace ClangCodeModel diff --git a/src/plugins/cpptools/baseeditordocumentparser.cpp b/src/plugins/cpptools/baseeditordocumentparser.cpp index 4a216e17ae9..ee3b8bec5c4 100644 --- a/src/plugins/cpptools/baseeditordocumentparser.cpp +++ b/src/plugins/cpptools/baseeditordocumentparser.cpp @@ -77,9 +77,16 @@ void BaseEditorDocumentParser::setConfiguration(const Configuration &configurati } void BaseEditorDocumentParser::update(const WorkingCopy &workingCopy) +{ + QFutureInterface dummy; + update(dummy, workingCopy); +} + +void BaseEditorDocumentParser::update(const QFutureInterface &future, + const WorkingCopy &workingCopy) { QMutexLocker locker(&m_updateIsRunning); - updateHelper(workingCopy); + updateHelper(future, workingCopy); } BaseEditorDocumentParser::State BaseEditorDocumentParser::state() const diff --git a/src/plugins/cpptools/baseeditordocumentparser.h b/src/plugins/cpptools/baseeditordocumentparser.h index 3822394c61b..328fe421fdb 100644 --- a/src/plugins/cpptools/baseeditordocumentparser.h +++ b/src/plugins/cpptools/baseeditordocumentparser.h @@ -29,6 +29,7 @@ #include "cppworkingcopy.h" #include "projectpart.h" +#include #include #include @@ -39,7 +40,7 @@ class CPPTOOLS_EXPORT BaseEditorDocumentParser : public QObject Q_OBJECT public: - using Ptr = QSharedPointer;; + using Ptr = QSharedPointer; static Ptr get(const QString &filePath); struct Configuration { @@ -58,6 +59,7 @@ public: void setConfiguration(const Configuration &configuration); void update(const WorkingCopy &workingCopy); + void update(const QFutureInterface &future, const WorkingCopy &workingCopy); ProjectPart::Ptr projectPart() const; @@ -76,7 +78,8 @@ protected: mutable QMutex m_stateAndConfigurationMutex; private: - virtual void updateHelper(const WorkingCopy &workingCopy) = 0; + virtual void updateHelper(const QFutureInterface &future, + const WorkingCopy &workingCopy) = 0; const QString m_filePath; Configuration m_configuration; diff --git a/src/plugins/cpptools/baseeditordocumentprocessor.cpp b/src/plugins/cpptools/baseeditordocumentprocessor.cpp index f32d79ed771..82aa058b90d 100644 --- a/src/plugins/cpptools/baseeditordocumentprocessor.cpp +++ b/src/plugins/cpptools/baseeditordocumentprocessor.cpp @@ -77,7 +77,7 @@ void BaseEditorDocumentProcessor::runParser(QFutureInterface &future, return; } - parser->update(workingCopy); + parser->update(future, workingCopy); CppToolsBridge::finishedRefreshingSourceFiles({parser->filePath()}); future.setProgressValue(1); diff --git a/src/plugins/cpptools/builtineditordocumentparser.cpp b/src/plugins/cpptools/builtineditordocumentparser.cpp index 014252b13d8..8ab6a891014 100644 --- a/src/plugins/cpptools/builtineditordocumentparser.cpp +++ b/src/plugins/cpptools/builtineditordocumentparser.cpp @@ -55,7 +55,8 @@ BuiltinEditorDocumentParser::BuiltinEditorDocumentParser(const QString &filePath qRegisterMetaType("CPlusPlus::Snapshot"); } -void BuiltinEditorDocumentParser::updateHelper(const WorkingCopy &theWorkingCopy) +void BuiltinEditorDocumentParser::updateHelper(const QFutureInterface &future, + const WorkingCopy &theWorkingCopy) { if (filePath().isEmpty()) return; @@ -181,6 +182,10 @@ void BuiltinEditorDocumentParser::updateHelper(const WorkingCopy &theWorkingCopy if (releaseSourceAndAST_) doc->releaseSourceAndAST(); }); + sourceProcessor.setCancelChecker([future]() { + return future.isCanceled(); + }); + Snapshot globalSnapshot = modelManager->snapshot(); globalSnapshot.remove(filePath()); sourceProcessor.setGlobalSnapshot(globalSnapshot); diff --git a/src/plugins/cpptools/builtineditordocumentparser.h b/src/plugins/cpptools/builtineditordocumentparser.h index c2eb4c86ee4..94ae556574c 100644 --- a/src/plugins/cpptools/builtineditordocumentparser.h +++ b/src/plugins/cpptools/builtineditordocumentparser.h @@ -58,7 +58,8 @@ public: static Ptr get(const QString &filePath); private: - void updateHelper(const WorkingCopy &workingCopy) override; + void updateHelper(const QFutureInterface &future, + const WorkingCopy &workingCopy) override; void addFileAndDependencies(CPlusPlus::Snapshot *snapshot, QSet *toRemove, const Utils::FileName &fileName) const; diff --git a/src/plugins/cpptools/cppsourceprocessor.cpp b/src/plugins/cpptools/cppsourceprocessor.cpp index f238a841f7a..e04d977ebf1 100644 --- a/src/plugins/cpptools/cppsourceprocessor.cpp +++ b/src/plugins/cpptools/cppsourceprocessor.cpp @@ -121,6 +121,11 @@ CppSourceProcessor::CppSourceProcessor(const Snapshot &snapshot, DocumentCallbac CppSourceProcessor::~CppSourceProcessor() { } +void CppSourceProcessor::setCancelChecker(const CppSourceProcessor::CancelChecker &cancelChecker) +{ + m_preprocess.setCancelChecker(cancelChecker); +} + void CppSourceProcessor::setWorkingCopy(const WorkingCopy &workingCopy) { m_workingCopy = workingCopy; } diff --git a/src/plugins/cpptools/cppsourceprocessor.h b/src/plugins/cpptools/cppsourceprocessor.h index fdebc893c6f..84ea0343472 100644 --- a/src/plugins/cpptools/cppsourceprocessor.h +++ b/src/plugins/cpptools/cppsourceprocessor.h @@ -59,6 +59,9 @@ public: CppSourceProcessor(const CPlusPlus::Snapshot &snapshot, DocumentCallback documentFinished); ~CppSourceProcessor(); + using CancelChecker = std::function; + void setCancelChecker(const CancelChecker &cancelChecker); + void setWorkingCopy(const CppTools::WorkingCopy &workingCopy); void setHeaderPaths(const ProjectPartHeaderPaths &headerPaths); void setLanguageFeatures(CPlusPlus::LanguageFeatures languageFeatures); From 3bd9dbf5b274ed28d604387f2bc68d6a204900e8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 20 Jul 2016 17:12:58 +0200 Subject: [PATCH 82/86] QmlDesigner: Adding testproject for directory imports Change-Id: Ib9f4feb745722dc1e43c6651ed1cfc4a017818e7 Reviewed-by: Tim Jenssen --- .../directoryimport/directory/MyComponent.qml | 34 +++++++++++++++++ .../directoryimport/directoryimport.qml | 38 +++++++++++++++++++ .../directoryimport.qmlproject | 20 ++++++++++ 3 files changed, 92 insertions(+) create mode 100644 tests/manual/qml/testprojects/directoryimport/directory/MyComponent.qml create mode 100644 tests/manual/qml/testprojects/directoryimport/directoryimport.qml create mode 100644 tests/manual/qml/testprojects/directoryimport/directoryimport.qmlproject diff --git a/tests/manual/qml/testprojects/directoryimport/directory/MyComponent.qml b/tests/manual/qml/testprojects/directoryimport/directory/MyComponent.qml new file mode 100644 index 00000000000..4af155d3b94 --- /dev/null +++ b/tests/manual/qml/testprojects/directoryimport/directory/MyComponent.qml @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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.3 +import QtQuick.Controls 1.2 +import QtQuick.Window 2.2 + +Rectangle { + width: 20 + height: 20 + color: "#2630de" +} diff --git a/tests/manual/qml/testprojects/directoryimport/directoryimport.qml b/tests/manual/qml/testprojects/directoryimport/directoryimport.qml new file mode 100644 index 00000000000..40ae6765134 --- /dev/null +++ b/tests/manual/qml/testprojects/directoryimport/directoryimport.qml @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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.3 +import "directory" + +Item { + + width: 640 + height: 480 + + MyComponent { + + + } +} diff --git a/tests/manual/qml/testprojects/directoryimport/directoryimport.qmlproject b/tests/manual/qml/testprojects/directoryimport/directoryimport.qmlproject new file mode 100644 index 00000000000..0d3f618138f --- /dev/null +++ b/tests/manual/qml/testprojects/directoryimport/directoryimport.qmlproject @@ -0,0 +1,20 @@ +/* File generated by Qt Creator */ + +import QmlProject 1.1 + +Project { + mainFile: "plugins.qml" + + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + /* List of plugin directories passed to QML runtime */ + importPaths: [ "imports" ] +} From dfd3568a70d291a23e8aa7382fa9c549693bb837 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 29 Jul 2016 11:57:45 +0200 Subject: [PATCH 83/86] Doc: Update screenshots of Qt Quick Designer Connections pane Change-Id: Icb85ac30145b2897b4a9c9e83e476337bae3f8f2 Reviewed-by: Tim Jenssen --- .../qmldesigner-borderimage-bindings-text.png | Bin 6569 -> 5220 bytes .../qmldesigner-borderimage-bindings.png | Bin 5170 -> 4103 bytes .../qmldesigner-borderimage-connections.png | Bin 5006 -> 3802 bytes .../qmldesigner-borderimage-properties.png | Bin 5474 -> 4146 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/qmldesigner-borderimage-bindings-text.png b/doc/images/qmldesigner-borderimage-bindings-text.png index 6484c13f01499ccad14eeb6f660cc4c4a2ce3926..9a1e47c52db1068b4d8f945fea3cac6dbe292fb7 100644 GIT binary patch literal 5220 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 a>-moV!^Z>SHyIch7(8A5T-G@yGywqjMY8Vz diff --git a/doc/images/qmldesigner-borderimage-bindings.png b/doc/images/qmldesigner-borderimage-bindings.png index 78a82b7f564c872a9727310a01bf7aa856486d60..1955f7456750da914a021e6ccd886f5b60f807e0 100644 GIT binary patch literal 4103 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 AQ2+n{ literal 5170 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 C74u90 diff --git a/doc/images/qmldesigner-borderimage-connections.png b/doc/images/qmldesigner-borderimage-connections.png index e37adb69240ed9d9ecf02c6341fd21870afeafa7..caaa7a72365010282f6d9a291de377e51883bc73 100644 GIT binary patch literal 3802 zcmeAS@N?(olHy`uVBq!ia0y~yU^Hf6V94cQW?*3WRazF$z`)E9;1lBN;}_uIe^ZpQ!_;+ z<$VVaM?^(?2ZTk(#;2sD#0Gk9y#Dg`t=pOVULU#sYTly77cXBj^Nn_2d^c^y?GRrt zF>!GrA>l0#-o$aQ;KV>U%$5-O|?4J^Jud$l8Zd%Wkh& zvu5ecj)|4Y8%{r-xb;@y>|^l(i4NY8KAxV2hK3p%8WEeG$E|!cXYYfB2XFs=e7s`9 zisFtbNqJ>+8<##Gq-|n2fD7kk2 z%6W5YC(oHZYj(?=nekOqr!D9Ti!9A6D4Nq&;1`zc<(ZTh5tbJ09_s4q>Fjdx&YP*n z-X!gK_58^r|0TDltUJ;)d)?Ay%Nv_og5&ZgG~_hr#}$Noo_zUb{=?5}ZoaEJ`8Hws zZSTdmw(Z(oK4Zt0JxjZnFP*by`i9w!G3j-a+AE?HDmL|I<|l?#MfvQx_o?&B$H|x8 zynOYt|M=71T@TzAKk!_1`|-*31?}^)D*G-it=v1Sa@mAphmeBag7}p1fE6#kTzT?o z-nlm=M_z?2e$ci4R>tH#|E{e`Z(Vcez@mw3=1!P7d;iMbwDOio)0#^w3tK9)y?nFc zlakAFlN?+FUjO}f`R(6z557#e^X1vQPs{Fn%scje``M?tJ03P{yH~gVZp-Q$$M!E@ zyVU-G2VccjeP_R~}Vvy6?U0{@OjKpWiuo@zjZp z8#m0{xYnm|u4Bf;t6L`YOqfvLGhxljz7tCu9O4@iBE!G_{`cVHul=vT&AtBq*N=DZ z8=gJ?bGLcP;pbO(%w4**Z_b8S7njzzE1cD4Ja*89ZPuWgAc@d%k$?3uXe z-rql$4xc@@^zg3g#wpnu)v-~T$4+0`a{g#zUe8=h&I1e#+*3VW978H@y}4ECGbvGq z{loXW*$>%@L^{r})(6a9Aib5b@~W7U#=2k5g1$$ZXF0pP)!#GqR?O_}>$dp>U$(h* z=a+K+^IJZ;>o+|!()NBE_kH8L$CZLzk~1f;i^fmfd;asMxcRpGztx;k1EjbA=T{c&TVOK4AbAS z)Sd8Sab};J!?9qN@#>{PD?hPJtLbPmoDq0^QKb9-yl0ccxTZO|B?T|p!K|ulzB*ZZ zN&J$@-{t|2VWGL-rhZL;G#6qX<0*g&&G((Hi4eBkP8W_0+BgN$1>O+ z{}vVyHvVyRy8DmE@xiY{`c|?T&s!z&e$v^s#esYBm)F1T_0i;FOY^UkXXlG3s*|{F z9DT;Pfh+I-gE}{c6gOk0i_IPehRhjRrG?3jR;PQHd{Im_PcY?WEHTwz;b1FltbJOm z+EM z+r0nAnX6Z~{=9Bhc$RO@yp64AH*krIi^m^TUAoYA_tUA5g#P?Cxwd=9pHIc-zV7P{ zndLjHH@u49|NTGJo42oP`c7SSntS%oilQyHmJe+ni?+=_CFrJApI^4{XUu!k&Yz_> zx>nC+JXkZ^9|_sAu1=QGO?_< z;_%x;%Zgv9*Be<+t6i#5v&vz$YP!bZlj+CfI9EH*+2YrEN<_wQwv6AgRE1|}irnMB zg~ZEq>hd0Zc*O2w${i8i2UhD;U#7k)c)jkU-OH4T`(7G07Qfn}xY_HLAUk{Ck3T!} z)*qU*Hs49BR;|nAy;tzEQ))-VtA4%P@3%9iVq?_9$Q2j8=50Ar(RIE)?_cGdUgL9} zr~f`G?%wn0R=HSH;j_v!-II6dpSRaLuDvezu);jf*{0GWyV5uW@R3~cKg>emgfuoGM&>Z4S&nXFi0e5@7WI@bJkz8&YjW!kT*|j-ENz{ z^-_;h6rN>owl{JpSi9P0`){YbtqmH8Hn%;+b=zCpfC` zX5-=dLoapyCoa1hYO=6-{mHL$?&&yh%nn%SdiGoI_tZUiK5U+ubey+2^7g+u@@XFn z^G`kA#Vp6sXL$DdG9f;JI~}(3f4}m~Tk^o|*|dv`>(~>1{0ZH7(C7YoF29{*@&wr3O1 z&KOg(`#FcE7ViJzIj?^Hjz#{H4khg9QrFV{q>{c&k5j^S&XKrdwRSmb;`c?Fjjtx? zY@2gXgG->tSSyoJi*50*o3?g$E}qVKD|^+vmFHN<8r_+?um7yMSYMT0sd$+~w;M%N)nczaTRq|0re{174r-+`Z z9~%yATP?uSBydKHrSTcl8MCz;^=4mlyl~7^d%o{%#f-mNG8K=jgpH5v%5gut;Y3%u zbe5Y-m`(QEv@+x3jk9lVk!<;Qd4j&t{^^;mGmTphwJfNd>zMFdPDkyBsV&DXmbs^s z+4$0J*eZ0JXR1YLuT4I;Kj6PheD~Qo&P$CiR@~jgtNiVP!1fIeDz7RwWtLxA`{KfZ zRHNO(T5cES`1BX9PStbI-L+JfW7WjeizbI7eF8(Pb%TRNB@Hh~Wo(Reui|;6nDyZ- zi*=%{{{+>_DsB8B5#PgR;Ttb?mygzN;GyZ$y zab5OL!Q6W~`{tka^}S{uEqzGdsP)g8u!L#0PwEa;FPO6PNSZ0{&%1IzC$8!El3{S= z)6bbUVRgrruR5S=T3n~__>-~!g)jQ=zX#1c*L8~}V`fRLW70Rds3UUkAD;|7zBoJO z&WW7I7RF{5w{D+w@s^KP#?;itr>g6Gx4({Dcr-9Ug<-?wm-jN+4~YKy-2CUKchxf zsgLpA(jV>fza5z)lkt?@)`Mw%>dg6$O5Y!-#A`oKUuOOA|1Zw}`e)AjFzan^?EJIy zrW5~<`m<;L**=K2{(gD3ngn}6O?BC=vKxNZ0v>GaJ9va1B;=nsx9C82z++Lt`wc=9 zivNBW>tg=@=2l28=j9)KRiEyCmdo5Om(m%#^y!D+$7U>_pnk)@KJ(9Hj|5cj4dJ&t@Fk0dJ*l&_g1n9} zeY~$PJ!!*ALcw<$yMu8mcv-Ob;Th;A0N@1yPy5o zlP0lJ#pHNR>oe`nnZ{ehOS2zXPOkgW{7{=w|60vSxd`#&{~aRQlQ$N=ueumxGeh-B z_-QuVg;~WuD>g{Z{HnM07FU1BqxKDAX5Mu!Pp%5do;&x^angeo7geNUnRHe`QHY z)eXh8x`wjUOZ-*qRy=B+*x9EP+4OQ}yL6Xppla>O$xA0Zvf26iyV6DeHrcb2FYb)q z?dQX3zGlaR4~xrp9lCI&KSK7L<@$rIQqLvd)wG|#q+3&&ygTXrgP%7qXXSE#nDec3 zZ8zHtTg8gEB~_r5#d9X;)TuY0*QSEt4^S7t`z&Hc=qWmwV@rU}h>s$jspdCCDD z_D0DWOIgw^InEr=Q8hU2n822%*%-;kWNhHgiIhrt&crRaUpGrUw@dP59s>gdgQu&X J%Q~loCID(csoVen literal 5006 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 literal 5474 zcmeAS@N?(olHy`uVBq!ia0y~yV4TRnz%Ye_nSp^J)%8gd0|PTdfKQ04zrVkyr>F7E z|L@f3xHdezUQwLgkBf1P;XL-vNRmD@gd z?fuxa>!VHMvEb#uTo(NGUi`;q?!SP5fS{lt4-b#f(9rhw_K1jxxVX6Dl42VhoBaIz zmX;PZHMQvI=p8$DBqb#k78d&W_#`AGR905T#>Q4uRFsvKm6w;Bn3!Z_WQ2r-L`6mI z*|R4*D=R!aytA`2B_$;RYt?d|I;iJmsI&BH59Utgb}pFbov+tV{S&fhb>YI>NT*ODbmCO76* z$NSv8c_XKG@|m@50bU-PH*U-e^E`Oy@Qy9B3ZwjP-?=km?Y!uuMkOVsbt|W(7IvlP zR<`9vq=xuBy>YaD>ZX>NOKT_14hSsW_UwQEy!rFy&E3DS(cd?-ry`{#)juxOZ{P7% zZRG`9`%?qM6aD<70#^LL{O;fKgIBL!I^Dc*|E68L8~ge)0RT+^+jsf@Iy?giI_=%IprmWw;YR#I0)|rc@PnyzKZy!}%otIS-A7by~ zcl_4tw2rkE&HWKYJ>jX{%jb2@s!ugDGqarif6aw|$Io2cdim&)n}@Qd?CzSk;pm=4 zsX5c~<09)${7c>Q@A{)xyDr|IyJ5rHwM(uaSd>$}sAKw!i`%BHo7LRcQ8llt!q_Xh zbl;!jSFgW&aB=RgQ>DGjvMbv?QySxaBX-{XA2jd(>3jb+U-_4{{9pW{f0u6DS+nox z(%l7}dY%$l}* z>dd*5?E;eLmnF7t`TOwE_4{YH9on}wuYHkc*@Co)sv~pq>kAXJVuNO0|G(<+zs6Pn zN>={eaq;=iZL7NKE0#U{H+}cNnWz7D9r&~Kot#8GKSp|;aZ5thOXOzU2 zmXu|-B_!7u)Z~O`)~!5O-CUMu>wBJ|C69qYNY>NEF{I+wl^eduG*%$=ayvDYM0sGZ%I4?hqGL(wS#Qt1izLPhY;-X7go>*|BS1tPglLbIP_a`!`2wUD^Hi%gmmy^+z8krX|(> zFn=q^$C|v+L^aK$+$U6*xqEGAwT+wQ>e~Tn`9~7T= zWAFJ5vyIv!%@3@LO+MpufWggOcXBm5e^BaCL{r!T!86CinQg-61nw(Bj|Z5&@QA1RL1aXc_f zX_uo@wA%IuRt2->8l=CUaw?>a@y{naJB=J(>F)*!_Z}QLk}q}gq;!hGYqk?<#%FjG z)Xs=pG-8-BH=XZt&T973*6?i+ok~#;!r59KIk!f2xZU5@U;eY!FEY{pp+tgT;_l>^ z(!4jjkH0+F8FI>Kr}|E1;b%50R~xlY`u6+pBDdJKd&#f6A|HFb5!&S@)Y)qNeoDCN z#<`D;mv+V`wXeB;sZUcymhU@DO+<@POQgAjk>!yyQ|7A8(EQieE3o0>$_bomr)J1K zj?Ku{`X#cWO{i;QV|mwW^Zgq00tD;b{_LA`HYI+}_2{hBj|V4Li^n}%zo%|yef7_u zr@g*r?F*fE-G0jK?qA2Je*X0`Xi;#I>v`=>8eESm_9xDHRIGn!!QoA*jLUV7EV-t4 zI_|{t&sB00Pp+G$o|KZjw&Na0(p85X_r5DZS0`){^J!gF;p93gXknzAd&aN2+_>mH zwOg+4h~NF=>CNR=FZT+Y{=9Ogf9bKi#pY3~)49(c+y3;X)c1e<7s7kPrieuGrhiZR z%M$l_LD`u*W@uL-rK(a?$;T|@@ztcO(Q|?x zDNASt?b)#6*y0K&SEZoDy2wdOURwTq6tcQ3Ynh?CfA-Yu?CbB(o}3iOqFPlGUL6&o zb>1vm^`z6Y35R|>{acjZzi@i``?#uvFV-EIk`mLVnXyl-*5WK?deNR%s{iYqv&y{u zIUN(qUNQXY3o=#O`%(38MAX;QiGknTKVDJ2a{Tef*4R8*PkwIR zxZYfUYV-8>F_)*bpZ=UbJz(N7&eE^j9&dN{_c~Bz#g=Q8!#QKpg-bV2rZ_X%eD0{4 zP_A{E`9<(DsgGZ0873e7+P**|FGBp)-xspab}T#VnZ6~u@o>Li*VwyHkbm2Jqn?Y>HciblrX3Uv*HxTn`FoRR zoJ0K~f#peyWObVT6Jl>%e!M;Lvr2~ars{P0pX=>DSTH?&QT9zY(CNX86f3Tm|3ZYm zNQnxTlH#tF6lH+wwP^{moCK)V;iFiF3Jb2 zUQ(8`wmWCr)>Cs&af=!D1Sh%MT$}cS?`qc~n{6K_3MMk2X==#W8rdNppmU1XWY_D% zX~kl>W&xY?wn%FhZ;jlmP(_YEdVYA8oO+CTBX+a_LvO?wm+r%iR$UVR{Y(_O8w$AKEcZa*IQKjZs1 zNq?``@zn0{v);!!7MV!h{&MC>!`*7l(<`(NwLe)b*nR59n>(x-YR233_g2Q;iu&m7 zw!q@OQu4cdy8Y$Hr9T|sX#KqPrG()Jwmfm~$#YAWY|E~C_?%ZqJ4kh-ScH%z;)9Ckg%;pn4{$~q!#r7^-h-!}=SzO|E#=ejR2^GMRxX|1ag zb<4Nyh~VjQSXq%?aq`=hxqI*O-QqYM?G-a)uUm20nti6{*R>_aRdUBf|Lr~WeoLLH zQBOkly?tRWvvyUR@=CE@JP^6?LwTOj`&CbQTJtQGwp&QC8YFSW@>%FxE%lEtu8NT> zHhKB9AY|d>x93al9P67EmThvSI=mpn=zs94v6B9H zqu0=`Y)@s~9NChV^BZh;J4LPh^i5;iI<79qxiT*2JzQQ+zNwupD%U%84wqPOvf1H% z)tla(;$kg3<+bT>+QToq1Km~})lok4;9}mrl!zrt?7!3lrWbAacgZxcJ$S{TvXYN# zp27Qt+#4otH0E1VGWXfjf`}&v__Tj9o!k9((=+u?&&2udN_V^Ym|pyluyyU(sqV&) z6rKpQ>{9c27gx4HMnX|f=fjtlIqm0UxA-{-?8yFj^I&2B1;>*1UoxkZwOTF|E@WX) zZnd8=@mFG!yn&GI|H7P$TLdp{d%k2U%S=UWC2KC#^lcM0Z+^^Oes{@9^G3dTJC&K- za^w_mOPeyu_}<^@w`KQ+w_Hw7K73Z&c=)ff+S;e*p3QD93X$KNebjmDx&@Z=(~f*` zi)LkY^V}WkE}6-jxl=(iddC*!v=ps9)m$o#f|l`@MPp{H6J+0LpO?~D{xMv6?qX$y zWX)+pUrTyjwy>{x`0A2k_!*9yckY{C=Ey7x-{zXmQgfX_kmZNUiTjO5TlQXGbjg^v zDEf|vFh}Dq!+R-ml8Ldqy7;dxc3b>rhe-AtrQCDjtJD;`9w&cd=(E1QT_Rg9saJP_ zn!yR@hi&Q!N4-v;*l@AqHIwS|=#=H}?Wf;4etXM`&q_6tx)b>y=6cK*IbIqQ<@RT; ztF&sKniHRffMnJB_3l3xzN=lm$w|~~vu&E|^0W7MZd}Lx@pVAKow!bE&e`VMqBd4~ zzY^)#z9S+yNb#!jtKxv)>l^JmA~;HUPh&TbWKlQ^gM$h}~i;PLZQ ztzxYd>;q#XCmBC83^V#KCy+Jui)FE0#+2iFCscd(pE{9VcJ7<{N{zn9&(~dA^nXG7 z(X6#;uUk#i*B-6fFsWr1Q>>f$WRrP9H&oX>dEoj{L1~R|YZ71O=TU|`?jl>|8e~iYWhAyvo;+Kzph!Y_ z&Rhv5v$(zd4)1DJ0(YNhEHIUKy|QhQ5<}Vi!$vKCVve2ond@<>>l5RH95XOl+$)z73*X3|}C4TbidEvfC zWbYKAh3i<73tZRSlN8!J@zVLnQ<6PZr!om1Ggx{|$IRZ?zv+*-o7Ur9OzkIKzkUoc zd#~9Q*DJ`x@+_zQkcH@U?rdhZSt5MLY@Kd%a@DOo_t-8u>e`8xG>y7H0=X9tp5Mh( zGr#TmB96qhz5mx`uX9`U=|J@NpjDqD{LbD!C-o#k^Qpl?L#E`r!tptFou?iMPrcdVNr!G~F+qb_nA#VMutg{k{9*bJH zW-Sckt$ucFhFp0~Fz?Q$Rad32u1xH0@_jj3qjsI(`_~4a!!myB2^hNF`S`xL!1Sg1 zGyDF}wkK9iQ<$^oe8HzPEVqvRG(IW!oO7Q{*tr9DJ!alMCcpAuYRa0+r>C#mDrgb! zv!hCxW#$c|mRql^3wm1$n&V$iP^n6I%v)i5gKL%89iuCImQApJ6v(#yHAix*j5pUK z)6dQ)KOLI=sp^YieX+rd+-lqT^leR`Ki}1z z@lML?cDTv(>{}Cexi%$4a9z=iDTb~k6Ux5!xtgq$mRz!MqKD+OS8rB{W%0(cyzD!| zk<9Xn<6Kv@%V{aYL!k;h6%YOiD65=`IJ5BKNvYw%t{#PLXG#!?+GFong1^!vVSC=)JDehZNp*h|H2+|AGI~v_`k}{#Wj- zxR7$Ll4aT&*KGw|YQa|hAEtDFm)(5M@n6@aHjf>%1Z=Z)|7V<#j`_uDbl9(B&)#K6 z-Tb_RY!qkh?B=)LEynaQR>-GfN{q3xLCwX8%2ft?B92L)oOd%krKLILz|ozZ`~N;$ z+;OWyRBC4xpX-%vcQ1GZ3QkjeqTc(YV8VoGo(ZnGet&|Qd0#W$IB-&;%*gG)wqA_` z3@pF<7yo0FNa#sP6pmERQO<731!dSZg4-sV9x~hHcEjx&$L$kRiPGF|AJ$KkS8HfF zkm313`f7~kIA^bUG zr`w;xvQv6YAQQ`fesNy;w0TkTr)x*6`=`8rns9Z?{R!4<=T)y?_WS;pJ@f0$IA^uL zO}vqrryL{un15ApWS;rHk^}cSezYa@9+1qM#Jgd(tJ|0PP3sTmmY#XNrNE1db?2;TO6%fGihE!g-_i-M6-aK^5;IrlyOnJqHgx7I$#F_C5awUF5B>b+OQ zi~7TE-hQ}u>G!ZWwQsqRy%Vj1Z-uUYHSu_4z-0j@o%Dkpm(zEp&KHfAcV*sk+1zZR z+tpPfGjxoyciyp>n6b&*G?(?M+;oKmT@8NoNYRxcywelrO_J7>2%7ZmTwFjwZTA_e zl;38PZ2SMDTz^;ire&c4kMb*qnVwB=Q&Upo9NzG{=p;nlImGnnl0*c<(~eo(toGg~ zK28<#t)2OZr&x}$=qu+-QP~#(f;lTV%tBbCwVHTE54LqBd^Y~|wKd_B(BFSv28~Mh zIn)B4SRZ_%T2-qy!(n1i0+Z`J4z&Ok)fplevz-hy7ui<^yzh+pR6cRr-T$Aho~K7n zZh1cO$$Vy!hmP|iYrQ|cda%-V)2o^G>n=(AuQojYY59he=U4RSeM(L`ZgP69tyqM7 z?)mjRT^knU@z8*cEpuEN<8(ItL<4-K9kw`grbzK4@*yHPd?Fix^C{wIY*~DPPE`~ z-4&r%$m9C%dAsIy2ay?HqB)zFca*N--5u}sji;+;>72*f)xjybvro-_RwAgDpHozw zziZ{}ThBr!oGfp?{ZCYI)B3#^=P&j+>9x#j;e)h-XHPqQ*Cj~^*`zgT3eIPIAFQPp zq4Vzj5pTngeVyxdM1Fd(Jzw{?vu20Vb$8bd3zcp_0@*d>kHQR*FZ;!ezOc(82e~sy zQT^@3$xI9h5*$u*Up@ajyPLP|Fw-nIlim!eizbUQT`qSl6ZBOkU*OGK_f5=sCcYn{ U<#Re27#J8lUHx3vIVCg!02sN1{{R30 From ecbd1fa408ceb8732fe7bb87477de3006d3b7b95 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 29 Jul 2016 13:08:51 +0200 Subject: [PATCH 84/86] Doc: Update creating components and screens with Qt Quick Designer Add dependency to the Qt Quick Controls 2 docs Change-Id: Idcbb856cf38d8867dc781ade572cf18f87983912 Reviewed-by: Tim Jenssen --- doc/config/qtcreator-project.qdocconf | 1 + doc/src/qtquick/qtquick-components.qdoc | 5 ++++- doc/src/qtquick/qtquick-screens.qdoc | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/config/qtcreator-project.qdocconf b/doc/config/qtcreator-project.qdocconf index 9fa6d3167d9..d31caa91b53 100644 --- a/doc/config/qtcreator-project.qdocconf +++ b/doc/config/qtcreator-project.qdocconf @@ -38,6 +38,7 @@ indexes += $QDOC_INDEX_DIR/qtwidgets/qtwidgets.index \ $QDOC_INDEX_DIR/qtgui/qtgui.index \ $QDOC_INDEX_DIR/qthelp/qthelp.index \ $QDOC_INDEX_DIR/qtquickcontrols/qtquickcontrols.index \ + $QDOC_INDEX_DIR/qtquickcontrols2/qtquickcontrols2.index \ $QDOC_INDEX_DIR/qtquickextras/qtquickextras.index \ $QDOC_INDEX_DIR/qtquicklayouts/qtquicklayouts.index \ $QDOC_INDEX_DIR/qtlinguist/qtlinguist.index \ diff --git a/doc/src/qtquick/qtquick-components.qdoc b/doc/src/qtquick/qtquick-components.qdoc index facf9375643..dbc41d57f8d 100644 --- a/doc/src/qtquick/qtquick-components.qdoc +++ b/doc/src/qtquick/qtquick-components.qdoc @@ -90,6 +90,9 @@ when compared to Qt Quick Controls, on which the module is based. These types work in conjunction with Qt Quick and Qt Quick Layouts. + Since Qt 5.7, \l {Qt Quick Controls 2} replace Qt Quick Controls 1 and + Qt Labs Controls. + Some ready-made controls, such as a gauge, dial, status indicator, and tumbler, are provided by the \l {Qt Quick Extras} module. @@ -104,7 +107,7 @@ \list 1 \li Select \uicontrol File > \uicontrol {New File or Project} > - \uicontrol {Files and Classes} > \uicontrol Qt > \uicontrol {QML File (Qt Quick 1)} or + \uicontrol {Files and Classes} > \uicontrol Qt > \uicontrol {QML File (Qt Quick 2)} > \uicontrol Choose to create a new .qml file. diff --git a/doc/src/qtquick/qtquick-screens.qdoc b/doc/src/qtquick/qtquick-screens.qdoc index aa6429345d3..cc76d9f2f27 100644 --- a/doc/src/qtquick/qtquick-screens.qdoc +++ b/doc/src/qtquick/qtquick-screens.qdoc @@ -57,6 +57,9 @@ when compared to Qt Quick Controls, on which the module is based. These types work in conjunction with Qt Quick and Qt Quick Layouts. + Since Qt 5.7, \l {Qt Quick Controls 2} replace Qt Quick Controls 1 and + Qt Labs Controls. + \section1 Adding Components to Screens \list 1 From 7c3f61f8198743684ef655ff3fd486fde5a7466c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 29 Jul 2016 14:08:48 +0200 Subject: [PATCH 85/86] QmlDesigner: Fix regular expression We have to use a non capturing group for the optional 'Id'. Change-Id: I59431d78908a16f571febdf14c57bfe079ca6817 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 47f4315aa7d..72bfe1a78a5 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -189,7 +189,7 @@ bool QmlObjectNode::isTranslatableText(const PropertyName &name) const if (modelNode().metaInfo().isValid() && modelNode().metaInfo().hasProperty(name)) if (modelNode().metaInfo().propertyTypeName(name) == "QString" || modelNode().metaInfo().propertyTypeName(name) == "string") { if (modelNode().hasBindingProperty(name)) { - static QRegExp regularExpressionPatter(QLatin1String("qsTr(|Id)\\((\".*\")\\)")); + static QRegExp regularExpressionPatter(QLatin1String("qsTr(?:|Id)\\((\".*\")\\)")); return regularExpressionPatter.exactMatch(modelNode().bindingProperty(name).expression()); } @@ -202,7 +202,7 @@ bool QmlObjectNode::isTranslatableText(const PropertyName &name) const QString QmlObjectNode::stripedTranslatableText(const PropertyName &name) const { if (modelNode().hasBindingProperty(name)) { - static QRegExp regularExpressionPatter(QLatin1String("qsTr(|Id)\\(\"(.*)\"\\)")); + static QRegExp regularExpressionPatter(QLatin1String("qsTr(?:|Id)\\(\"(.*)\"\\)")); if (regularExpressionPatter.exactMatch(modelNode().bindingProperty(name).expression())) return regularExpressionPatter.cap(1); } else { From 5c5197d19d31a7c81f5bfb64a666b589bbd5638c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 29 Jul 2016 14:07:30 +0200 Subject: [PATCH 86/86] QmlDesigner: Adding debugging operator to BindingProperty This is required to output the expression in the DebugView. Change-Id: I3ce0bf4a916e30e8c86c224e305fa1c4af337489 Reviewed-by: Tim Jenssen --- .../designercore/include/bindingproperty.h | 3 +++ .../designercore/model/bindingproperty.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/bindingproperty.h b/src/plugins/qmldesigner/designercore/include/bindingproperty.h index 345dbf4514b..a530cb203f7 100644 --- a/src/plugins/qmldesigner/designercore/include/bindingproperty.h +++ b/src/plugins/qmldesigner/designercore/include/bindingproperty.h @@ -58,4 +58,7 @@ protected: bool compareBindingProperties(const QmlDesigner::BindingProperty &bindingProperty01, const QmlDesigner::BindingProperty &bindingProperty02); +QMLDESIGNERCORE_EXPORT QTextStream& operator<<(QTextStream &stream, const BindingProperty &property); +QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const BindingProperty &AbstractProperty); + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp index 68b71da3817..018075da663 100644 --- a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp +++ b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp @@ -244,4 +244,22 @@ void BindingProperty::setDynamicTypeNameAndExpression(const TypeName &typeName, model()->d->setDynamicBindingProperty(internalNode(), name(), typeName, expression); } +QDebug operator<<(QDebug debug, const BindingProperty &property) +{ + if (!property.isValid()) + return debug.nospace() << "BindingProperty(" << PropertyName("invalid") << ')'; + else + return debug.nospace() << "BindingProperty(" << property.name() << " " << property.expression() << ')'; +} + +QTextStream& operator<<(QTextStream &stream, const BindingProperty &property) +{ + if (!property.isValid()) + stream << "BindingProperty(" << PropertyName("invalid") << ')'; + else + stream << "BindingProperty(" << property.name() << " " << property.expression() << ')'; + + return stream; +} + } // namespace QmlDesigner