From e4b9ad289fa2502197ab00dff70ab40d6dc19701 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 10:25:27 +0200 Subject: [PATCH 01/19] QmlDesigner: Add QtQml.Component as component type Change-Id: Ief07ffc863de978b6082adfec3477b00a7309654 Reviewed-by: Thomas Hartmann --- .../qmldesigner/designercore/model/texttomodelmerger.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 661af4781aa..61f8d5e0c3e 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -288,11 +288,8 @@ bool isListElementType(const QmlDesigner::TypeName &type) bool isComponentType(const QmlDesigner::TypeName &type) { - return type == "Component" - || type == "Qt.Component" - || type == "QtQuick.Component" - || type == ".QQmlComponent" - || type == "QQmlComponent"; + return type == "Component" || type == "Qt.Component" || type == "QtQuick.Component" + || type == "QtQml.Component" || type == ".QQmlComponent" || type == "QQmlComponent"; } bool isCustomParserType(const QmlDesigner::TypeName &type) From f4beb6314ce6bd86268057137dc935ed8b6a636d Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 5 Oct 2020 09:03:13 +0200 Subject: [PATCH 02/19] Utils: Add some function to StringAspect - enable/disable the widgets - enable/disable text edit undo/redo - possibly validate line edit input Change-Id: I1933a0f03404de7dcd66475f20d9b7d884ef277e Reviewed-by: Christian Kandeler --- src/libs/utils/aspects.cpp | 40 ++++++++++++++++++++++++++++++++++++++ src/libs/utils/aspects.h | 3 +++ 2 files changed, 43 insertions(+) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 91d62135b0f..71628e51269 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -235,7 +235,11 @@ public: QPixmap m_labelPixmap; FilePath m_baseFileName; StringAspect::ValueAcceptor m_valueAcceptor; + FancyLineEdit::ValidationFunction m_validator; + bool m_readOnly = false; + bool m_undoRedoEnabled = false; + bool m_enabled = true; bool m_showToolTipOnLabel = false; bool m_fileDialogOnly = false; @@ -438,6 +442,19 @@ void StringAspect::setShowToolTipOnLabel(bool show) update(); } +void StringAspect::setEnabled(bool enabled) +{ + d->m_enabled = enabled; + if (d->m_labelDisplay) + d->m_labelDisplay->setEnabled(enabled); + if (d->m_lineEditDisplay) + d->m_lineEditDisplay->setEnabled(enabled); + if (d->m_pathChooserDisplay) + d->m_pathChooserDisplay->setEnabled(enabled); + if (d->m_textEditDisplay) + d->m_textEditDisplay->setEnabled(enabled); +} + /*! Returns the current text for the separate label in the visual representation of this string aspect. @@ -536,11 +553,25 @@ void StringAspect::setReadOnly(bool readOnly) d->m_textEditDisplay->setReadOnly(readOnly); } +void StringAspect::setUndoRedoEnabled(bool undoRedoEnabled) +{ + d->m_undoRedoEnabled = undoRedoEnabled; + if (d->m_textEditDisplay) + d->m_textEditDisplay->setUndoRedoEnabled(undoRedoEnabled); +} + void StringAspect::setMacroExpanderProvider(const MacroExpanderProvider &expanderProvider) { d->m_expanderProvider = expanderProvider; } +void StringAspect::setValidationFunction(const FancyLineEdit::ValidationFunction &validator) +{ + d->m_validator = validator; + if (d->m_lineEditDisplay) + d->m_lineEditDisplay->setValidationFunction(d->m_validator); +} + void StringAspect::validateInput() { if (d->m_pathChooserDisplay) @@ -588,6 +619,7 @@ void StringAspect::addToLayout(LayoutBuilder &builder) d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_pathChooserDisplay->setEnvironment(d->m_environment); d->m_pathChooserDisplay->setBaseDirectory(d->m_baseFileName); + d->m_pathChooserDisplay->setEnabled(d->m_enabled); d->m_pathChooserDisplay->setReadOnly(d->m_readOnly); useMacroExpander(d->m_pathChooserDisplay->lineEdit()); connect(d->m_pathChooserDisplay, &PathChooser::pathChanged, @@ -600,7 +632,10 @@ void StringAspect::addToLayout(LayoutBuilder &builder) d->m_lineEditDisplay->setPlaceholderText(d->m_placeHolderText); if (!d->m_historyCompleterKey.isEmpty()) d->m_lineEditDisplay->setHistoryCompleter(d->m_historyCompleterKey); + d->m_lineEditDisplay->setEnabled(d->m_enabled); d->m_lineEditDisplay->setReadOnly(d->m_readOnly); + if (d->m_validator) + d->m_lineEditDisplay->setValidationFunction(d->m_validator); useMacroExpander(d->m_lineEditDisplay); connect(d->m_lineEditDisplay, &FancyLineEdit::textEdited, this, &StringAspect::setValue); @@ -609,7 +644,11 @@ void StringAspect::addToLayout(LayoutBuilder &builder) case TextEditDisplay: d->m_textEditDisplay = new QTextEdit; d->m_textEditDisplay->setPlaceholderText(d->m_placeHolderText); + d->m_textEditDisplay->setEnabled(d->m_enabled); d->m_textEditDisplay->setReadOnly(d->m_readOnly); + d->m_textEditDisplay->setUndoRedoEnabled(d->m_undoRedoEnabled); + d->m_textEditDisplay->setTextInteractionFlags + (Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse); useMacroExpander(d->m_textEditDisplay); connect(d->m_textEditDisplay, &QTextEdit::textChanged, this, [this] { const QString value = d->m_textEditDisplay->document()->toPlainText(); @@ -622,6 +661,7 @@ void StringAspect::addToLayout(LayoutBuilder &builder) break; case LabelDisplay: d->m_labelDisplay = new QLabel; + d->m_labelDisplay->setEnabled(d->m_enabled); d->m_labelDisplay->setTextInteractionFlags(Qt::TextSelectableByMouse); builder.addItem(d->m_labelDisplay.data()); break; diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index c4d98962f93..6308a13e8c7 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -217,6 +217,7 @@ public: void setLabelText(const QString &labelText); void setLabelPixmap(const QPixmap &labelPixmap); void setShowToolTipOnLabel(bool show); + void setEnabled(bool enabled); void setDisplayFilter(const std::function &displayFilter); void setPlaceHolderText(const QString &placeHolderText); @@ -227,7 +228,9 @@ public: void setBaseFileName(const Utils::FilePath &baseFileName); void setToolTip(const QString &tooltip); void setReadOnly(bool readOnly); + void setUndoRedoEnabled(bool readOnly); void setMacroExpanderProvider(const Utils::MacroExpanderProvider &expanderProvider); + void setValidationFunction(const Utils::FancyLineEdit::ValidationFunction &validator); void validateInput(); From fcaa6801cf609a0ecda64937d38096ecfb1c357f Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 5 Oct 2020 05:27:30 +0200 Subject: [PATCH 03/19] Utils: Start replacing SavedActions by QAction or Utils::Aspect First mechanical step here is to derive SavedActions from BaseAspect instead of QAction. Change-Id: I2ec95883b825462c1d867f83cc2b3bd2c2732055 Reviewed-by: Christian Stenger --- src/libs/utils/savedaction.cpp | 31 +++++++++++-------- src/libs/utils/savedaction.h | 14 ++++++++- src/plugins/debugger/breakhandler.cpp | 8 ++--- src/plugins/debugger/cdb/cdbengine.cpp | 4 +-- src/plugins/debugger/commonoptionspage.cpp | 2 +- src/plugins/debugger/console/console.cpp | 12 +++---- src/plugins/debugger/debuggerplugin.cpp | 4 +-- src/plugins/debugger/gdb/gdbengine.cpp | 2 +- src/plugins/debugger/lldb/lldbengine.cpp | 2 +- src/plugins/debugger/logwindow.cpp | 4 +-- src/plugins/debugger/moduleshandler.cpp | 2 +- .../debugger/peripheralregisterhandler.cpp | 2 +- .../debugger/qml/qmlinspectoragent.cpp | 2 +- src/plugins/debugger/registerhandler.cpp | 2 +- src/plugins/debugger/sourcefileshandler.cpp | 2 +- src/plugins/debugger/stackhandler.cpp | 16 +++++----- src/plugins/debugger/threadshandler.cpp | 2 +- src/plugins/debugger/watchhandler.cpp | 14 ++++----- src/plugins/debugger/watchwindow.cpp | 2 +- src/plugins/fakevim/fakevimplugin.cpp | 2 +- 20 files changed, 73 insertions(+), 56 deletions(-) diff --git a/src/libs/utils/savedaction.cpp b/src/libs/utils/savedaction.cpp index 292bbb974e1..08d0766ee8a 100644 --- a/src/libs/utils/savedaction.cpp +++ b/src/libs/utils/savedaction.cpp @@ -54,9 +54,9 @@ namespace Utils { */ SavedAction::SavedAction(QObject *parent) - : QAction(parent) { - connect(this, &QAction::triggered, this, &SavedAction::actionTriggered); + setParent(parent); + connect(&m_action, &QAction::triggered, this, &SavedAction::actionTriggered); } @@ -82,8 +82,8 @@ void SavedAction::setValue(const QVariant &value, bool doemit) if (value == m_value) return; m_value = value; - if (this->isCheckable()) - this->setChecked(m_value.toBool()); + if (m_action.isCheckable()) + m_action.setChecked(m_value.toBool()); if (doemit) emit valueChanged(m_value); } @@ -187,7 +187,7 @@ void SavedAction::readSettings(const QSettings *settings) return; QVariant var = settings->value(m_settingsGroup + QLatin1Char('/') + m_settingsKey, m_defaultValue); // work around old ini files containing @Invalid() entries - if (isCheckable() && !var.isValid()) + if (m_action.isCheckable() && !var.isValid()) var = false; setValue(var); } @@ -274,7 +274,7 @@ void SavedAction::connectWidget(QWidget *widget, ApplyMode applyMode) // Copy tooltip, but only if there's nothing explcitly set on the widget yet. if (widget->toolTip().isEmpty()) - widget->setToolTip(toolTip()); + widget->setToolTip(m_action.toolTip()); } /* @@ -329,21 +329,26 @@ void SavedAction::setDialogText(const QString &dialogText) void SavedAction::actionTriggered(bool) { - if (isCheckable()) - setValue(isChecked()); - if (actionGroup() && actionGroup()->isExclusive()) { + if (m_action.isCheckable()) + setValue(m_action.isChecked()); + if (m_action.actionGroup() && m_action.actionGroup()->isExclusive()) { // FIXME: should be taken care of more directly - const QList actions = actionGroup()->actions(); + const QList actions = m_action.actionGroup()->actions(); for (QAction *act : actions) if (auto dact = qobject_cast(act)) - dact->setValue(bool(act == this)); + dact->setValue(bool(act == &m_action)); } } +QAction *SavedAction::action() +{ + return &m_action; +} + void SavedAction::trigger(const QVariant &data) { - setData(data); - QAction::trigger(); + m_action.setData(data); + m_action.trigger(); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/libs/utils/savedaction.h b/src/libs/utils/savedaction.h index 5f90de65ed4..82db5fc0730 100644 --- a/src/libs/utils/savedaction.h +++ b/src/libs/utils/savedaction.h @@ -27,6 +27,8 @@ #include "utils_global.h" +#include "aspects.h" + #include QT_BEGIN_NAMESPACE @@ -37,7 +39,7 @@ namespace Utils { enum ApplyMode { ImmediateApply, DeferedApply }; -class QTCREATOR_UTILS_EXPORT SavedAction : public QAction +class QTCREATOR_UTILS_EXPORT SavedAction : public BaseAspect { Q_OBJECT @@ -72,6 +74,15 @@ public: QString dialogText() const; void setDialogText(const QString &dialogText); + QAction *action(); + + void setText(const QString &text) { m_action.setText(text); } + void setToolTip(const QString &toolTip) { m_action.setToolTip(toolTip); } + void setCheckable(bool checkable) { m_action.setCheckable(checkable); } + void setChecked(bool checked) { m_action.setChecked(checked); } + void setEnabled(bool enabled) { m_action.setEnabled(enabled); } + void setIcon(const QIcon &icon) { m_action.setIcon(icon); } + signals: void valueChanged(const QVariant &newValue); @@ -84,6 +95,7 @@ private: QString m_settingsGroup; QString m_dialogText; QWidget *m_widget = nullptr; + QAction m_action; }; class QTCREATOR_UTILS_EXPORT SavedActionSet diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index d66de9abf3d..1de7d332697 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -1671,9 +1671,9 @@ bool BreakHandler::contextMenuEvent(const ItemViewEvent &ev) menu->addSeparator(); - menu->addAction(action(UseToolTipsInBreakpointsView)); + menu->addAction(action(UseToolTipsInBreakpointsView)->action()); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); @@ -2632,9 +2632,9 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev) menu->addSeparator(); - menu->addAction(action(UseToolTipsInBreakpointsView)); + menu->addAction(action(UseToolTipsInBreakpointsView)->action()); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index e35179dc015..24428b42e3e 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -204,7 +204,7 @@ CdbEngine::CdbEngine() : wh->addTypeFormats("QImage", imageFormats); wh->addTypeFormats("QImage *", imageFormats); - connect(action(CreateFullBacktrace), &QAction::triggered, + connect(action(CreateFullBacktrace)->action(), &QAction::triggered, this, &CdbEngine::createFullBacktrace); connect(&m_process, QOverload::of(&QProcess::finished), this, &CdbEngine::processFinished); @@ -216,7 +216,7 @@ CdbEngine::CdbEngine() : connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, this, &CdbEngine::updateLocals); - if (action(UseCodeModel)->isChecked()) + if (action(UseCodeModel)->action()->isChecked()) m_codeModelSnapshot = CppTools::CppModelManager::instance()->snapshot(); } diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index 600cf432fbe..5e48526a3d1 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -203,7 +203,7 @@ public: if (HostOsInfo::isWindowsHost()) { SavedAction *registerAction = action(RegisterForPostMortem); m_group.insert(registerAction, checkBoxRegisterForPostMortem); - connect(registerAction, &QAction::toggled, + connect(registerAction->action(), &QAction::toggled, checkBoxRegisterForPostMortem, &QAbstractButton::setChecked); } else { checkBoxRegisterForPostMortem->setVisible(false); diff --git a/src/plugins/debugger/console/console.cpp b/src/plugins/debugger/console/console.cpp index bc538c03d0c..1b29f70d61f 100644 --- a/src/plugins/debugger/console/console.cpp +++ b/src/plugins/debugger/console/console.cpp @@ -108,9 +108,9 @@ Console::Console() m_showDebugButtonAction->setCheckable(true); m_showDebugButtonAction->setChecked(true); m_showDebugButtonAction->setIcon(Utils::Icons::INFO_TOOLBAR.icon()); - connect(m_showDebugButtonAction, &Utils::SavedAction::toggled, + connect(m_showDebugButtonAction->action(), &QAction::toggled, proxyModel, &ConsoleProxyModel::setShowLogs); - m_showDebugButton->setDefaultAction(m_showDebugButtonAction); + m_showDebugButton->setDefaultAction(m_showDebugButtonAction->action()); m_showWarningButton = new QToolButton(m_consoleWidget); @@ -121,9 +121,9 @@ Console::Console() m_showWarningButtonAction->setCheckable(true); m_showWarningButtonAction->setChecked(true); m_showWarningButtonAction->setIcon(Utils::Icons::WARNING_TOOLBAR.icon()); - connect(m_showWarningButtonAction, &Utils::SavedAction::toggled, + connect(m_showWarningButtonAction->action(), &QAction::toggled, proxyModel, &ConsoleProxyModel::setShowWarnings); - m_showWarningButton->setDefaultAction(m_showWarningButtonAction); + m_showWarningButton->setDefaultAction(m_showWarningButtonAction->action()); m_showErrorButton = new QToolButton(m_consoleWidget); @@ -134,9 +134,9 @@ Console::Console() m_showErrorButtonAction->setCheckable(true); m_showErrorButtonAction->setChecked(true); m_showErrorButtonAction->setIcon(Utils::Icons::CRITICAL_TOOLBAR.icon()); - connect(m_showErrorButtonAction, &Utils::SavedAction::toggled, + connect(m_showErrorButtonAction->action(), &QAction::toggled, proxyModel, &ConsoleProxyModel::setShowErrors); - m_showErrorButton->setDefaultAction(m_showErrorButtonAction); + m_showErrorButton->setDefaultAction(m_showErrorButtonAction->action()); m_spacer = new QWidget(m_consoleWidget); m_spacer->setMinimumWidth(30); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 3a49da4a20a..c784b2adfbb 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1197,7 +1197,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments) this, &DebuggerPluginPrivate::updateBreakMenuItem); // Application interaction - connect(action(SettingsDialog), &QAction::triggered, + connect(action(SettingsDialog)->action(), &QAction::triggered, [] { ICore::showOptionsDialog(DEBUGGER_COMMON_SETTINGS_ID); }); m_perspective.useSubPerspectiveSwitcher(EngineManager::engineChooser()); @@ -2047,7 +2047,7 @@ SavedAction *DebuggerPluginPrivate::action(int code) QWidget *DebuggerPluginPrivate::addSearch(BaseTreeView *treeView) { - QAction *act = action(UseAlternatingRowColors); + QAction *act = action(UseAlternatingRowColors)->action(); treeView->setAlternatingRowColors(act->isChecked()); treeView->setProperty(PerspectiveState::savesHeaderKey(), true); connect(act, &QAction::toggled, treeView, &BaseTreeView::setAlternatingRowColors); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2c33bb21378..e538aa65056 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -135,7 +135,7 @@ GdbEngine::GdbEngine() connect(action(AutoDerefPointers), &SavedAction::valueChanged, this, &GdbEngine::reloadLocals); - connect(action(CreateFullBacktrace), &QAction::triggered, + connect(action(CreateFullBacktrace)->action(), &QAction::triggered, this, &GdbEngine::createFullBacktrace); connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, this, &GdbEngine::reloadLocals); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index f7026b2815f..c6051e045eb 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -89,7 +89,7 @@ LldbEngine::LldbEngine() connect(action(AutoDerefPointers), &SavedAction::valueChanged, this, &LldbEngine::updateLocals); - connect(action(CreateFullBacktrace), &QAction::triggered, + connect(action(CreateFullBacktrace)->action(), &QAction::triggered, this, &LldbEngine::fetchFullBacktrace); connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, this, &LldbEngine::updateLocals); diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp index 37b5ed7c934..c30401902f3 100644 --- a/src/plugins/debugger/logwindow.cpp +++ b/src/plugins/debugger/logwindow.cpp @@ -220,10 +220,10 @@ public: QMenu *menu = createStandardContextMenu(); menu->addAction(m_clearContentsAction); menu->addAction(m_saveContentsAction); // X11 clipboard is unreliable for long texts - menu->addAction(action(LogTimeStamps)); + menu->addAction(action(LogTimeStamps)->action()); menu->addAction(m_reloadDebuggingHelpersAction); menu->addSeparator(); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->exec(ev->globalPos()); delete menu; } diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp index 333f792245e..878ae20f57d 100644 --- a/src/plugins/debugger/moduleshandler.cpp +++ b/src/plugins/debugger/moduleshandler.cpp @@ -224,7 +224,7 @@ bool ModulesModel::contextMenuEvent(const ItemViewEvent &ev) [this, modulePath] { engine->requestModuleSections(modulePath); }); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; diff --git a/src/plugins/debugger/peripheralregisterhandler.cpp b/src/plugins/debugger/peripheralregisterhandler.cpp index 965495cf022..2642f2dc9b2 100644 --- a/src/plugins/debugger/peripheralregisterhandler.cpp +++ b/src/plugins/debugger/peripheralregisterhandler.cpp @@ -787,7 +787,7 @@ bool PeripheralRegisterHandler::contextMenuEvent(const ItemViewEvent &ev) } Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; } diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp index 35656bef0bd..2e8ee545637 100644 --- a/src/plugins/debugger/qml/qmlinspectoragent.cpp +++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp @@ -68,7 +68,7 @@ QmlInspectorAgent::QmlInspectorAgent(QmlEngine *engine, QmlDebugConnection *conn : m_qmlEngine(engine) , m_inspectorToolsContext("Debugger.QmlInspector") , m_selectAction(new QAction(this)) - , m_showAppOnTopAction(action(ShowAppOnTop)) + , m_showAppOnTopAction(action(ShowAppOnTop)->action()) { m_debugIdToIname.insert(WatchItem::InvalidId, "inspect"); connect(action(ShowQmlObjectTree), diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index 0553efd82a1..3f5a4b7984f 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -757,7 +757,7 @@ bool RegisterHandler::contextMenuEvent(const ItemViewEvent &ev) addFormatAction(tr("Binary"), BinaryFormat); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; } diff --git a/src/plugins/debugger/sourcefileshandler.cpp b/src/plugins/debugger/sourcefileshandler.cpp index c384b8b9e10..badf3701755 100644 --- a/src/plugins/debugger/sourcefileshandler.cpp +++ b/src/plugins/debugger/sourcefileshandler.cpp @@ -138,7 +138,7 @@ bool SourceFilesHandler::setData(const QModelIndex &idx, const QVariant &data, i [this, name] { m_engine->gotoLocation(FilePath::fromString(name)); }); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; } diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp index d1af61e2c73..78da176ceff 100644 --- a/src/plugins/debugger/stackhandler.cpp +++ b/src/plugins/debugger/stackhandler.cpp @@ -70,10 +70,10 @@ StackHandler::StackHandler(DebuggerEngine *engine) setObjectName("StackModel"); setHeader({tr("Level"), tr("Function"), tr("File"), tr("Line"), tr("Address") }); - connect(action(ExpandStack), &QAction::triggered, - this, &StackHandler::reloadFullStack); - connect(action(MaximalStackDepth), &QAction::triggered, - this, &StackHandler::reloadFullStack); + connect(action(ExpandStack)->action(), &QAction::triggered, + this, &StackHandler::reloadFullStack); + connect(action(MaximalStackDepth)->action(), &QAction::triggered, + this, &StackHandler::reloadFullStack); // For now there's always only "the" current thread. rootItem()->appendChild(new ThreadDummyItem); @@ -390,13 +390,13 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev) frame = frameAt(row); const quint64 address = frame.address; - menu->addAction(action(ExpandStack)); + menu->addAction(action(ExpandStack)->action()); addAction(menu, tr("Copy Contents to Clipboard"), true, [this] { copyContentsToClipboard(); }); addAction(menu, tr("Save as Task File..."), true, [this] { saveTaskFile(); }); if (m_engine->hasCapability(CreateFullBacktraceCapability)) - menu->addAction(action(CreateFullBacktrace)); + menu->addAction(action(CreateFullBacktrace)->action()); if (m_engine->hasCapability(AdditionalQmlStackCapability)) addAction(menu, tr("Load QML Stack"), true, [this] { m_engine->loadAdditionalQmlStack(); }); @@ -444,9 +444,9 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev) } menu->addSeparator(); - menu->addAction(action(UseToolTipsInStackView)); + menu->addAction(action(UseToolTipsInStackView)->action()); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; } diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index c63a6d5469b..011ceb0d7d6 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -259,7 +259,7 @@ bool ThreadsHandler::setData(const QModelIndex &idx, const QVariant &data, int r if (ev.as()) { auto menu = new QMenu; Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); menu->popup(ev.globalPos()); return true; } diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 193842ed97a..65b8abd69c9 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1738,15 +1738,15 @@ bool WatchModel::contextMenuEvent(const ItemViewEvent &ev) menu->addSeparator(); - menu->addAction(action(UseDebuggingHelpers)); - menu->addAction(action(UseToolTipsInLocalsView)); - menu->addAction(action(AutoDerefPointers)); - menu->addAction(action(SortStructMembers)); - menu->addAction(action(UseDynamicType)); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(UseDebuggingHelpers)->action()); + menu->addAction(action(UseToolTipsInLocalsView)->action()); + menu->addAction(action(AutoDerefPointers)->action()); + menu->addAction(action(SortStructMembers)->action()); + menu->addAction(action(UseDynamicType)->action()); + menu->addAction(action(SettingsDialog)->action()); Internal::addHideColumnActions(menu, ev.view()); - menu->addAction(action(SettingsDialog)); + menu->addAction(action(SettingsDialog)->action()); connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater); menu->popup(ev.globalPos()); return true; diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp index 9da95b351e9..d7af82b05b3 100644 --- a/src/plugins/debugger/watchwindow.cpp +++ b/src/plugins/debugger/watchwindow.cpp @@ -54,7 +54,7 @@ WatchTreeView::WatchTreeView(WatchType type) connect(this, &QTreeView::expanded, this, &WatchTreeView::expandNode); connect(this, &QTreeView::collapsed, this, &WatchTreeView::collapseNode); - connect(action(LogTimeStamps), &QAction::triggered, + connect(action(LogTimeStamps)->action(), &QAction::triggered, this, &WatchTreeView::updateTimeColumn); } diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index cd3509b45ed..aa0976c5242 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -1194,7 +1194,7 @@ bool FakeVimPluginPrivate::initialize() readSettings(); Command *cmd = nullptr; - cmd = ActionManager::registerAction(theFakeVimSetting(ConfigUseFakeVim), + cmd = ActionManager::registerAction(theFakeVimSetting(ConfigUseFakeVim)->action(), INSTALL_HANDLER, Context(Core::Constants::C_GLOBAL), true); cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? Tr::tr("Meta+Shift+V,Meta+Shift+V") : Tr::tr("Alt+V,Alt+V"))); From 2842b613edcd53a4d6d831484d75dbb5ca0accd7 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 23 Sep 2020 12:48:17 +0200 Subject: [PATCH 04/19] TextEditor: request assist after trigger char inserted ... while proposal is shown amends 23d63dcc8bf318a5fc716b440c286b360b52ed50 Fixes: QTCREATORBUG-24225 Change-Id: Ie935c7c1d4786a4fd3cf338d7f1df52ae28de63b Reviewed-by: David Schulz Reviewed-by: Christian Kandeler --- .../clangeditordocumentprocessor.cpp | 7 +++- .../clangeditordocumentprocessor.h | 1 + .../texteditor/codeassist/codeassistant.cpp | 32 ++++++++++++------- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index c29359a531d..7fa8b9302e1 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -196,6 +196,8 @@ void ClangEditorDocumentProcessor::updateCodeWarnings( uint documentRevision) { if (documentRevision == revision()) { + if (m_invalidationState == InvalidationState::Scheduled) + m_invalidationState = InvalidationState::Canceled; m_diagnosticManager.processNewDiagnostics(diagnostics, m_isProjectFile); const auto codeWarnings = m_diagnosticManager.takeExtraSelections(); const auto fixitAvailableMarkers = m_diagnosticManager.takeFixItAvailableMarkers(); @@ -298,11 +300,14 @@ TextEditor::QuickFixOperations ClangEditorDocumentProcessor::extraRefactoringOpe void ClangEditorDocumentProcessor::editorDocumentTimerRestarted() { m_updateBackendDocumentTimer.stop(); // Wait for the next call to run(). + m_invalidationState = InvalidationState::Scheduled; } void ClangEditorDocumentProcessor::invalidateDiagnostics() { - m_diagnosticManager.invalidateDiagnostics(); + if (m_invalidationState != InvalidationState::Canceled) + m_diagnosticManager.invalidateDiagnostics(); + m_invalidationState = InvalidationState::Off; } TextEditor::TextMarks ClangEditorDocumentProcessor::diagnosticTextMarksAt(uint line, diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index 36ef30b8daf..91d98601aab 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -140,6 +140,7 @@ private: QFutureWatcher m_parserWatcher; QTimer m_updateBackendDocumentTimer; unsigned m_parserRevision; + enum class InvalidationState { Off, Scheduled, Canceled } m_invalidationState; QVector m_tokenInfos; CppTools::SemanticHighlighter m_semanticHighlighter; diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 117ba67717c..815be89bbaa 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -88,6 +88,7 @@ public: bool eventFilter(QObject *o, QEvent *e) override; private: + bool requestActivationCharProposal(); void processProposalItem(AssistProposalItemInterface *proposalItem); void handlePrefixExpansion(const QString &newPrefix); void finalizeProposal(); @@ -161,6 +162,19 @@ void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider) } } +bool CodeAssistantPrivate::requestActivationCharProposal() +{ + if (m_assistKind == Completion && m_settings.m_completionTrigger != ManualCompletion) { + if (CompletionAssistProvider *provider = identifyActivationSequence()) { + if (isWaitingForProposal()) + cancelCurrentRequest(); + requestProposal(ActivationCharacter, Completion, provider); + return true; + } + } + return false; +} + void CodeAssistantPrivate::process() { if (!isConfigured()) @@ -169,16 +183,8 @@ void CodeAssistantPrivate::process() stopAutomaticProposalTimer(); if (m_assistKind == TextEditor::Completion) { - if (m_settings.m_completionTrigger != ManualCompletion) { - if (CompletionAssistProvider *provider = identifyActivationSequence()) { - if (isWaitingForProposal()) - cancelCurrentRequest(); - requestProposal(ActivationCharacter, Completion, provider); - return; - } - } - - startAutomaticProposalTimer(); + if (!requestActivationCharProposal()) + startAutomaticProposalTimer(); } else if (m_assistKind != FunctionHint){ m_assistKind = TextEditor::Completion; } @@ -365,6 +371,8 @@ void CodeAssistantPrivate::processProposalItem(AssistProposalItemInterface *prop proposalItem->apply(manipulator, m_proposal->basePosition()); destroyContext(); m_editorWidget->encourageApply(); + if (!proposalItem->isSnippet()) + requestActivationCharProposal(); } void CodeAssistantPrivate::handlePrefixExpansion(const QString &newPrefix) @@ -404,7 +412,7 @@ void CodeAssistantPrivate::finalizeProposal() bool CodeAssistantPrivate::isDisplayingProposal() const { - return m_proposalWidget != nullptr; + return m_proposalWidget != nullptr && m_proposalWidget->isVisible(); } bool CodeAssistantPrivate::isWaitingForProposal() const @@ -457,6 +465,8 @@ void CodeAssistantPrivate::notifyChange() m_proposalWidget->updateProposal( m_editorWidget->textAt(m_proposal->basePosition(), m_editorWidget->position() - m_proposal->basePosition())); + if (!isDisplayingProposal()) + requestActivationCharProposal(); } else { destroyContext(); requestProposal(ExplicitlyInvoked, m_assistKind, m_requestProvider); From 5d889a4d33e1a9181907311836e972a0a3f41d4e Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Sep 2020 13:18:56 +0200 Subject: [PATCH 05/19] QmakeProjectManager: Add a soft assert Task-number: QTCREATORBUG-24683 Change-Id: I6c4780a3200eff7c371dd90bb0b441ce84d4b9cb Reviewed-by: Eike Ziller --- src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index f8d2151ea28..3a564fd20ba 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -233,6 +233,7 @@ QmakePriFile::~QmakePriFile() void QmakePriFile::scheduleUpdate() { + QTC_ASSERT(m_buildSystem, return); QtSupport::ProFileCacheManager::instance()->discardFile( filePath().toString(), m_buildSystem->qmakeVfs()); m_qmakeProFile->scheduleUpdate(QmakeProFile::ParseLater); From 634bb8afb415fba776fb0c0f68d80fdef55c50b6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 10:18:16 +0200 Subject: [PATCH 06/19] QmlDesigner: Add const to selectedModelNodes() Otherwise we have to use qAsConst when using ranged for. Change-Id: I6bb166be1525b0b75939c9a134b507e561f7bbd0 Reviewed-by: Mahmoud Badri Reviewed-by: Miikka Heikkinen --- src/plugins/qmldesigner/designercore/include/abstractview.h | 2 +- src/plugins/qmldesigner/designercore/model/abstractview.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index 8ad5a3ba9ec..12cb4575717 100644 --- a/src/plugins/qmldesigner/designercore/include/abstractview.h +++ b/src/plugins/qmldesigner/designercore/include/abstractview.h @@ -154,7 +154,7 @@ public: bool hasSingleSelectedModelNode() const; bool isSelectedModelNode(const ModelNode &modelNode) const; - QList selectedModelNodes() const; + const QList selectedModelNodes() const; ModelNode firstSelectedModelNode() const; ModelNode singleSelectedModelNode() const; diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 85e50b3c8cd..d7d512334d9 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -453,7 +453,7 @@ bool AbstractView::isSelectedModelNode(const ModelNode &modelNode) const Sets the list of nodes to the actual selected nodes. Returns a list of the selected nodes. */ -QList AbstractView::selectedModelNodes() const +const QList AbstractView::selectedModelNodes() const { return toModelNodeList(model()->d->selectedNodes()); } From fe7d928f3b00cf5652fb0d8633bac122f3d1d489 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 10:16:54 +0200 Subject: [PATCH 07/19] QmlDesigner: Do not keep separate selection state When nodes are deleted the selection can changes without a notifier. There is no reason to keep the selection separately. Change-Id: I166d3695762e3d5cd6ff4808586384fd26bafef4 Reviewed-by: Miikka Heikkinen --- .../components/connectioneditor/bindingmodel.cpp | 7 +++---- .../qmldesigner/components/connectioneditor/bindingmodel.h | 1 - .../components/connectioneditor/dynamicpropertiesmodel.cpp | 7 +++---- .../components/connectioneditor/dynamicpropertiesmodel.h | 1 - 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp index 55220d123b1..8f15a18c94f 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp @@ -53,10 +53,10 @@ void BindingModel::resetModel() { beginResetModel(); clear(); - setHorizontalHeaderLabels(QStringList({ tr("Item"), tr("Property"), tr("Source Item"), - tr("Source Property") })); + setHorizontalHeaderLabels( + QStringList({tr("Item"), tr("Property"), tr("Source Item"), tr("Source Property")})); - foreach (const ModelNode modelNode, m_selectedModelNodes) + for (const ModelNode modelNode : connectionView()->selectedModelNodes()) addModelNode(modelNode); endResetModel(); @@ -100,7 +100,6 @@ void BindingModel::bindingRemoved(const BindingProperty &bindingProperty) void BindingModel::selectionChanged(const QList &selectedNodes) { m_handleDataChanged = false; - m_selectedModelNodes = selectedNodes; resetModel(); m_handleDataChanged = true; } diff --git a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.h b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.h index 480ba254ad6..79e46a9a431 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.h +++ b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.h @@ -80,7 +80,6 @@ private: void handleException(); private: - QList m_selectedModelNodes; ConnectionView *m_connectionView; bool m_lock = false; bool m_handleDataChanged = false; diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index 5af183e6b11..c1f27f16e73 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -128,10 +128,10 @@ void DynamicPropertiesModel::resetModel() { beginResetModel(); clear(); - setHorizontalHeaderLabels(QStringList({ tr("Item"), tr("Property"), tr("Property Type"), - tr("Property Value") })); + setHorizontalHeaderLabels( + QStringList({tr("Item"), tr("Property"), tr("Property Type"), tr("Property Value")})); - foreach (const ModelNode modelNode, m_selectedModelNodes) + for (const ModelNode modelNode : connectionView()->selectedModelNodes()) addModelNode(modelNode); endResetModel(); @@ -279,7 +279,6 @@ void DynamicPropertiesModel::bindingRemoved(const BindingProperty &bindingProper void DynamicPropertiesModel::selectionChanged(const QList &selectedNodes) { m_handleDataChanged = false; - m_selectedModelNodes = selectedNodes; resetModel(); m_handleDataChanged = true; } diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h index 1d71c1230e0..3b7d0cf4231 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.h @@ -96,7 +96,6 @@ private: void handleException(); private: - QList m_selectedModelNodes; ConnectionView *m_connectionView; bool m_lock = false; bool m_handleDataChanged = false; From bf19509642ef3845515a1fe099c5389e1ab553a0 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 5 Oct 2020 11:57:24 +0200 Subject: [PATCH 08/19] Tests: Fix boost pro file additions Otherwise we might end up with a messed up project file. Change-Id: I432d45063092d0a5dead3ef975ba3ce5294c1af0 Reviewed-by: David Schulz --- tests/auto/debugger/tst_dumpers.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 5d7ff9a5b52..8f1ea356932 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -696,6 +696,7 @@ struct BoostProfile : public Profile const QByteArray &boostLibPath = qgetenv("QTC_BOOST_LIBRARY_PATH_FOR_TEST"); if (!boostLibPath.isEmpty()) contents += QByteArray("\nLIBS += \"-L") + boostLibPath.constData() + QByteArray("\""); + contents += '\n'; // ensure newline at end no matter what has been added before includes = "#include \n"; } }; From 72c54777894cbc99e4c7675c656dfed9d83e05b2 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 5 Oct 2020 05:51:35 +0200 Subject: [PATCH 09/19] Utils: Remove SavedAction::m_settingsGroup Instead, directly use the full key. Change-Id: I8410851dd5d53f09f44cca66a9187d0b72717036 Reviewed-by: Christian Stenger --- src/libs/utils/savedaction.cpp | 35 +++++----------------------------- src/libs/utils/savedaction.h | 4 ---- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/src/libs/utils/savedaction.cpp b/src/libs/utils/savedaction.cpp index 08d0766ee8a..65f9492a6b0 100644 --- a/src/libs/utils/savedaction.cpp +++ b/src/libs/utils/savedaction.cpp @@ -142,37 +142,14 @@ void SavedAction::setSettingsKey(const QString &key) */ void SavedAction::setSettingsKey(const QString &group, const QString &key) { - m_settingsKey = key; - m_settingsGroup = group; -} - - -/*! - Sets the key to be used when accessing the settings. - - \sa settingsKey() -*/ -QString SavedAction::settingsGroup() const -{ - return m_settingsGroup; -} - -/*! - Sets the group to be used when accessing the settings. - - \sa settingsGroup() -*/ -void SavedAction::setSettingsGroup(const QString &group) -{ - m_settingsGroup = group; + m_settingsKey = group + "/" + key; } QString SavedAction::toString() const { return QLatin1String("value: ") + m_value.toString() + QLatin1String(" defaultvalue: ") + m_defaultValue.toString() - + QLatin1String(" settingskey: ") + m_settingsGroup - + QLatin1Char('/') + m_settingsKey; + + QLatin1String(" settingskey: ") + m_settingsKey; } /* @@ -183,9 +160,9 @@ QString SavedAction::toString() const */ void SavedAction::readSettings(const QSettings *settings) { - if (m_settingsGroup.isEmpty() || m_settingsKey.isEmpty()) + if (m_settingsKey.isEmpty()) return; - QVariant var = settings->value(m_settingsGroup + QLatin1Char('/') + m_settingsKey, m_defaultValue); + QVariant var = settings->value(m_settingsKey, m_defaultValue); // work around old ini files containing @Invalid() entries if (m_action.isCheckable() && !var.isValid()) var = false; @@ -200,11 +177,9 @@ void SavedAction::readSettings(const QSettings *settings) */ void SavedAction::writeSettings(QSettings *settings) { - if (m_settingsGroup.isEmpty() || m_settingsKey.isEmpty()) + if (m_settingsKey.isEmpty()) return; - settings->beginGroup(m_settingsGroup); settings->setValue(m_settingsKey, m_value); - settings->endGroup(); } /* diff --git a/src/libs/utils/savedaction.h b/src/libs/utils/savedaction.h index 82db5fc0730..98403d683be 100644 --- a/src/libs/utils/savedaction.h +++ b/src/libs/utils/savedaction.h @@ -59,9 +59,6 @@ public: void setSettingsKey(const QString &key); void setSettingsKey(const QString &group, const QString &key); - QString settingsGroup() const; - void setSettingsGroup(const QString &group); - virtual void readSettings(const QSettings *settings); virtual void writeSettings(QSettings *settings); @@ -92,7 +89,6 @@ private: QVariant m_value; QVariant m_defaultValue; QString m_settingsKey; - QString m_settingsGroup; QString m_dialogText; QWidget *m_widget = nullptr; QAction m_action; From 35ffc930b8b69bd002e97d49d431a6408fb6c80e Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 5 Oct 2020 13:06:06 +0200 Subject: [PATCH 10/19] Tests: Fix QJson dumper test Change-Id: Ic9f5b7da358164bb9b66f2c75965377cdbf09c4e Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 8f1ea356932..9fb89cf807e 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -7503,8 +7503,8 @@ void tst_Dumpers::dumper_data() ; - const QtVersion jsonv1{0, 0x50e00}; - const QtVersion jsonv2{0x50e00}; + const QtVersion jsonv1{0, 0x50f00}; + const QtVersion jsonv2{0x50f00}; QTest::newRow("QJson") << Data("#include \n" From aeb30c0840928df1ec7117302b28bd7861a79478 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 12:04:34 +0200 Subject: [PATCH 11/19] QmlDesigner: Delete existing node when property does not allow list Some properties can only contain a single QML element. In this case we should delete the old existing element. This can be checked using NodeMetainfo::propertyIsListProperty. Change-Id: I1782a38b7bfdb8a6f1078b0fa39654a4653dab59 Reviewed-by: Mahmoud Badri Reviewed-by: Miikka Heikkinen --- .../designercore/model/qmlvisualnode.cpp | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlvisualnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlvisualnode.cpp index 9a376bab64a..29fd0785b48 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlvisualnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlvisualnode.cpp @@ -213,11 +213,20 @@ QmlObjectNode QmlVisualNode::createQmlObjectNode(AbstractView *view, NodeHints hints = NodeHints::fromItemLibraryEntry(itemLibraryEntry); const PropertyName forceNonDefaultProperty = hints.forceNonDefaultProperty().toUtf8(); - QmlObjectNode newNode = QmlItemNode::createQmlObjectNode(view, itemLibraryEntry, position, parentProperty); + QmlObjectNode newNode = QmlItemNode::createQmlObjectNode(view, + itemLibraryEntry, + position, + parentProperty); if (!forceNonDefaultProperty.isEmpty()) { - if (parentQmlItemNode.modelNode().metaInfo().hasProperty(forceNonDefaultProperty)) + const NodeMetaInfo metaInfo = parentQmlItemNode.modelNode().metaInfo(); + if (metaInfo.hasProperty(forceNonDefaultProperty)) { + if (!metaInfo.propertyIsListProperty(forceNonDefaultProperty) + && parentQmlItemNode.modelNode().hasNodeProperty(forceNonDefaultProperty)) { + parentQmlItemNode.removeProperty(forceNonDefaultProperty); + } parentQmlItemNode.nodeListProperty(forceNonDefaultProperty).reparentHere(newNode); + } } return newNode; @@ -288,8 +297,18 @@ QmlObjectNode QmlVisualNode::createQmlObjectNode(AbstractView *view, newQmlObjectNode = createQmlObjectNodeFromSource(view, itemLibraryEntry.qmlSource(), position); } - if (parentProperty.isValid()) - parentProperty.reparentHere(newQmlObjectNode); + if (parentProperty.isValid()) { + const PropertyName propertyName = parentProperty.name(); + const ModelNode parentNode = parentProperty.parentModelNode(); + const NodeMetaInfo metaInfo = parentNode.metaInfo(); + + if (metaInfo.isValid() && !metaInfo.propertyIsListProperty(propertyName) + && parentProperty.isNodeProperty()) { + parentNode.removeProperty(propertyName); + } + + parentNode.nodeAbstractProperty(propertyName).reparentHere(newQmlObjectNode); + } if (!newQmlObjectNode.isValid()) return; From 469e7a7edf45b82c2a5c44f7f316aabfa041c8c9 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 15:37:36 +0200 Subject: [PATCH 12/19] QmlDesigner.qml2puppet: Fix build with Qt6 Change-Id: Ib9580fa1b6c1699e830898234b286f3ee999d477 Reviewed-by: Miikka Heikkinen --- .../qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp index b1494e5b3bb..d5701d7fc9c 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp @@ -230,13 +230,21 @@ void emitComponentComplete(QObject *item) QQmlData *data = QQmlData::get(item); if (data && data->context) { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QQmlComponentAttached *componentAttached = data->context->componentAttached; +#else + QQmlComponentAttached *componentAttached = data->context->componentAttacheds(); +#endif while (componentAttached) { if (componentAttached->parent()) if (componentAttached->parent() == item) emit componentAttached->completed(); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) componentAttached = componentAttached->next; +#else + componentAttached = componentAttached->next(); +#endif } } } From a53238e91ccd94c1c07aaa9e0e8d91085cd7e0b6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 15:33:30 +0200 Subject: [PATCH 13/19] QmlDesigner.qml2puppet: Fix build with Qt6 Change-Id: If02714c44946d0a87a28c2ed505f860a593aef79 Reviewed-by: Miikka Heikkinen --- .../nodeinstanceserverinterface.cpp | 200 +++++------------- 1 file changed, 57 insertions(+), 143 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp index 3e3351e507f..184265951e8 100644 --- a/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp +++ b/share/qtcreator/qml/qmlpuppet/interfaces/nodeinstanceserverinterface.cpp @@ -81,6 +81,15 @@ NodeInstanceServerInterface::NodeInstanceServerInterface(QObject *parent) : registerCommands(); } +template +inline void registerCommand(const char *typeName) +{ + qRegisterMetaType(typeName); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + qRegisterMetaTypeStreamOperators(typeName); +#endif +} + void NodeInstanceServerInterface::registerCommands() { if (isRegistered) @@ -88,149 +97,54 @@ void NodeInstanceServerInterface::registerCommands() isRegistered = true; - qRegisterMetaType("CreateInstancesCommand"); - qRegisterMetaTypeStreamOperators("CreateInstancesCommand"); - - qRegisterMetaType("ClearSceneCommand"); - qRegisterMetaTypeStreamOperators("ClearSceneCommand"); - - qRegisterMetaType("CreateSceneCommand"); - qRegisterMetaTypeStreamOperators("CreateSceneCommand"); - - qRegisterMetaType("Update3dViewStateCommand"); - qRegisterMetaTypeStreamOperators("Update3dViewStateCommand"); - - qRegisterMetaType("ChangeBindingsCommand"); - qRegisterMetaTypeStreamOperators("ChangeBindingsCommand"); - - qRegisterMetaType("ChangeValuesCommand"); - qRegisterMetaTypeStreamOperators("ChangeValuesCommand"); - - qRegisterMetaType("ChangeFileUrlCommand"); - qRegisterMetaTypeStreamOperators("ChangeFileUrlCommand"); - - qRegisterMetaType("ChangeStateCommand"); - qRegisterMetaTypeStreamOperators("ChangeStateCommand"); - - qRegisterMetaType("RemoveInstancesCommand"); - qRegisterMetaTypeStreamOperators("RemoveInstancesCommand"); - - qRegisterMetaType("ChangeSelectionCommand"); - qRegisterMetaTypeStreamOperators("ChangeSelectionCommand"); - - qRegisterMetaType("RemovePropertiesCommand"); - qRegisterMetaTypeStreamOperators("RemovePropertiesCommand"); - - qRegisterMetaType("ReparentInstancesCommand"); - qRegisterMetaTypeStreamOperators("ReparentInstancesCommand"); - - qRegisterMetaType("ChangeIdsCommand"); - qRegisterMetaTypeStreamOperators("ChangeIdsCommand"); - - qRegisterMetaType("PropertyAbstractContainer"); - qRegisterMetaTypeStreamOperators("PropertyAbstractContainer"); - - qRegisterMetaType("InformationChangedCommand"); - qRegisterMetaTypeStreamOperators("InformationChangedCommand"); - - qRegisterMetaType("ValuesChangedCommand"); - qRegisterMetaTypeStreamOperators("ValuesChangedCommand"); - - qRegisterMetaType("ValuesModifiedCommand"); - qRegisterMetaTypeStreamOperators("ValuesModifiedCommand"); - - qRegisterMetaType("PixmapChangedCommand"); - qRegisterMetaTypeStreamOperators("PixmapChangedCommand"); - - qRegisterMetaType("InformationContainer"); - qRegisterMetaTypeStreamOperators("InformationContainer"); - - qRegisterMetaType("PropertyValueContainer"); - qRegisterMetaTypeStreamOperators("PropertyValueContainer"); - - qRegisterMetaType("PropertyBindingContainer"); - qRegisterMetaTypeStreamOperators("PropertyBindingContainer"); - - qRegisterMetaType("PropertyAbstractContainer"); - qRegisterMetaTypeStreamOperators("PropertyAbstractContainer"); - - qRegisterMetaType("InstanceContainer"); - qRegisterMetaTypeStreamOperators("InstanceContainer"); - - qRegisterMetaType("IdContainer"); - qRegisterMetaTypeStreamOperators("IdContainer"); - - qRegisterMetaType("ChildrenChangedCommand"); - qRegisterMetaTypeStreamOperators("ChildrenChangedCommand"); - - qRegisterMetaType("ImageContainer"); - qRegisterMetaTypeStreamOperators("ImageContainer"); - - qRegisterMetaType("StatePreviewImageChangedCommand"); - qRegisterMetaTypeStreamOperators("StatePreviewImageChangedCommand"); - - qRegisterMetaType("CompleteComponentCommand"); - qRegisterMetaTypeStreamOperators("CompleteComponentCommand"); - - qRegisterMetaType("ComponentCompletedCommand"); - qRegisterMetaTypeStreamOperators("ComponentCompletedCommand"); - - qRegisterMetaType("AddImportContainer"); - qRegisterMetaTypeStreamOperators("AddImportContainer"); - - qRegisterMetaType("SynchronizeCommand"); - qRegisterMetaTypeStreamOperators("SynchronizeCommand"); - - qRegisterMetaType("ChangeNodeSourceCommand"); - qRegisterMetaTypeStreamOperators("ChangeNodeSourceCommand"); - - qRegisterMetaType("ChangeAuxiliaryCommand"); - qRegisterMetaTypeStreamOperators("ChangeAuxiliaryCommand"); - - qRegisterMetaType("TokenCommand"); - qRegisterMetaTypeStreamOperators("TokenCommand"); - - qRegisterMetaType("RemoveSharedMemoryCommand"); - qRegisterMetaTypeStreamOperators("RemoveSharedMemoryCommand"); - - qRegisterMetaType("EndPuppetCommand"); - qRegisterMetaTypeStreamOperators("EndPuppetCommand"); - - qRegisterMetaType("DebugOutputCommand"); - qRegisterMetaTypeStreamOperators("DebugOutputCommand"); - - qRegisterMetaType("Enumeration"); - qRegisterMetaTypeStreamOperators("Enumeration"); - - qRegisterMetaType("PuppetAliveCommand"); - qRegisterMetaTypeStreamOperators("PuppetAliveCommand"); - - qRegisterMetaType("PuppetToCreatorCommand"); - qRegisterMetaTypeStreamOperators("PuppetToCreatorCommand"); - - qRegisterMetaType("InputEventCommand"); - qRegisterMetaTypeStreamOperators("InputEventCommand"); - - qRegisterMetaType("View3DActionCommand"); - qRegisterMetaTypeStreamOperators("View3DActionCommand"); - - qRegisterMetaType("RequestModelNodePreviewImageCommand"); - qRegisterMetaTypeStreamOperators("RequestModelNodePreviewImageCommand"); - - qRegisterMetaType>("QPairIntInt"); - qRegisterMetaTypeStreamOperators>("QPairIntInt"); - - qRegisterMetaType("ChangeLanguageCommand"); - qRegisterMetaTypeStreamOperators("ChangeLanguageCommand"); - - qRegisterMetaType("ChangePreviewImageSizeCommand"); - qRegisterMetaTypeStreamOperators("ChangePreviewImageSizeCommand"); - - qRegisterMetaType("CapturedDataCommand"); - qRegisterMetaTypeStreamOperators("CapturedDataCommand"); - - qRegisterMetaType("SceneCreatedCommand"); - qRegisterMetaTypeStreamOperators("SceneCreatedCommand"); + registerCommand("CreateInstancesCommand"); + registerCommand("ClearSceneCommand"); + registerCommand("CreateSceneCommand"); + registerCommand("Update3dViewStateCommand"); + registerCommand("ChangeBindingsCommand"); + registerCommand("ChangeValuesCommand"); + registerCommand("ChangeFileUrlCommand"); + registerCommand("ChangeStateCommand"); + registerCommand("RemoveInstancesCommand"); + registerCommand("ChangeSelectionCommand"); + registerCommand("RemovePropertiesCommand"); + registerCommand("ReparentInstancesCommand"); + registerCommand("ChangeIdsCommand"); + registerCommand("PropertyAbstractContainer"); + registerCommand("InformationChangedCommand"); + registerCommand("ValuesChangedCommand"); + registerCommand("ValuesModifiedCommand"); + registerCommand("PixmapChangedCommand"); + registerCommand("InformationContainer"); + registerCommand("PropertyValueContainer"); + registerCommand("PropertyBindingContainer"); + registerCommand("PropertyAbstractContainer"); + registerCommand("InstanceContainer"); + registerCommand("IdContainer"); + registerCommand("ChildrenChangedCommand"); + registerCommand("ImageContainer"); + registerCommand("StatePreviewImageChangedCommand"); + registerCommand("CompleteComponentCommand"); + registerCommand("ComponentCompletedCommand"); + registerCommand("AddImportContainer"); + registerCommand("SynchronizeCommand"); + registerCommand("ChangeNodeSourceCommand"); + registerCommand("ChangeAuxiliaryCommand"); + registerCommand("TokenCommand"); + registerCommand("RemoveSharedMemoryCommand"); + registerCommand("EndPuppetCommand"); + registerCommand("DebugOutputCommand"); + registerCommand("Enumeration"); + registerCommand("PuppetAliveCommand"); + registerCommand("PuppetToCreatorCommand"); + registerCommand("InputEventCommand"); + registerCommand("View3DActionCommand"); + registerCommand("RequestModelNodePreviewImageCommand"); + registerCommand>("QPairIntInt"); + registerCommand("ChangeLanguageCommand"); + registerCommand("ChangePreviewImageSizeCommand"); + registerCommand("CapturedDataCommand"); + registerCommand("SceneCreatedCommand"); } } From b2b35eeddc872957ae28bcaed940bf0e1a9c21c7 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 5 Oct 2020 14:43:23 +0200 Subject: [PATCH 14/19] ProjectExplorer: ProcessParameters code cosmetics Change-Id: I050cb30222642911b582b9936186719cb4f09fa1 Reviewed-by: Christian Kandeler --- .../projectexplorer/processparameters.cpp | 21 +++++++------------ .../projectexplorer/processparameters.h | 4 ++-- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/plugins/projectexplorer/processparameters.cpp b/src/plugins/projectexplorer/processparameters.cpp index 58f54c6bffa..9f5047e57e2 100644 --- a/src/plugins/projectexplorer/processparameters.cpp +++ b/src/plugins/projectexplorer/processparameters.cpp @@ -49,11 +49,7 @@ using namespace Utils; namespace ProjectExplorer { -ProcessParameters::ProcessParameters() : - m_macroExpander(nullptr), - m_commandMissing(false) -{ -} +ProcessParameters::ProcessParameters() = default; /*! Sets the command to run. @@ -68,7 +64,6 @@ void ProcessParameters::setCommandLine(const CommandLine &cmdLine) effectiveArguments(); } - /*! Sets the \a workingDirectory for the process for a build configuration. @@ -159,17 +154,17 @@ QString ProcessParameters::prettyCommand() const QString cmd = m_command.executable().toString(); if (m_macroExpander) cmd = m_macroExpander->expand(cmd); - return Utils::FilePath::fromString(cmd).fileName(); + return FilePath::fromString(cmd).fileName(); } QString ProcessParameters::prettyArguments() const { QString margs = effectiveArguments(); QString workDir = effectiveWorkingDirectory().toString(); - Utils::QtcProcess::SplitError err; - Utils::QtcProcess::Arguments args = - Utils::QtcProcess::prepareArgs(margs, &err, Utils::HostOsInfo::hostOs(), &m_environment, &workDir); - if (err != Utils::QtcProcess::SplitOk) + QtcProcess::SplitError err; + QtcProcess::Arguments args = + QtcProcess::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir); + if (err != QtcProcess::SplitOk) return margs; // Sorry, too complex - just fall back. return args.toString(); } @@ -189,7 +184,7 @@ QString ProcessParameters::summary(const QString &displayName) const return QString::fromLatin1("%1: %2 %3") .arg(displayName, - Utils::QtcProcess::quoteArg(prettyCommand()), + QtcProcess::quoteArg(prettyCommand()), prettyArguments()); } @@ -200,7 +195,7 @@ QString ProcessParameters::summaryInWorkdir(const QString &displayName) const return QString::fromLatin1("%1: %2 %3 in %4") .arg(displayName, - Utils::QtcProcess::quoteArg(prettyCommand()), + QtcProcess::quoteArg(prettyCommand()), prettyArguments(), QDir::toNativeSeparators(effectiveWorkingDirectory().toString())); } diff --git a/src/plugins/projectexplorer/processparameters.h b/src/plugins/projectexplorer/processparameters.h index e574566617a..94d1bd88839 100644 --- a/src/plugins/projectexplorer/processparameters.h +++ b/src/plugins/projectexplorer/processparameters.h @@ -73,12 +73,12 @@ private: Utils::FilePath m_workingDirectory; Utils::CommandLine m_command; Utils::Environment m_environment; - Utils::MacroExpander *m_macroExpander; + Utils::MacroExpander *m_macroExpander = nullptr; mutable Utils::FilePath m_effectiveWorkingDirectory; mutable Utils::FilePath m_effectiveCommand; mutable QString m_effectiveArguments; - mutable bool m_commandMissing; + mutable bool m_commandMissing = false; }; } // namespace ProjectExplorer From b9cc9c9bfafdd5623b9550cd96c9ab3b6615c8ce Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 19:26:13 +0200 Subject: [PATCH 15/19] QmlDesigner: Fix crash We have to check if the view is actually detached. Change-Id: I160c1a15f921092ef66999ed6a27ffcdbbe205d9 Reviewed-by: Thomas Hartmann --- .../components/connectioneditor/bindingmodel.cpp | 6 ++++-- .../components/connectioneditor/dynamicpropertiesmodel.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp index 8f15a18c94f..0470798aeca 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/bindingmodel.cpp @@ -56,8 +56,10 @@ void BindingModel::resetModel() setHorizontalHeaderLabels( QStringList({tr("Item"), tr("Property"), tr("Source Item"), tr("Source Property")})); - for (const ModelNode modelNode : connectionView()->selectedModelNodes()) - addModelNode(modelNode); + if (connectionView()->isAttached()) { + for (const ModelNode modelNode : connectionView()->selectedModelNodes()) + addModelNode(modelNode); + } endResetModel(); } diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index c1f27f16e73..51f5722df28 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -131,8 +131,10 @@ void DynamicPropertiesModel::resetModel() setHorizontalHeaderLabels( QStringList({tr("Item"), tr("Property"), tr("Property Type"), tr("Property Value")})); - for (const ModelNode modelNode : connectionView()->selectedModelNodes()) - addModelNode(modelNode); + if (connectionView()->isAttached()) { + for (const ModelNode modelNode : connectionView()->selectedModelNodes()) + addModelNode(modelNode); + } endResetModel(); } From 3e4cb2ba2fdc7e517ceafe041703eb0fc1c84cba Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Oct 2020 19:27:29 +0200 Subject: [PATCH 16/19] QmlDesigner: Show selection in DebugView Change-Id: Ica85a227e6976464480a3b3dd91d4d42f1ed1528 Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/debugview/debugview.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/qmldesigner/components/debugview/debugview.cpp b/src/plugins/qmldesigner/components/debugview/debugview.cpp index 61c6830b11c..159bdfaebb2 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -242,6 +242,18 @@ void DebugView::selectedNodesChanged(const QList &selectedNodes /*sel message << lineBreak; message << selectedNode.metaInfo().typeName(); message << lineBreak; + + message << "Node Source" << selectedNode.nodeSource(); + message << lineBreak; + + message << "Is Component" << selectedNode.isComponent(); + message << lineBreak; + + message << "Node Source Type" << selectedNode.nodeSourceType(); + message << lineBreak; + + message << lineBreak; + for (const PropertyName &name : selectedNode.metaInfo().slotNames()) message << name << " "; From ee3a0ecb7531073a7c1ba3b08cfd9ace61ba569b Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 5 Oct 2020 17:20:41 +0300 Subject: [PATCH 17/19] Android: add qmake variables to completion assistant Add Android specific qmake variables to profile completion assistant. Change-Id: I1c4c25bfa7481fed511f48360e93fb5996b42401 Reviewed-by: Alessandro Portale --- .../profilecompletionassist.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/plugins/qmakeprojectmanager/profilecompletionassist.cpp b/src/plugins/qmakeprojectmanager/profilecompletionassist.cpp index ec405f67f7c..c070f2aea6e 100644 --- a/src/plugins/qmakeprojectmanager/profilecompletionassist.cpp +++ b/src/plugins/qmakeprojectmanager/profilecompletionassist.cpp @@ -31,6 +31,23 @@ const TextEditor::Keywords &QmakeProjectManager::Internal::qmakeKeywords() { static TextEditor::Keywords keywords( QStringList{ // variables + "ANDROID_ABIS", + "ANDROID_API_VERSION", + "ANDROID_APPLICATION_ARGUMENTS", + "ANDROID_BUNDLED_JAR_DEPENDENCIES", + "ANDROID_DEPLOYMENT_DEPENDENCIES", + "ANDROID_DEPLOYMENT_SETTINGS_FILE", + "ANDROID_EXTRA_LIBS", + "ANDROID_EXTRA_PLUGINS", + "ANDROID_FEATURES", + "ANDROID_LIB_DEPENDENCIES", + "ANDROID_MIN_SDK_VERSION", + "ANDROID_PACKAGE_SOURCE_DIR", + "ANDROID_PERMISSIONS", + "ANDROID_TARGET_SDK_VERSION", + "ANDROID_TARGET_ARCH", + "ANDROID_VERSION_CODE", + "ANDROID_VERSION_NAME", "ARGC", "ARGS", "BUILDS", From 430a9a03b78ff71400ed2837b8cdb4ae50597c4e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 5 Oct 2020 14:01:40 +0200 Subject: [PATCH 18/19] Utils: Add workaround for sdktool Which is compiled against an older Qt version to keep it more compatible. Change-Id: Ifee61a524055ca383c83da9f237e50536a3fd0cb Reviewed-by: hjk --- src/libs/utils/qtcprocess.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index f70b46b1d83..a65c61d53e6 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -663,7 +663,13 @@ bool QtcProcess::prepareCommand(const QString &command, const QString &arguments } else { if (err != QtcProcess::FoundMeta) return false; +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) *outCmd = qEnvironmentVariable("SHELL", "/bin/sh"); +#else + // for sdktool + *outCmd = qEnvironmentVariableIsSet("SHELL") ? QString::fromLocal8Bit(qgetenv("SHELL")) + : QString("/bin/sh"); +#endif *outArgs = Arguments::createUnixArgs( QStringList({"-c", (quoteArg(command) + ' ' + arguments)})); } From 97c6c13dcbb082f4aab2e94d329c843b475b004b Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 2 Oct 2020 17:53:39 +0200 Subject: [PATCH 19/19] ProjectExplorer: Remove BuildStepConfigWidget After the previous changes it was only an empty wrapper around QWidget. Change-Id: I58dcd82d8342c7de5e2df537044f6cf3de878a67 Reviewed-by: Christian Kandeler --- src/plugins/android/androidbuildapkstep.cpp | 6 +++--- src/plugins/android/androidbuildapkstep.h | 2 +- src/plugins/android/androiddeployqtstep.cpp | 4 ++-- src/plugins/android/androiddeployqtstep.h | 2 +- .../cmakeprojectmanager/cmakebuildstep.cpp | 4 ++-- .../cmakeprojectmanager/cmakebuildstep.h | 2 +- src/plugins/ios/iosbuildstep.cpp | 6 +++--- src/plugins/ios/iosdeploystep.cpp | 6 +++--- src/plugins/ios/iosdsymbuildstep.cpp | 4 ++-- src/plugins/ios/iosdsymbuildstep.h | 2 +- .../project/ninjabuildstep.cpp | 4 ++-- .../project/ninjabuildstep.h | 2 +- src/plugins/nim/project/nimbletaskstep.cpp | 6 +++--- .../nim/project/nimcompilerbuildstep.cpp | 4 ++-- .../nim/project/nimcompilerbuildstep.h | 2 +- src/plugins/projectexplorer/buildstep.cpp | 20 +++++++------------ src/plugins/projectexplorer/buildstep.h | 11 +--------- src/plugins/projectexplorer/buildstepspage.h | 2 +- src/plugins/projectexplorer/makestep.cpp | 4 ++-- src/plugins/projectexplorer/makestep.h | 6 +----- .../qbsprojectmanager/qbsbuildstep.cpp | 5 ++--- src/plugins/qbsprojectmanager/qbsbuildstep.h | 2 +- .../qbsprojectmanager/qbsinstallstep.cpp | 4 ++-- .../qbsprojectmanager/qbsinstallstep.h | 2 +- src/plugins/qmakeprojectmanager/qmakestep.cpp | 4 ++-- src/plugins/qmakeprojectmanager/qmakestep.h | 2 +- src/plugins/remotelinux/makeinstallstep.cpp | 3 ++- src/plugins/remotelinux/makeinstallstep.h | 2 +- 28 files changed, 52 insertions(+), 71 deletions(-) diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index ec7e2a4fff1..d3331d5994c 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -127,7 +127,7 @@ private: // AndroidBuildApkWidget -class AndroidBuildApkWidget : public BuildStepConfigWidget +class AndroidBuildApkWidget : public QWidget { Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidBuildApkStep) @@ -157,7 +157,7 @@ private: }; AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) - : BuildStepConfigWidget(step), m_step(step) + : m_step(step) { auto vbox = new QVBoxLayout(this); vbox->addWidget(createSignPackageGroup()); @@ -662,7 +662,7 @@ void AndroidBuildApkStep::showInGraphicalShell() Core::FileUtils::showInGraphicalShell(Core::ICore::dialogParent(), m_packagePath); } -ProjectExplorer::BuildStepConfigWidget *AndroidBuildApkStep::createConfigWidget() +QWidget *AndroidBuildApkStep::createConfigWidget() { return new AndroidBuildApkWidget(this); } diff --git a/src/plugins/android/androidbuildapkstep.h b/src/plugins/android/androidbuildapkstep.h index d4f94d4f22d..f17703ab654 100644 --- a/src/plugins/android/androidbuildapkstep.h +++ b/src/plugins/android/androidbuildapkstep.h @@ -83,7 +83,7 @@ private: bool init() override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; void processStarted() override; void processFinished(int exitCode, QProcess::ExitStatus status) override; bool verifyKeystorePassword(); diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 25490bb0923..0de5dc0d46b 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -473,9 +473,9 @@ void AndroidDeployQtStep::runCommand(const CommandLine &command) } } -BuildStepConfigWidget *AndroidDeployQtStep::createConfigWidget() +QWidget *AndroidDeployQtStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; setDisplayName(QString("%1").arg(displayName())); setSummaryText(displayName()); diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index 05aca18da77..450213de5a4 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -87,7 +87,7 @@ private: bool runImpl(); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; void processReadyReadStdOutput(DeployErrorCode &errorCode); void stdOutput(const QString &line); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index ee42a409659..9702c880b44 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -432,9 +432,9 @@ QString CMakeBuildStep::activeRunConfigTarget() const return rc ? rc->buildKey() : QString(); } -BuildStepConfigWidget *CMakeBuildStep::createConfigWidget() +QWidget *CMakeBuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto updateDetails = [this] { ProcessParameters param; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index f203914c088..caaddf7d446 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -89,7 +89,7 @@ private: bool init() override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void doRun() override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; QString defaultBuildTarget() const; diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp index dc7c99cf8f7..7a54226e068 100644 --- a/src/plugins/ios/iosbuildstep.cpp +++ b/src/plugins/ios/iosbuildstep.cpp @@ -69,7 +69,7 @@ public: IosBuildStep(BuildStepList *stepList, Utils::Id id); private: - BuildStepConfigWidget *createConfigWidget() final; + QWidget *createConfigWidget() final; void setBaseArguments(const QStringList &args); void setExtraArguments(const QStringList &extraArgs); QStringList baseArguments() const; @@ -88,9 +88,9 @@ private: bool m_useDefaultArguments = true; }; -BuildStepConfigWidget *IosBuildStep::createConfigWidget() +QWidget *IosBuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto buildArgumentsLabel = new QLabel(tr("Base arguments:"), widget); diff --git a/src/plugins/ios/iosdeploystep.cpp b/src/plugins/ios/iosdeploystep.cpp index 3d0fa542b54..0d24378a5af 100644 --- a/src/plugins/ios/iosdeploystep.cpp +++ b/src/plugins/ios/iosdeploystep.cpp @@ -83,7 +83,7 @@ private: void updateDisplayNames(); bool init() final; - BuildStepConfigWidget *createConfigWidget() final; + QWidget *createConfigWidget() final; IDevice::ConstPtr device() const; IosDevice::ConstPtr iosdevice() const; IosSimulator::ConstPtr iossimulator() const; @@ -230,9 +230,9 @@ void IosDeployStep::handleErrorMsg(IosToolHandler *handler, const QString &msg) emit addOutput(msg, OutputFormat::ErrorMessage); } -BuildStepConfigWidget *IosDeployStep::createConfigWidget() +QWidget *IosDeployStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; widget->setObjectName("IosDeployStepWidget"); setDisplayName(QString("%1").arg(displayName())); diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp index b44388d34b3..25a538665dd 100644 --- a/src/plugins/ios/iosdsymbuildstep.cpp +++ b/src/plugins/ios/iosdsymbuildstep.cpp @@ -203,9 +203,9 @@ QStringList IosDsymBuildStep::arguments() const } -BuildStepConfigWidget *IosDsymBuildStep::createConfigWidget() +QWidget *IosDsymBuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto commandLabel = new QLabel(tr("Command:"), widget); diff --git a/src/plugins/ios/iosdsymbuildstep.h b/src/plugins/ios/iosdsymbuildstep.h index 17def1eaa5d..2a92a0187cf 100644 --- a/src/plugins/ios/iosdsymbuildstep.h +++ b/src/plugins/ios/iosdsymbuildstep.h @@ -39,7 +39,7 @@ class IosDsymBuildStep : public ProjectExplorer::AbstractProcessStep public: IosDsymBuildStep(ProjectExplorer::BuildStepList *parent, Utils::Id id); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; void setArguments(const QStringList &args); QStringList arguments() const; QStringList defaultArguments() const; diff --git a/src/plugins/mesonprojectmanager/project/ninjabuildstep.cpp b/src/plugins/mesonprojectmanager/project/ninjabuildstep.cpp index c353b45cfdd..931d7de2797 100644 --- a/src/plugins/mesonprojectmanager/project/ninjabuildstep.cpp +++ b/src/plugins/mesonprojectmanager/project/ninjabuildstep.cpp @@ -70,9 +70,9 @@ NinjaBuildStep::NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id &NinjaBuildStep::commandChanged); } -BuildStepConfigWidget *NinjaBuildStep::createConfigWidget() +QWidget *NinjaBuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget{this}; + auto widget = new QWidget; setDisplayName(tr("Build", "MesonProjectManager::MesonBuildStepConfigWidget display name.")); auto buildTargetsList = new QListWidget(widget); diff --git a/src/plugins/mesonprojectmanager/project/ninjabuildstep.h b/src/plugins/mesonprojectmanager/project/ninjabuildstep.h index a112a6d6bb2..f9a41fcf856 100644 --- a/src/plugins/mesonprojectmanager/project/ninjabuildstep.h +++ b/src/plugins/mesonprojectmanager/project/ninjabuildstep.h @@ -38,7 +38,7 @@ class NinjaBuildStep final : public ProjectExplorer::AbstractProcessStep public: NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() final; + QWidget *createConfigWidget() final; Utils::CommandLine command(); QStringList projectTargets(); void setBuildTarget(const QString &targetName); diff --git a/src/plugins/nim/project/nimbletaskstep.cpp b/src/plugins/nim/project/nimbletaskstep.cpp index 9f347bcb716..1cb0505089a 100644 --- a/src/plugins/nim/project/nimbletaskstep.cpp +++ b/src/plugins/nim/project/nimbletaskstep.cpp @@ -60,7 +60,7 @@ public: NimbleTaskStep(BuildStepList *parentList, Id id); private: - BuildStepConfigWidget *createConfigWidget() final; + QWidget *createConfigWidget() final; void setTaskName(const QString &name); @@ -100,9 +100,9 @@ NimbleTaskStep::NimbleTaskStep(BuildStepList *parentList, Id id) m_taskArgs->setLabelText(tr("Task arguments:")); } -BuildStepConfigWidget *NimbleTaskStep::createConfigWidget() +QWidget *NimbleTaskStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto taskList = new QListView(widget); taskList->setFrameShape(QFrame::StyledPanel); diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp index 940a1c9cd78..c956186bf29 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.cpp +++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp @@ -107,9 +107,9 @@ void NimCompilerBuildStep::setupOutputFormatter(OutputFormatter *formatter) AbstractProcessStep::setupOutputFormatter(formatter); } -BuildStepConfigWidget *NimCompilerBuildStep::createConfigWidget() +QWidget *NimCompilerBuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; setDisplayName(tr("Nim build step")); setSummaryText(tr("Nim build step")); diff --git a/src/plugins/nim/project/nimcompilerbuildstep.h b/src/plugins/nim/project/nimcompilerbuildstep.h index e548790d804..398792522bc 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.h +++ b/src/plugins/nim/project/nimcompilerbuildstep.h @@ -46,7 +46,7 @@ public: private: void setupOutputFormatter(Utils::OutputFormatter *formatter) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index bac71d4766f..d5aaf6ea783 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -157,17 +157,15 @@ void BuildStep::cancel() doCancel(); } -BuildStepConfigWidget *BuildStep::createConfigWidget() +QWidget *BuildStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; - { - LayoutBuilder builder(widget); - for (BaseAspect *aspect : qAsConst(m_aspects)) { - if (aspect->isVisible()) - aspect->addToLayout(builder.finishRow()); - connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary); - } + LayoutBuilder builder(widget); + for (BaseAspect *aspect : qAsConst(m_aspects)) { + if (aspect->isVisible()) + aspect->addToLayout(builder.finishRow()); + connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary); } connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, @@ -483,10 +481,6 @@ BuildStep *BuildStepFactory::restore(BuildStepList *parent, const QVariantMap &m return bs; } -BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *) -{ -} - QString BuildStep::summaryText() const { if (m_summaryText.isEmpty()) diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 4dc5f856001..6fda3e7b035 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -50,12 +50,10 @@ class OutputFormatter; namespace ProjectExplorer { class BuildConfiguration; -class BuildStepConfigWidget; class BuildStepFactory; class BuildStepList; class BuildSystem; class DeployConfiguration; -class Target; class Task; // Documentation inside. @@ -72,7 +70,7 @@ public: virtual bool init() = 0; void run(); void cancel(); - virtual BuildStepConfigWidget *createConfigWidget(); + virtual QWidget *createConfigWidget(); bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; @@ -231,13 +229,6 @@ private: bool m_isRepeatable = true; }; -class PROJECTEXPLORER_EXPORT BuildStepConfigWidget : public QWidget -{ - Q_OBJECT -public: - explicit BuildStepConfigWidget(BuildStep *step); -}; - } // namespace ProjectExplorer Q_DECLARE_METATYPE(ProjectExplorer::BuildStep::OutputFormat) diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h index 2a94895176c..0f8ee879ec0 100644 --- a/src/plugins/projectexplorer/buildstepspage.h +++ b/src/plugins/projectexplorer/buildstepspage.h @@ -82,7 +82,7 @@ public: ~BuildStepsWidgetData(); BuildStep *step; - BuildStepConfigWidget *widget; + QWidget *widget; Utils::DetailsWidget *detailsWidget; ToolWidget *toolWidget; }; diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index 1818b7f3902..86c1fe74a82 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -342,9 +342,9 @@ CommandLine MakeStep::effectiveMakeCommand(MakeCommandType type) const return cmd; } -BuildStepConfigWidget *MakeStep::createConfigWidget() +QWidget *MakeStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto targetsLabel = new QLabel(widget); targetsLabel->setText(tr("Targets:")); diff --git a/src/plugins/projectexplorer/makestep.h b/src/plugins/projectexplorer/makestep.h index 9db7b571175..690b3415f58 100644 --- a/src/plugins/projectexplorer/makestep.h +++ b/src/plugins/projectexplorer/makestep.h @@ -34,8 +34,6 @@ namespace Utils { class Environment; } namespace ProjectExplorer { -namespace Internal { class MakeStepConfigWidget; } - class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT @@ -52,7 +50,7 @@ public: bool init() override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; bool buildsTarget(const QString &target) const; void setBuildTarget(const QString &target, bool on); QStringList availableTargets() const; @@ -86,8 +84,6 @@ protected: virtual QStringList displayArguments() const; private: - friend class Internal::MakeStepConfigWidget; - static int defaultJobCount(); QStringList jobArguments() const; diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 70e9c420bfa..b5830a362c2 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -72,7 +72,7 @@ using namespace Utils; namespace QbsProjectManager { namespace Internal { -class QbsBuildStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget +class QbsBuildStepConfigWidget : public QWidget { Q_OBJECT public: @@ -191,7 +191,7 @@ void QbsBuildStep::doRun() parseProject(); } -ProjectExplorer::BuildStepConfigWidget *QbsBuildStep::createConfigWidget() +QWidget *QbsBuildStep::createConfigWidget() { return new QbsBuildStepConfigWidget(this); } @@ -544,7 +544,6 @@ void QbsBuildStep::dropSession() // -------------------------------------------------------------------- QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) : - BuildStepConfigWidget(step), m_qbsStep(step), m_ignoreChange(false) { diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h index cdb0f94b1dc..b70af720b69 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.h +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h @@ -83,7 +83,7 @@ private: void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void doRun() override; void doCancel() override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp index 925b6edea4b..19cf5c76f49 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp @@ -179,9 +179,9 @@ QbsBuildStepData QbsInstallStep::stepData() const return data; } -BuildStepConfigWidget *QbsInstallStep::createConfigWidget() +QWidget *QbsInstallStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto installRootValueLabel = new QLabel(installRoot()); diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.h b/src/plugins/qbsprojectmanager/qbsinstallstep.h index 5ef48876e3a..537b7053e63 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.h +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.h @@ -54,7 +54,7 @@ private: bool init() override; void doRun() override; void doCancel() override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; const QbsBuildConfiguration *buildConfig() const; void installDone(const ErrorInfo &error); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 534bc27387e..adc99837890 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -491,9 +491,9 @@ bool QMakeStep::fromMap(const QVariantMap &map) return BuildStep::fromMap(map); } -BuildStepConfigWidget *QMakeStep::createConfigWidget() +QWidget *QMakeStep::createConfigWidget() { - auto widget = new BuildStepConfigWidget(this); + auto widget = new QWidget; auto label_0 = new QLabel(tr("qmake build configuration:"), widget); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index 711cde4309b..319d035b056 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -122,7 +122,7 @@ public: bool init() override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void doRun() override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QWidget *createConfigWidget() override; void setForced(bool b); enum class ArgumentFlag { diff --git a/src/plugins/remotelinux/makeinstallstep.cpp b/src/plugins/remotelinux/makeinstallstep.cpp index 4a93bd63780..91a2d5e8d89 100644 --- a/src/plugins/remotelinux/makeinstallstep.cpp +++ b/src/plugins/remotelinux/makeinstallstep.cpp @@ -120,8 +120,9 @@ QString MakeInstallStep::displayName() return tr("Install into temporary host directory"); } -BuildStepConfigWidget *MakeInstallStep::createConfigWidget() +QWidget *MakeInstallStep::createConfigWidget() { + // Note: this intentionally skips the MakeStep::createConfigWidget() level. return BuildStep::createConfigWidget(); } diff --git a/src/plugins/remotelinux/makeinstallstep.h b/src/plugins/remotelinux/makeinstallstep.h index e0685b8dca8..fd41291de8c 100644 --- a/src/plugins/remotelinux/makeinstallstep.h +++ b/src/plugins/remotelinux/makeinstallstep.h @@ -48,7 +48,7 @@ public: private: bool fromMap(const QVariantMap &map) override; - ProjectExplorer::BuildStepConfigWidget * createConfigWidget() override; + QWidget *createConfigWidget() override; bool init() override; void finish(bool success) override; void stdError(const QString &line) override;