From ebb4755753f799e0abb88732022611c649cb4a8f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 6 Oct 2020 16:32:10 +0200 Subject: [PATCH 1/5] QmlDesigner: Add customComponentSource to ItemLibraryEntry Change-Id: Ief7555b321ae3bdc790b2e747d367347031a4a56 Reviewed-by: Marco Bubke --- .../designercore/include/itemlibraryinfo.h | 2 ++ .../designercore/metainfo/itemlibraryinfo.cpp | 14 ++++++++++++++ .../designercore/metainfo/subcomponentmanager.cpp | 1 + 3 files changed, 17 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h index 7cfa0ae1ab5..b7f67259782 100644 --- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h +++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h @@ -68,6 +68,7 @@ public: QString qmlPath() const; QString qmlSource() const; QString requiredImport() const; + QString customComponentSource() const; using Property = QmlDesigner::PropertyContainer; @@ -84,6 +85,7 @@ public: void setQmlPath(const QString &qml); void setRequiredImport(const QString &requiredImport); void addHints(const QHash &hints); + void setCustomComponentSource(const QString &source); private: std::shared_ptr m_data; diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp index 1464084b67e..2c60f694a0c 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp @@ -50,6 +50,7 @@ public: QString qmlSource; QString requiredImport; QHash hints; + QString customComponentSource; }; } // namespace Internal @@ -104,6 +105,11 @@ QString ItemLibraryEntry::requiredImport() const return m_data->requiredImport; } +QString ItemLibraryEntry::customComponentSource() const +{ + return m_data->customComponentSource; +} + int ItemLibraryEntry::majorVersion() const { return m_data->majorVersion; @@ -178,6 +184,11 @@ void ItemLibraryEntry::addHints(const QHash &hints) Utils::addToHash(&m_data->hints, hints); } +void ItemLibraryEntry::setCustomComponentSource(const QString &source) +{ + m_data->customComponentSource = source; +} + void ItemLibraryEntry::addProperty(PropertyName &name, QString &type, QVariant &value) { Property property; @@ -200,6 +211,7 @@ QDataStream& operator<<(QDataStream& stream, const ItemLibraryEntry &itemLibrary stream << itemLibraryEntry.m_data->properties; stream << itemLibraryEntry.m_data->qml; stream << itemLibraryEntry.m_data->qmlSource; + stream << itemLibraryEntry.m_data->customComponentSource; return stream; } @@ -223,6 +235,7 @@ QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry) stream >> itemLibraryEntry.m_data->properties; stream >> itemLibraryEntry.m_data->qml; stream >> itemLibraryEntry.m_data->qmlSource; + stream >> itemLibraryEntry.m_data->customComponentSource; return stream; } @@ -242,6 +255,7 @@ QDebug operator<<(QDebug debug, const ItemLibraryEntry &itemLibraryEntry) debug << itemLibraryEntry.m_data->properties; debug << itemLibraryEntry.m_data->qml; debug << itemLibraryEntry.m_data->qmlSource; + debug << itemLibraryEntry.m_data->customComponentSource; return debug.space(); } diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index 3a550053a09..755ceeabc1c 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -336,6 +336,7 @@ void SubComponentManager::registerQmlFile(const QFileInfo &fileInfo, const QStri itemLibraryEntry.setType(componentName.toUtf8()); itemLibraryEntry.setName(baseComponentName); itemLibraryEntry.setCategory(tr("My QML Components")); + itemLibraryEntry.setCustomComponentSource(fileInfo.absoluteFilePath()); if (!qualifier.isEmpty()) { itemLibraryEntry.setRequiredImport(fixedQualifier); } From 790a8bc78da07183a5ef913598d2a89b33b136cf Mon Sep 17 00:00:00 2001 From: Martin Kampas Date: Tue, 6 Oct 2020 14:56:39 +0200 Subject: [PATCH 2/5] SSH: Help preventing "Too many authentication failures" errors When an ssh-agent offers many different identities, the maximum authentication attempts the server permits may be exceeded, resulting in the above error. With IdentitiesOnly enabled, just the explicitly specified identities will be used. Change-Id: Ic10d7032893a38c608989f957b5e91b7dc15c24c Reviewed-by: Christian Kandeler --- src/libs/ssh/sshconnection.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libs/ssh/sshconnection.cpp b/src/libs/ssh/sshconnection.cpp index 70073c008c7..00e7cc84a4f 100644 --- a/src/libs/ssh/sshconnection.cpp +++ b/src/libs/ssh/sshconnection.cpp @@ -128,8 +128,10 @@ struct SshConnection::SshConnectionPrivate "-o", "Port=" + QString::number(connParams.port())}; const bool keyOnly = connParams.authenticationType == SshConnectionParameters::AuthenticationTypeSpecificKey; - if (keyOnly) + if (keyOnly) { + args << "-o" << "IdentitiesOnly=yes"; args << "-i" << connParams.privateKeyFile; + } if (keyOnly || SshSettings::askpassFilePath().isEmpty()) args << "-o" << "BatchMode=yes"; if (sharingEnabled) From 323f353c6c3b5072f29b2a149f6c893d851ecad0 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 6 Oct 2020 18:49:15 +0200 Subject: [PATCH 3/5] Android: Replace AVD partition-size spinbox with emulator args input The android emulator supports many more command-line startup options than "-partition-size". Let's allow the user to take advantage of the full functionalty, by providing a free-text input field for the options. A link to the online documentation is also provided. As a side-effect, the issue that an overridden parition size can cause the "Cold Boot: different AVD configuration" warning is solved by not having -partition-size by default. Task-number: QTCREATORBUG-24735 Change-Id: I41d7b826133708c7ff447c1e257f62368745dea1 Reviewed-by: Assam Boudjelthia --- src/plugins/android/androidavdmanager.cpp | 2 +- src/plugins/android/androidconfigurations.cpp | 15 +++++---- src/plugins/android/androidconfigurations.h | 6 ++-- src/plugins/android/androidsettingswidget.cpp | 28 ++++++++++++---- src/plugins/android/androidsettingswidget.ui | 33 ++++--------------- 5 files changed, 41 insertions(+), 43 deletions(-) diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index f27247300e1..c000a623544 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -278,7 +278,7 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const if (AndroidConfigurations::force32bitEmulator()) arguments << "-force-32bit"; - arguments << "-partition-size" << QString::number(m_config.partitionSize()) + arguments << m_config.emulatorArgs() << "-avd" << avdName; qCDebug(avdManagerLog) << "Running command (startAvdAsync):" << CommandLine(m_config.emulatorToolPath(), arguments).toUserOutput(); diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 105bf9d40ec..0d342acb530 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -116,7 +116,7 @@ namespace { const QLatin1String OpenJDKLocationKey("OpenJDKLocation"); const QLatin1String OpenSslPriLocationKey("OpenSSLPriLocation"); const QLatin1String AutomaticKitCreationKey("AutomatiKitCreation"); - const QLatin1String PartitionSizeKey("PartitionSize"); + const QLatin1String EmulatorArgsKey("EmulatorArgs"); const QLatin1String ArmToolchainPrefix("arm-linux-androideabi"); const QLatin1String X86ToolchainPrefix("x86"); @@ -224,7 +224,8 @@ QLatin1String AndroidConfig::displayName(const Abi &abi) void AndroidConfig::load(const QSettings &settings) { // user settings - m_partitionSize = settings.value(PartitionSizeKey, 1024).toInt(); + m_emulatorArgs = settings.value(EmulatorArgsKey, + QStringList({"-netdelay", "none", "-netspeed", "full"})).toStringList(); m_sdkLocation = FilePath::fromString(settings.value(SDKLocationKey).toString()); m_customNdkList = settings.value(CustomNdkLocationsKey).toStringList(); m_sdkManagerToolArgs = settings.value(SDKManagerToolArgsKey).toStringList(); @@ -262,7 +263,7 @@ void AndroidConfig::save(QSettings &settings) const settings.setValue(SDKManagerToolArgsKey, m_sdkManagerToolArgs); settings.setValue(OpenJDKLocationKey, m_openJDKLocation.toString()); settings.setValue(OpenSslPriLocationKey, m_openSslLocation.toString()); - settings.setValue(PartitionSizeKey, m_partitionSize); + settings.setValue(EmulatorArgsKey, m_emulatorArgs); settings.setValue(AutomaticKitCreationKey, m_automaticKitCreation); settings.setValue(SdkFullyConfiguredKey, m_sdkFullyConfigured); } @@ -990,14 +991,14 @@ QString AndroidConfig::toolchainHostFromNdk(const FilePath &ndkPath) const return toolchainHost; } -unsigned AndroidConfig::partitionSize() const +QStringList AndroidConfig::emulatorArgs() const { - return m_partitionSize; + return m_emulatorArgs; } -void AndroidConfig::setPartitionSize(unsigned partitionSize) +void AndroidConfig::setEmulatorArgs(const QStringList &args) { - m_partitionSize = partitionSize; + m_emulatorArgs = args; } bool AndroidConfig::automaticKitCreation() const diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 547be33d0a9..edfbfa2704b 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -146,8 +146,8 @@ public: QString toolchainHost(const QtSupport::BaseQtVersion *qtVersion) const; QString toolchainHostFromNdk(const Utils::FilePath &ndkPath) const; - unsigned partitionSize() const; - void setPartitionSize(unsigned partitionSize); + QStringList emulatorArgs() const; + void setEmulatorArgs(const QStringList &args); bool automaticKitCreation() const; void setAutomaticKitCreation(bool b); @@ -215,7 +215,7 @@ private: Utils::FilePath m_openJDKLocation; Utils::FilePath m_keystoreLocation; Utils::FilePath m_openSslLocation; - unsigned m_partitionSize = 1024; + QStringList m_emulatorArgs; bool m_automaticKitCreation = true; QUrl m_sdkToolsUrl; QByteArray m_sdkToolsSha256; diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 49038bd0a41..6bbca51d98f 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -119,7 +120,7 @@ private: void removeAVD(); void startAVD(); void avdActivated(const QModelIndex &); - void dataPartitionSizeEditingFinished(); + void editEmulatorArgsAVD(); void createKitToggled(); void updateUI(); @@ -428,7 +429,6 @@ AndroidSettingsWidget::AndroidSettingsWidget() m_androidConfig.setOpenSslLocation(m_androidConfig.sdkLocation() / ("android_openssl")); m_ui.openSslPathChooser->setFilePath(m_androidConfig.openSslLocation()); - m_ui.DataPartitionSizeSpinBox->setValue(m_androidConfig.partitionSize()); m_ui.CreateKitCheckBox->setChecked(m_androidConfig.automaticKitCreation()); m_ui.AVDTableView->setModel(&m_AVDModel); m_ui.AVDTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); @@ -489,8 +489,8 @@ AndroidSettingsWidget::AndroidSettingsWidget() this, &AndroidSettingsWidget::avdActivated); connect(m_ui.AVDTableView, &QAbstractItemView::clicked, this, &AndroidSettingsWidget::avdActivated); - connect(m_ui.DataPartitionSizeSpinBox, &QAbstractSpinBox::editingFinished, - this, &AndroidSettingsWidget::dataPartitionSizeEditingFinished); + connect(m_ui.AVDAdvancedOptionsPushButton, &QAbstractButton::clicked, + this, &AndroidSettingsWidget::editEmulatorArgsAVD); connect(m_ui.CreateKitCheckBox, &QAbstractButton::toggled, this, &AndroidSettingsWidget::createKitToggled); connect(m_ui.downloadNDKToolButton, &QAbstractButton::clicked, @@ -807,9 +807,25 @@ void AndroidSettingsWidget::avdActivated(const QModelIndex &index) m_ui.AVDStartPushButton->setEnabled(index.isValid()); } -void AndroidSettingsWidget::dataPartitionSizeEditingFinished() +void AndroidSettingsWidget::editEmulatorArgsAVD() { - m_androidConfig.setPartitionSize(m_ui.DataPartitionSizeSpinBox->value()); + const QString helpUrl = + "https://developer.android.com/studio/run/emulator-commandline#startup-options"; + + QInputDialog dialog(this); + dialog.setWindowTitle(tr("Emulator Command-line Startup Options")); + dialog.setLabelText(tr("Emulator command-line startup options (Help Web Page):").arg(helpUrl)); + dialog.setTextValue(m_androidConfig.emulatorArgs().join(' ')); + + if (auto label = dialog.findChild()) { + label->setOpenExternalLinks(true); + label->setMinimumWidth(500); + } + + if (dialog.exec() != QDialog::Accepted) + return; + + m_androidConfig.setEmulatorArgs(QtcProcess::splitArgs(dialog.textValue())); } void AndroidSettingsWidget::createKitToggled() diff --git a/src/plugins/android/androidsettingswidget.ui b/src/plugins/android/androidsettingswidget.ui index d29a6073cf7..a43f830f53b 100644 --- a/src/plugins/android/androidsettingswidget.ui +++ b/src/plugins/android/androidsettingswidget.ui @@ -313,32 +313,6 @@ - - - - System/data partition size: - - - - - - - - 0 - 0 - - - - Mb - - - 99999 - - - 1024 - - - @@ -420,6 +394,13 @@ + + + + Advanced Options... + + + From 35bab3a02174c5179b1fe0414fa33b8e7cbe64dd Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 24 Sep 2020 08:28:28 +0200 Subject: [PATCH 4/5] Autotools: Also read _HEADERS variable Change-Id: If081d9ec00a87d8e7989720a351531e94d02e28c Reviewed-by: Eike Ziller Reviewed-by: Christian Kandeler --- src/plugins/autotoolsprojectmanager/makefileparser.cpp | 4 ++-- tests/manual/autotoolsprojectmanager/Makefile.am | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/makefileparser.cpp b/src/plugins/autotoolsprojectmanager/makefileparser.cpp index 0feb64ec498..7ad9f1097ae 100644 --- a/src/plugins/autotoolsprojectmanager/makefileparser.cpp +++ b/src/plugins/autotoolsprojectmanager/makefileparser.cpp @@ -154,7 +154,7 @@ MakefileParser::TopTarget MakefileParser::topTarget() const return BuiltSources; if (id == QLatin1String("SUBDIRS") || id == QLatin1String("DIST_SUBDIRS")) return SubDirs; - if (id.endsWith(QLatin1String("_SOURCES"))) + if (id.endsWith("_SOURCES") || id.endsWith("_HEADERS")) return Sources; return Undefined; @@ -174,7 +174,7 @@ void MakefileParser::parseBinPrograms() void MakefileParser::parseSources() { - QTC_ASSERT(m_line.contains(QLatin1String("_SOURCES")), return); + QTC_ASSERT(m_line.contains("_SOURCES") || m_line.contains("_HEADERS"), return); bool hasVariables = false; m_sources.append(targetValues(&hasVariables)); diff --git a/tests/manual/autotoolsprojectmanager/Makefile.am b/tests/manual/autotoolsprojectmanager/Makefile.am index 70dce9f4fe9..84c160f1cac 100644 --- a/tests/manual/autotoolsprojectmanager/Makefile.am +++ b/tests/manual/autotoolsprojectmanager/Makefile.am @@ -1,7 +1,7 @@ ACLOCAL_AMFLAGS = -I m4 lib_LTLIBRARIES = libfoo.la -libfoo_la_SOURCES = foo.c +libfoo_la_SOURCES = foo.c foo.h bin_PROGRAMS = main main_SOURCES = main.c From c68f49fefaab4251c70c4ccaece0dd52993b653a Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Sun, 20 Sep 2020 23:40:16 +0200 Subject: [PATCH 5/5] Remove unused private functions As found by Cppcheck. Change-Id: I697ea69992425ff41e35990ad00be312b35ba70a Reviewed-by: Christian Kandeler --- src/libs/cplusplus/CppDocument.h | 3 -- src/libs/cplusplus/ExpressionUnderCursor.cpp | 12 ------- src/libs/cplusplus/ExpressionUnderCursor.h | 1 - src/libs/qmljs/qmljsinterpreter.cpp | 19 ---------- src/libs/qmljs/qmljsinterpreter.h | 4 --- .../curveeditor/detail/selector.cpp | 35 ------------------- .../components/curveeditor/detail/selector.h | 4 --- 7 files changed, 78 deletions(-) diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index 3829d6f4ce2..4518b37c9e2 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -293,9 +293,6 @@ public: { return _beginLine; } private: - void setArguments(const QVector &arguments) - { _arguments = arguments; } - void addArgument(const Block &block) { _arguments.append(block); } diff --git a/src/libs/cplusplus/ExpressionUnderCursor.cpp b/src/libs/cplusplus/ExpressionUnderCursor.cpp index 6df396d8cfc..d53d0017752 100644 --- a/src/libs/cplusplus/ExpressionUnderCursor.cpp +++ b/src/libs/cplusplus/ExpressionUnderCursor.cpp @@ -225,18 +225,6 @@ int ExpressionUnderCursor::startOfExpression_helper(BackwardsScanner &tk, int in return index; } -bool ExpressionUnderCursor::isAccessToken(const Token &tk) -{ - switch (tk.kind()) { - case T_COLON_COLON: - case T_DOT: case T_ARROW: - case T_DOT_STAR: case T_ARROW_STAR: - return true; - default: - return false; - } // switch -} - QString ExpressionUnderCursor::operator()(const QTextCursor &cursor) { BackwardsScanner scanner(cursor, _languageFeatures); diff --git a/src/libs/cplusplus/ExpressionUnderCursor.h b/src/libs/cplusplus/ExpressionUnderCursor.h index 230e1967774..3ef515c8fc2 100644 --- a/src/libs/cplusplus/ExpressionUnderCursor.h +++ b/src/libs/cplusplus/ExpressionUnderCursor.h @@ -50,7 +50,6 @@ public: private: int startOfExpression(BackwardsScanner &tk, int index); int startOfExpression_helper(BackwardsScanner &tk, int index); - bool isAccessToken(const Token &tk); private: bool _jumpedComma; diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 3627e7b1747..87ba3984860 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -1080,25 +1080,6 @@ void ObjectValue::accept(ValueVisitor *visitor) const visitor->visit(this); } -bool ObjectValue::checkPrototype(const ObjectValue *, QSet *) const -{ -#if 0 - const int previousSize = processed->size(); - processed->insert(this); - - if (previousSize != processed->size()) { - if (this == proto) - return false; - - if (prototype() && ! prototype()->checkPrototype(proto, processed)) - return false; - - return true; - } -#endif - return false; -} - void ObjectValue::processMembers(MemberProcessor *processor) const { for (auto it = m_members.cbegin(), end = m_members.cend(); it != end; ++it) { diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 66c54f15f0b..fee30531f91 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -526,10 +526,6 @@ public: QString originId() const { return m_originId; } - -private: - bool checkPrototype(const ObjectValue *prototype, QSet *processed) const; - private: ValueOwner *m_valueOwner; QHash m_members; diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/selector.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/selector.cpp index 2ed74611e71..dd948a6ac28 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/selector.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/selector.cpp @@ -136,41 +136,6 @@ void Selector::mouseRelease(QMouseEvent *event, GraphicsScene *scene) m_rect = QRectF(); } -bool Selector::isOverMovableItem(const QPointF &pos, GraphicsScene *scene) -{ - auto intersect = [pos](QGraphicsObject *item) { - return item->mapRectToScene(item->boundingRect()).contains(pos); - }; - - const auto frames = scene->keyframes(); - for (auto *frame : frames) { - if (intersect(frame)) - return true; - - if (auto *leftHandle = frame->leftHandle()) { - if (intersect(leftHandle)) - return true; - } - - if (auto *rightHandle = frame->rightHandle()) { - if (intersect(rightHandle)) - return true; - } - } - return false; -} - -bool Selector::isOverSelectedKeyframe(const QPointF &pos, GraphicsScene *scene) -{ - const auto frames = scene->selectedKeyframes(); - for (auto *frame : frames) { - QRectF frameRect = frame->mapRectToScene(frame->boundingRect()); - if (frameRect.contains(pos)) - return true; - } - return false; -} - bool Selector::select(const SelectionTool &tool, const QPointF &pos, GraphicsScene *scene) { auto selectWidthTool = [this, diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/selector.h b/src/plugins/qmldesigner/components/curveeditor/detail/selector.h index 5b722439089..68674c838de 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/selector.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/selector.h @@ -50,10 +50,6 @@ public: void mouseRelease(QMouseEvent *event, GraphicsScene *scene); private: - bool isOverSelectedKeyframe(const QPointF &pos, GraphicsScene *scene); - - bool isOverMovableItem(const QPointF &pos, GraphicsScene *scene); - bool select(const SelectionTool &tool, const QPointF &pos, GraphicsScene *scene); bool pressSelection(SelectionMode mode, const QPointF &pos, GraphicsScene *scene);