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/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) 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... + + + 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/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); 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); } 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