Merge remote-tracking branch 'origin/master' into 4.14

Change-Id: I4b37b89cc1dd2c53217579ea554af0fb7994fa7e
This commit is contained in:
Eike Ziller
2020-10-06 10:24:41 +02:00
70 changed files with 354 additions and 356 deletions

View File

@@ -81,6 +81,15 @@ NodeInstanceServerInterface::NodeInstanceServerInterface(QObject *parent) :
registerCommands();
}
template<typename T>
inline void registerCommand(const char *typeName)
{
qRegisterMetaType<T>(typeName);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
qRegisterMetaTypeStreamOperators<T>(typeName);
#endif
}
void NodeInstanceServerInterface::registerCommands()
{
if (isRegistered)
@@ -88,149 +97,54 @@ void NodeInstanceServerInterface::registerCommands()
isRegistered = true;
qRegisterMetaType<CreateInstancesCommand>("CreateInstancesCommand");
qRegisterMetaTypeStreamOperators<CreateInstancesCommand>("CreateInstancesCommand");
qRegisterMetaType<ClearSceneCommand>("ClearSceneCommand");
qRegisterMetaTypeStreamOperators<ClearSceneCommand>("ClearSceneCommand");
qRegisterMetaType<CreateSceneCommand>("CreateSceneCommand");
qRegisterMetaTypeStreamOperators<CreateSceneCommand>("CreateSceneCommand");
qRegisterMetaType<Update3dViewStateCommand>("Update3dViewStateCommand");
qRegisterMetaTypeStreamOperators<Update3dViewStateCommand>("Update3dViewStateCommand");
qRegisterMetaType<ChangeBindingsCommand>("ChangeBindingsCommand");
qRegisterMetaTypeStreamOperators<ChangeBindingsCommand>("ChangeBindingsCommand");
qRegisterMetaType<ChangeValuesCommand>("ChangeValuesCommand");
qRegisterMetaTypeStreamOperators<ChangeValuesCommand>("ChangeValuesCommand");
qRegisterMetaType<ChangeFileUrlCommand>("ChangeFileUrlCommand");
qRegisterMetaTypeStreamOperators<ChangeFileUrlCommand>("ChangeFileUrlCommand");
qRegisterMetaType<ChangeStateCommand>("ChangeStateCommand");
qRegisterMetaTypeStreamOperators<ChangeStateCommand>("ChangeStateCommand");
qRegisterMetaType<RemoveInstancesCommand>("RemoveInstancesCommand");
qRegisterMetaTypeStreamOperators<RemoveInstancesCommand>("RemoveInstancesCommand");
qRegisterMetaType<ChangeSelectionCommand>("ChangeSelectionCommand");
qRegisterMetaTypeStreamOperators<ChangeSelectionCommand>("ChangeSelectionCommand");
qRegisterMetaType<RemovePropertiesCommand>("RemovePropertiesCommand");
qRegisterMetaTypeStreamOperators<RemovePropertiesCommand>("RemovePropertiesCommand");
qRegisterMetaType<ReparentInstancesCommand>("ReparentInstancesCommand");
qRegisterMetaTypeStreamOperators<ReparentInstancesCommand>("ReparentInstancesCommand");
qRegisterMetaType<ChangeIdsCommand>("ChangeIdsCommand");
qRegisterMetaTypeStreamOperators<ChangeIdsCommand>("ChangeIdsCommand");
qRegisterMetaType<PropertyAbstractContainer>("PropertyAbstractContainer");
qRegisterMetaTypeStreamOperators<PropertyAbstractContainer>("PropertyAbstractContainer");
qRegisterMetaType<InformationChangedCommand>("InformationChangedCommand");
qRegisterMetaTypeStreamOperators<InformationChangedCommand>("InformationChangedCommand");
qRegisterMetaType<ValuesChangedCommand>("ValuesChangedCommand");
qRegisterMetaTypeStreamOperators<ValuesChangedCommand>("ValuesChangedCommand");
qRegisterMetaType<ValuesModifiedCommand>("ValuesModifiedCommand");
qRegisterMetaTypeStreamOperators<ValuesModifiedCommand>("ValuesModifiedCommand");
qRegisterMetaType<PixmapChangedCommand>("PixmapChangedCommand");
qRegisterMetaTypeStreamOperators<PixmapChangedCommand>("PixmapChangedCommand");
qRegisterMetaType<InformationContainer>("InformationContainer");
qRegisterMetaTypeStreamOperators<InformationContainer>("InformationContainer");
qRegisterMetaType<PropertyValueContainer>("PropertyValueContainer");
qRegisterMetaTypeStreamOperators<PropertyValueContainer>("PropertyValueContainer");
qRegisterMetaType<PropertyBindingContainer>("PropertyBindingContainer");
qRegisterMetaTypeStreamOperators<PropertyBindingContainer>("PropertyBindingContainer");
qRegisterMetaType<PropertyAbstractContainer>("PropertyAbstractContainer");
qRegisterMetaTypeStreamOperators<PropertyAbstractContainer>("PropertyAbstractContainer");
qRegisterMetaType<InstanceContainer>("InstanceContainer");
qRegisterMetaTypeStreamOperators<InstanceContainer>("InstanceContainer");
qRegisterMetaType<IdContainer>("IdContainer");
qRegisterMetaTypeStreamOperators<IdContainer>("IdContainer");
qRegisterMetaType<ChildrenChangedCommand>("ChildrenChangedCommand");
qRegisterMetaTypeStreamOperators<ChildrenChangedCommand>("ChildrenChangedCommand");
qRegisterMetaType<ImageContainer>("ImageContainer");
qRegisterMetaTypeStreamOperators<ImageContainer>("ImageContainer");
qRegisterMetaType<StatePreviewImageChangedCommand>("StatePreviewImageChangedCommand");
qRegisterMetaTypeStreamOperators<StatePreviewImageChangedCommand>("StatePreviewImageChangedCommand");
qRegisterMetaType<CompleteComponentCommand>("CompleteComponentCommand");
qRegisterMetaTypeStreamOperators<CompleteComponentCommand>("CompleteComponentCommand");
qRegisterMetaType<ComponentCompletedCommand>("ComponentCompletedCommand");
qRegisterMetaTypeStreamOperators<ComponentCompletedCommand>("ComponentCompletedCommand");
qRegisterMetaType<AddImportContainer>("AddImportContainer");
qRegisterMetaTypeStreamOperators<AddImportContainer>("AddImportContainer");
qRegisterMetaType<SynchronizeCommand>("SynchronizeCommand");
qRegisterMetaTypeStreamOperators<SynchronizeCommand>("SynchronizeCommand");
qRegisterMetaType<ChangeNodeSourceCommand>("ChangeNodeSourceCommand");
qRegisterMetaTypeStreamOperators<ChangeNodeSourceCommand>("ChangeNodeSourceCommand");
qRegisterMetaType<ChangeAuxiliaryCommand>("ChangeAuxiliaryCommand");
qRegisterMetaTypeStreamOperators<ChangeAuxiliaryCommand>("ChangeAuxiliaryCommand");
qRegisterMetaType<TokenCommand>("TokenCommand");
qRegisterMetaTypeStreamOperators<TokenCommand>("TokenCommand");
qRegisterMetaType<RemoveSharedMemoryCommand>("RemoveSharedMemoryCommand");
qRegisterMetaTypeStreamOperators<RemoveSharedMemoryCommand>("RemoveSharedMemoryCommand");
qRegisterMetaType<EndPuppetCommand>("EndPuppetCommand");
qRegisterMetaTypeStreamOperators<EndPuppetCommand>("EndPuppetCommand");
qRegisterMetaType<DebugOutputCommand>("DebugOutputCommand");
qRegisterMetaTypeStreamOperators<DebugOutputCommand>("DebugOutputCommand");
qRegisterMetaType<Enumeration>("Enumeration");
qRegisterMetaTypeStreamOperators<Enumeration>("Enumeration");
qRegisterMetaType<PuppetAliveCommand>("PuppetAliveCommand");
qRegisterMetaTypeStreamOperators<PuppetAliveCommand>("PuppetAliveCommand");
qRegisterMetaType<PuppetToCreatorCommand>("PuppetToCreatorCommand");
qRegisterMetaTypeStreamOperators<PuppetToCreatorCommand>("PuppetToCreatorCommand");
qRegisterMetaType<InputEventCommand>("InputEventCommand");
qRegisterMetaTypeStreamOperators<InputEventCommand>("InputEventCommand");
qRegisterMetaType<View3DActionCommand>("View3DActionCommand");
qRegisterMetaTypeStreamOperators<View3DActionCommand>("View3DActionCommand");
qRegisterMetaType<RequestModelNodePreviewImageCommand>("RequestModelNodePreviewImageCommand");
qRegisterMetaTypeStreamOperators<RequestModelNodePreviewImageCommand>("RequestModelNodePreviewImageCommand");
qRegisterMetaType<QPair<int, int>>("QPairIntInt");
qRegisterMetaTypeStreamOperators<QPair<int, int>>("QPairIntInt");
qRegisterMetaType<ChangeLanguageCommand>("ChangeLanguageCommand");
qRegisterMetaTypeStreamOperators<ChangeLanguageCommand>("ChangeLanguageCommand");
qRegisterMetaType<ChangePreviewImageSizeCommand>("ChangePreviewImageSizeCommand");
qRegisterMetaTypeStreamOperators<ChangePreviewImageSizeCommand>("ChangePreviewImageSizeCommand");
qRegisterMetaType<CapturedDataCommand>("CapturedDataCommand");
qRegisterMetaTypeStreamOperators<CapturedDataCommand>("CapturedDataCommand");
qRegisterMetaType<SceneCreatedCommand>("SceneCreatedCommand");
qRegisterMetaTypeStreamOperators<SceneCreatedCommand>("SceneCreatedCommand");
registerCommand<CreateInstancesCommand>("CreateInstancesCommand");
registerCommand<ClearSceneCommand>("ClearSceneCommand");
registerCommand<CreateSceneCommand>("CreateSceneCommand");
registerCommand<Update3dViewStateCommand>("Update3dViewStateCommand");
registerCommand<ChangeBindingsCommand>("ChangeBindingsCommand");
registerCommand<ChangeValuesCommand>("ChangeValuesCommand");
registerCommand<ChangeFileUrlCommand>("ChangeFileUrlCommand");
registerCommand<ChangeStateCommand>("ChangeStateCommand");
registerCommand<RemoveInstancesCommand>("RemoveInstancesCommand");
registerCommand<ChangeSelectionCommand>("ChangeSelectionCommand");
registerCommand<RemovePropertiesCommand>("RemovePropertiesCommand");
registerCommand<ReparentInstancesCommand>("ReparentInstancesCommand");
registerCommand<ChangeIdsCommand>("ChangeIdsCommand");
registerCommand<PropertyAbstractContainer>("PropertyAbstractContainer");
registerCommand<InformationChangedCommand>("InformationChangedCommand");
registerCommand<ValuesChangedCommand>("ValuesChangedCommand");
registerCommand<ValuesModifiedCommand>("ValuesModifiedCommand");
registerCommand<PixmapChangedCommand>("PixmapChangedCommand");
registerCommand<InformationContainer>("InformationContainer");
registerCommand<PropertyValueContainer>("PropertyValueContainer");
registerCommand<PropertyBindingContainer>("PropertyBindingContainer");
registerCommand<PropertyAbstractContainer>("PropertyAbstractContainer");
registerCommand<InstanceContainer>("InstanceContainer");
registerCommand<IdContainer>("IdContainer");
registerCommand<ChildrenChangedCommand>("ChildrenChangedCommand");
registerCommand<ImageContainer>("ImageContainer");
registerCommand<StatePreviewImageChangedCommand>("StatePreviewImageChangedCommand");
registerCommand<CompleteComponentCommand>("CompleteComponentCommand");
registerCommand<ComponentCompletedCommand>("ComponentCompletedCommand");
registerCommand<AddImportContainer>("AddImportContainer");
registerCommand<SynchronizeCommand>("SynchronizeCommand");
registerCommand<ChangeNodeSourceCommand>("ChangeNodeSourceCommand");
registerCommand<ChangeAuxiliaryCommand>("ChangeAuxiliaryCommand");
registerCommand<TokenCommand>("TokenCommand");
registerCommand<RemoveSharedMemoryCommand>("RemoveSharedMemoryCommand");
registerCommand<EndPuppetCommand>("EndPuppetCommand");
registerCommand<DebugOutputCommand>("DebugOutputCommand");
registerCommand<Enumeration>("Enumeration");
registerCommand<PuppetAliveCommand>("PuppetAliveCommand");
registerCommand<PuppetToCreatorCommand>("PuppetToCreatorCommand");
registerCommand<InputEventCommand>("InputEventCommand");
registerCommand<View3DActionCommand>("View3DActionCommand");
registerCommand<RequestModelNodePreviewImageCommand>("RequestModelNodePreviewImageCommand");
registerCommand<QPair<int, int>>("QPairIntInt");
registerCommand<ChangeLanguageCommand>("ChangeLanguageCommand");
registerCommand<ChangePreviewImageSizeCommand>("ChangePreviewImageSizeCommand");
registerCommand<CapturedDataCommand>("CapturedDataCommand");
registerCommand<SceneCreatedCommand>("SceneCreatedCommand");
}
}

View File

@@ -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
}
}
}

View File

@@ -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;

View File

@@ -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<QString (const QString &)> &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();

View File

@@ -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)}));
}

View File

@@ -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);
}
@@ -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,11 +160,11 @@ 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 (isCheckable() && !var.isValid())
if (m_action.isCheckable() && !var.isValid())
var = false;
setValue(var);
}
@@ -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();
}
/*
@@ -274,7 +249,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 +304,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<QAction *> actions = actionGroup()->actions();
const QList<QAction *> actions = m_action.actionGroup()->actions();
for (QAction *act : actions)
if (auto dact = qobject_cast<SavedAction *>(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();
}
//////////////////////////////////////////////////////////////////////////

View File

@@ -27,6 +27,8 @@
#include "utils_global.h"
#include "aspects.h"
#include <QAction>
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
@@ -57,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);
@@ -72,6 +71,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);
@@ -81,9 +89,9 @@ private:
QVariant m_value;
QVariant m_defaultValue;
QString m_settingsKey;
QString m_settingsGroup;
QString m_dialogText;
QWidget *m_widget = nullptr;
QAction m_action;
};
class QTCREATOR_UTILS_EXPORT SavedActionSet

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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("<b>%1</b>").arg(displayName()));
setSummaryText(displayName());

View File

@@ -87,7 +87,7 @@ private:
bool runImpl();
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override;
QWidget *createConfigWidget() override;
void processReadyReadStdOutput(DeployErrorCode &errorCode);
void stdOutput(const QString &line);

View File

@@ -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()
{
if (m_invalidationState != InvalidationState::Canceled)
m_diagnosticManager.invalidateDiagnostics();
m_invalidationState = InvalidationState::Off;
}
TextEditor::TextMarks ClangEditorDocumentProcessor::diagnosticTextMarksAt(uint line,

View File

@@ -140,6 +140,7 @@ private:
QFutureWatcher<void> m_parserWatcher;
QTimer m_updateBackendDocumentTimer;
unsigned m_parserRevision;
enum class InvalidationState { Off, Scheduled, Canceled } m_invalidationState;
QVector<ClangBackEnd::TokenInfoContainer> m_tokenInfos;
CppTools::SemanticHighlighter m_semanticHighlighter;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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());

View File

@@ -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<int, QProcess::ExitStatus>::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();
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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),

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -70,9 +70,9 @@ StackHandler::StackHandler(DebuggerEngine *engine)
setObjectName("StackModel");
setHeader({tr("Level"), tr("Function"), tr("File"), tr("Line"), tr("Address") });
connect(action(ExpandStack), &QAction::triggered,
connect(action(ExpandStack)->action(), &QAction::triggered,
this, &StackHandler::reloadFullStack);
connect(action(MaximalStackDepth), &QAction::triggered,
connect(action(MaximalStackDepth)->action(), &QAction::triggered,
this, &StackHandler::reloadFullStack);
// For now there's always only "the" current thread.
@@ -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;
}

View File

@@ -259,7 +259,7 @@ bool ThreadsHandler::setData(const QModelIndex &idx, const QVariant &data, int r
if (ev.as<QContextMenuEvent>()) {
auto menu = new QMenu;
Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos());
return true;
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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")));

View File

@@ -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);

View File

@@ -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("<b>%1</b>").arg(displayName()));

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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"));

View File

@@ -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;

View File

@@ -157,18 +157,16 @@ 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);
}
}
connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged,
this, &BuildStep::recreateSummary);
@@ -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())

View File

@@ -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)

View File

@@ -82,7 +82,7 @@ public:
~BuildStepsWidgetData();
BuildStep *step;
BuildStepConfigWidget *widget;
QWidget *widget;
Utils::DetailsWidget *detailsWidget;
ToolWidget *toolWidget;
};

View File

@@ -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:"));

View File

@@ -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;

View File

@@ -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("<b>%1:</b> %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("<b>%1:</b> %2 %3 in %4")
.arg(displayName,
Utils::QtcProcess::quoteArg(prettyCommand()),
QtcProcess::quoteArg(prettyCommand()),
prettyArguments(),
QDir::toNativeSeparators(effectiveWorkingDirectory().toString()));
}

View File

@@ -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

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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());

View File

@@ -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);

View File

@@ -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",

View File

@@ -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);

View File

@@ -502,9 +502,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);

View File

@@ -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 {

View File

@@ -53,11 +53,13 @@ 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)
if (connectionView()->isAttached()) {
for (const ModelNode modelNode : connectionView()->selectedModelNodes())
addModelNode(modelNode);
}
endResetModel();
}
@@ -100,7 +102,6 @@ void BindingModel::bindingRemoved(const BindingProperty &bindingProperty)
void BindingModel::selectionChanged(const QList<ModelNode> &selectedNodes)
{
m_handleDataChanged = false;
m_selectedModelNodes = selectedNodes;
resetModel();
m_handleDataChanged = true;
}

View File

@@ -80,7 +80,6 @@ private:
void handleException();
private:
QList<ModelNode> m_selectedModelNodes;
ConnectionView *m_connectionView;
bool m_lock = false;
bool m_handleDataChanged = false;

View File

@@ -128,11 +128,13 @@ 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)
if (connectionView()->isAttached()) {
for (const ModelNode modelNode : connectionView()->selectedModelNodes())
addModelNode(modelNode);
}
endResetModel();
}
@@ -279,7 +281,6 @@ void DynamicPropertiesModel::bindingRemoved(const BindingProperty &bindingProper
void DynamicPropertiesModel::selectionChanged(const QList<ModelNode> &selectedNodes)
{
m_handleDataChanged = false;
m_selectedModelNodes = selectedNodes;
resetModel();
m_handleDataChanged = true;
}

View File

@@ -96,7 +96,6 @@ private:
void handleException();
private:
QList<ModelNode> m_selectedModelNodes;
ConnectionView *m_connectionView;
bool m_lock = false;
bool m_handleDataChanged = false;

View File

@@ -242,6 +242,18 @@ void DebugView::selectedNodesChanged(const QList<ModelNode> &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 << " ";

View File

@@ -154,7 +154,7 @@ public:
bool hasSingleSelectedModelNode() const;
bool isSelectedModelNode(const ModelNode &modelNode) const;
QList<ModelNode> selectedModelNodes() const;
const QList<ModelNode> selectedModelNodes() const;
ModelNode firstSelectedModelNode() const;
ModelNode singleSelectedModelNode() const;

View File

@@ -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<ModelNode> AbstractView::selectedModelNodes() const
const QList<ModelNode> AbstractView::selectedModelNodes() const
{
return toModelNodeList(model()->d->selectedNodes());
}

View File

@@ -213,12 +213,21 @@ 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;

View File

@@ -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 == "<cpp>.QQmlComponent"
|| type == "QQmlComponent";
return type == "Component" || type == "Qt.Component" || type == "QtQuick.Component"
|| type == "QtQml.Component" || type == "<cpp>.QQmlComponent" || type == "QQmlComponent";
}
bool isCustomParserType(const QmlDesigner::TypeName &type)

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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,15 +183,7 @@ 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;
}
}
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);

View File

@@ -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 <boost/version.hpp>\n";
}
};
@@ -7502,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 <QString>\n"