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(); 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() void NodeInstanceServerInterface::registerCommands()
{ {
if (isRegistered) if (isRegistered)
@@ -88,149 +97,54 @@ void NodeInstanceServerInterface::registerCommands()
isRegistered = true; isRegistered = true;
qRegisterMetaType<CreateInstancesCommand>("CreateInstancesCommand"); registerCommand<CreateInstancesCommand>("CreateInstancesCommand");
qRegisterMetaTypeStreamOperators<CreateInstancesCommand>("CreateInstancesCommand"); registerCommand<ClearSceneCommand>("ClearSceneCommand");
registerCommand<CreateSceneCommand>("CreateSceneCommand");
qRegisterMetaType<ClearSceneCommand>("ClearSceneCommand"); registerCommand<Update3dViewStateCommand>("Update3dViewStateCommand");
qRegisterMetaTypeStreamOperators<ClearSceneCommand>("ClearSceneCommand"); registerCommand<ChangeBindingsCommand>("ChangeBindingsCommand");
registerCommand<ChangeValuesCommand>("ChangeValuesCommand");
qRegisterMetaType<CreateSceneCommand>("CreateSceneCommand"); registerCommand<ChangeFileUrlCommand>("ChangeFileUrlCommand");
qRegisterMetaTypeStreamOperators<CreateSceneCommand>("CreateSceneCommand"); registerCommand<ChangeStateCommand>("ChangeStateCommand");
registerCommand<RemoveInstancesCommand>("RemoveInstancesCommand");
qRegisterMetaType<Update3dViewStateCommand>("Update3dViewStateCommand"); registerCommand<ChangeSelectionCommand>("ChangeSelectionCommand");
qRegisterMetaTypeStreamOperators<Update3dViewStateCommand>("Update3dViewStateCommand"); registerCommand<RemovePropertiesCommand>("RemovePropertiesCommand");
registerCommand<ReparentInstancesCommand>("ReparentInstancesCommand");
qRegisterMetaType<ChangeBindingsCommand>("ChangeBindingsCommand"); registerCommand<ChangeIdsCommand>("ChangeIdsCommand");
qRegisterMetaTypeStreamOperators<ChangeBindingsCommand>("ChangeBindingsCommand"); registerCommand<PropertyAbstractContainer>("PropertyAbstractContainer");
registerCommand<InformationChangedCommand>("InformationChangedCommand");
qRegisterMetaType<ChangeValuesCommand>("ChangeValuesCommand"); registerCommand<ValuesChangedCommand>("ValuesChangedCommand");
qRegisterMetaTypeStreamOperators<ChangeValuesCommand>("ChangeValuesCommand"); registerCommand<ValuesModifiedCommand>("ValuesModifiedCommand");
registerCommand<PixmapChangedCommand>("PixmapChangedCommand");
qRegisterMetaType<ChangeFileUrlCommand>("ChangeFileUrlCommand"); registerCommand<InformationContainer>("InformationContainer");
qRegisterMetaTypeStreamOperators<ChangeFileUrlCommand>("ChangeFileUrlCommand"); registerCommand<PropertyValueContainer>("PropertyValueContainer");
registerCommand<PropertyBindingContainer>("PropertyBindingContainer");
qRegisterMetaType<ChangeStateCommand>("ChangeStateCommand"); registerCommand<PropertyAbstractContainer>("PropertyAbstractContainer");
qRegisterMetaTypeStreamOperators<ChangeStateCommand>("ChangeStateCommand"); registerCommand<InstanceContainer>("InstanceContainer");
registerCommand<IdContainer>("IdContainer");
qRegisterMetaType<RemoveInstancesCommand>("RemoveInstancesCommand"); registerCommand<ChildrenChangedCommand>("ChildrenChangedCommand");
qRegisterMetaTypeStreamOperators<RemoveInstancesCommand>("RemoveInstancesCommand"); registerCommand<ImageContainer>("ImageContainer");
registerCommand<StatePreviewImageChangedCommand>("StatePreviewImageChangedCommand");
qRegisterMetaType<ChangeSelectionCommand>("ChangeSelectionCommand"); registerCommand<CompleteComponentCommand>("CompleteComponentCommand");
qRegisterMetaTypeStreamOperators<ChangeSelectionCommand>("ChangeSelectionCommand"); registerCommand<ComponentCompletedCommand>("ComponentCompletedCommand");
registerCommand<AddImportContainer>("AddImportContainer");
qRegisterMetaType<RemovePropertiesCommand>("RemovePropertiesCommand"); registerCommand<SynchronizeCommand>("SynchronizeCommand");
qRegisterMetaTypeStreamOperators<RemovePropertiesCommand>("RemovePropertiesCommand"); registerCommand<ChangeNodeSourceCommand>("ChangeNodeSourceCommand");
registerCommand<ChangeAuxiliaryCommand>("ChangeAuxiliaryCommand");
qRegisterMetaType<ReparentInstancesCommand>("ReparentInstancesCommand"); registerCommand<TokenCommand>("TokenCommand");
qRegisterMetaTypeStreamOperators<ReparentInstancesCommand>("ReparentInstancesCommand"); registerCommand<RemoveSharedMemoryCommand>("RemoveSharedMemoryCommand");
registerCommand<EndPuppetCommand>("EndPuppetCommand");
qRegisterMetaType<ChangeIdsCommand>("ChangeIdsCommand"); registerCommand<DebugOutputCommand>("DebugOutputCommand");
qRegisterMetaTypeStreamOperators<ChangeIdsCommand>("ChangeIdsCommand"); registerCommand<Enumeration>("Enumeration");
registerCommand<PuppetAliveCommand>("PuppetAliveCommand");
qRegisterMetaType<PropertyAbstractContainer>("PropertyAbstractContainer"); registerCommand<PuppetToCreatorCommand>("PuppetToCreatorCommand");
qRegisterMetaTypeStreamOperators<PropertyAbstractContainer>("PropertyAbstractContainer"); registerCommand<InputEventCommand>("InputEventCommand");
registerCommand<View3DActionCommand>("View3DActionCommand");
qRegisterMetaType<InformationChangedCommand>("InformationChangedCommand"); registerCommand<RequestModelNodePreviewImageCommand>("RequestModelNodePreviewImageCommand");
qRegisterMetaTypeStreamOperators<InformationChangedCommand>("InformationChangedCommand"); registerCommand<QPair<int, int>>("QPairIntInt");
registerCommand<ChangeLanguageCommand>("ChangeLanguageCommand");
qRegisterMetaType<ValuesChangedCommand>("ValuesChangedCommand"); registerCommand<ChangePreviewImageSizeCommand>("ChangePreviewImageSizeCommand");
qRegisterMetaTypeStreamOperators<ValuesChangedCommand>("ValuesChangedCommand"); registerCommand<CapturedDataCommand>("CapturedDataCommand");
registerCommand<SceneCreatedCommand>("SceneCreatedCommand");
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");
} }
} }

View File

@@ -230,13 +230,21 @@ void emitComponentComplete(QObject *item)
QQmlData *data = QQmlData::get(item); QQmlData *data = QQmlData::get(item);
if (data && data->context) { if (data && data->context) {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QQmlComponentAttached *componentAttached = data->context->componentAttached; QQmlComponentAttached *componentAttached = data->context->componentAttached;
#else
QQmlComponentAttached *componentAttached = data->context->componentAttacheds();
#endif
while (componentAttached) { while (componentAttached) {
if (componentAttached->parent()) if (componentAttached->parent())
if (componentAttached->parent() == item) if (componentAttached->parent() == item)
emit componentAttached->completed(); emit componentAttached->completed();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
componentAttached = componentAttached->next; componentAttached = componentAttached->next;
#else
componentAttached = componentAttached->next();
#endif
} }
} }
} }

View File

@@ -235,7 +235,11 @@ public:
QPixmap m_labelPixmap; QPixmap m_labelPixmap;
FilePath m_baseFileName; FilePath m_baseFileName;
StringAspect::ValueAcceptor m_valueAcceptor; StringAspect::ValueAcceptor m_valueAcceptor;
FancyLineEdit::ValidationFunction m_validator;
bool m_readOnly = false; bool m_readOnly = false;
bool m_undoRedoEnabled = false;
bool m_enabled = true;
bool m_showToolTipOnLabel = false; bool m_showToolTipOnLabel = false;
bool m_fileDialogOnly = false; bool m_fileDialogOnly = false;
@@ -438,6 +442,19 @@ void StringAspect::setShowToolTipOnLabel(bool show)
update(); 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 Returns the current text for the separate label in the visual
representation of this string aspect. representation of this string aspect.
@@ -536,11 +553,25 @@ void StringAspect::setReadOnly(bool readOnly)
d->m_textEditDisplay->setReadOnly(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) void StringAspect::setMacroExpanderProvider(const MacroExpanderProvider &expanderProvider)
{ {
d->m_expanderProvider = 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() void StringAspect::validateInput()
{ {
if (d->m_pathChooserDisplay) if (d->m_pathChooserDisplay)
@@ -588,6 +619,7 @@ void StringAspect::addToLayout(LayoutBuilder &builder)
d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey);
d->m_pathChooserDisplay->setEnvironment(d->m_environment); d->m_pathChooserDisplay->setEnvironment(d->m_environment);
d->m_pathChooserDisplay->setBaseDirectory(d->m_baseFileName); d->m_pathChooserDisplay->setBaseDirectory(d->m_baseFileName);
d->m_pathChooserDisplay->setEnabled(d->m_enabled);
d->m_pathChooserDisplay->setReadOnly(d->m_readOnly); d->m_pathChooserDisplay->setReadOnly(d->m_readOnly);
useMacroExpander(d->m_pathChooserDisplay->lineEdit()); useMacroExpander(d->m_pathChooserDisplay->lineEdit());
connect(d->m_pathChooserDisplay, &PathChooser::pathChanged, connect(d->m_pathChooserDisplay, &PathChooser::pathChanged,
@@ -600,7 +632,10 @@ void StringAspect::addToLayout(LayoutBuilder &builder)
d->m_lineEditDisplay->setPlaceholderText(d->m_placeHolderText); d->m_lineEditDisplay->setPlaceholderText(d->m_placeHolderText);
if (!d->m_historyCompleterKey.isEmpty()) if (!d->m_historyCompleterKey.isEmpty())
d->m_lineEditDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_lineEditDisplay->setHistoryCompleter(d->m_historyCompleterKey);
d->m_lineEditDisplay->setEnabled(d->m_enabled);
d->m_lineEditDisplay->setReadOnly(d->m_readOnly); d->m_lineEditDisplay->setReadOnly(d->m_readOnly);
if (d->m_validator)
d->m_lineEditDisplay->setValidationFunction(d->m_validator);
useMacroExpander(d->m_lineEditDisplay); useMacroExpander(d->m_lineEditDisplay);
connect(d->m_lineEditDisplay, &FancyLineEdit::textEdited, connect(d->m_lineEditDisplay, &FancyLineEdit::textEdited,
this, &StringAspect::setValue); this, &StringAspect::setValue);
@@ -609,7 +644,11 @@ void StringAspect::addToLayout(LayoutBuilder &builder)
case TextEditDisplay: case TextEditDisplay:
d->m_textEditDisplay = new QTextEdit; d->m_textEditDisplay = new QTextEdit;
d->m_textEditDisplay->setPlaceholderText(d->m_placeHolderText); d->m_textEditDisplay->setPlaceholderText(d->m_placeHolderText);
d->m_textEditDisplay->setEnabled(d->m_enabled);
d->m_textEditDisplay->setReadOnly(d->m_readOnly); 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); useMacroExpander(d->m_textEditDisplay);
connect(d->m_textEditDisplay, &QTextEdit::textChanged, this, [this] { connect(d->m_textEditDisplay, &QTextEdit::textChanged, this, [this] {
const QString value = d->m_textEditDisplay->document()->toPlainText(); const QString value = d->m_textEditDisplay->document()->toPlainText();
@@ -622,6 +661,7 @@ void StringAspect::addToLayout(LayoutBuilder &builder)
break; break;
case LabelDisplay: case LabelDisplay:
d->m_labelDisplay = new QLabel; d->m_labelDisplay = new QLabel;
d->m_labelDisplay->setEnabled(d->m_enabled);
d->m_labelDisplay->setTextInteractionFlags(Qt::TextSelectableByMouse); d->m_labelDisplay->setTextInteractionFlags(Qt::TextSelectableByMouse);
builder.addItem(d->m_labelDisplay.data()); builder.addItem(d->m_labelDisplay.data());
break; break;

View File

@@ -217,6 +217,7 @@ public:
void setLabelText(const QString &labelText); void setLabelText(const QString &labelText);
void setLabelPixmap(const QPixmap &labelPixmap); void setLabelPixmap(const QPixmap &labelPixmap);
void setShowToolTipOnLabel(bool show); void setShowToolTipOnLabel(bool show);
void setEnabled(bool enabled);
void setDisplayFilter(const std::function<QString (const QString &)> &displayFilter); void setDisplayFilter(const std::function<QString (const QString &)> &displayFilter);
void setPlaceHolderText(const QString &placeHolderText); void setPlaceHolderText(const QString &placeHolderText);
@@ -227,7 +228,9 @@ public:
void setBaseFileName(const Utils::FilePath &baseFileName); void setBaseFileName(const Utils::FilePath &baseFileName);
void setToolTip(const QString &tooltip); void setToolTip(const QString &tooltip);
void setReadOnly(bool readOnly); void setReadOnly(bool readOnly);
void setUndoRedoEnabled(bool readOnly);
void setMacroExpanderProvider(const Utils::MacroExpanderProvider &expanderProvider); void setMacroExpanderProvider(const Utils::MacroExpanderProvider &expanderProvider);
void setValidationFunction(const Utils::FancyLineEdit::ValidationFunction &validator);
void validateInput(); void validateInput();

View File

@@ -663,7 +663,13 @@ bool QtcProcess::prepareCommand(const QString &command, const QString &arguments
} else { } else {
if (err != QtcProcess::FoundMeta) if (err != QtcProcess::FoundMeta)
return false; return false;
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
*outCmd = qEnvironmentVariable("SHELL", "/bin/sh"); *outCmd = qEnvironmentVariable("SHELL", "/bin/sh");
#else
// for sdktool
*outCmd = qEnvironmentVariableIsSet("SHELL") ? QString::fromLocal8Bit(qgetenv("SHELL"))
: QString("/bin/sh");
#endif
*outArgs = Arguments::createUnixArgs( *outArgs = Arguments::createUnixArgs(
QStringList({"-c", (quoteArg(command) + ' ' + arguments)})); QStringList({"-c", (quoteArg(command) + ' ' + arguments)}));
} }

View File

@@ -54,9 +54,9 @@ namespace Utils {
*/ */
SavedAction::SavedAction(QObject *parent) 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) if (value == m_value)
return; return;
m_value = value; m_value = value;
if (this->isCheckable()) if (m_action.isCheckable())
this->setChecked(m_value.toBool()); m_action.setChecked(m_value.toBool());
if (doemit) if (doemit)
emit valueChanged(m_value); emit valueChanged(m_value);
} }
@@ -142,37 +142,14 @@ void SavedAction::setSettingsKey(const QString &key)
*/ */
void SavedAction::setSettingsKey(const QString &group, const QString &key) void SavedAction::setSettingsKey(const QString &group, const QString &key)
{ {
m_settingsKey = key; m_settingsKey = group + "/" + 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;
} }
QString SavedAction::toString() const QString SavedAction::toString() const
{ {
return QLatin1String("value: ") + m_value.toString() return QLatin1String("value: ") + m_value.toString()
+ QLatin1String(" defaultvalue: ") + m_defaultValue.toString() + QLatin1String(" defaultvalue: ") + m_defaultValue.toString()
+ QLatin1String(" settingskey: ") + m_settingsGroup + QLatin1String(" settingskey: ") + m_settingsKey;
+ QLatin1Char('/') + m_settingsKey;
} }
/* /*
@@ -183,11 +160,11 @@ QString SavedAction::toString() const
*/ */
void SavedAction::readSettings(const QSettings *settings) void SavedAction::readSettings(const QSettings *settings)
{ {
if (m_settingsGroup.isEmpty() || m_settingsKey.isEmpty()) if (m_settingsKey.isEmpty())
return; 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 // work around old ini files containing @Invalid() entries
if (isCheckable() && !var.isValid()) if (m_action.isCheckable() && !var.isValid())
var = false; var = false;
setValue(var); setValue(var);
} }
@@ -200,11 +177,9 @@ void SavedAction::readSettings(const QSettings *settings)
*/ */
void SavedAction::writeSettings(QSettings *settings) void SavedAction::writeSettings(QSettings *settings)
{ {
if (m_settingsGroup.isEmpty() || m_settingsKey.isEmpty()) if (m_settingsKey.isEmpty())
return; return;
settings->beginGroup(m_settingsGroup);
settings->setValue(m_settingsKey, m_value); 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. // Copy tooltip, but only if there's nothing explcitly set on the widget yet.
if (widget->toolTip().isEmpty()) 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) void SavedAction::actionTriggered(bool)
{ {
if (isCheckable()) if (m_action.isCheckable())
setValue(isChecked()); setValue(m_action.isChecked());
if (actionGroup() && actionGroup()->isExclusive()) { if (m_action.actionGroup() && m_action.actionGroup()->isExclusive()) {
// FIXME: should be taken care of more directly // 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) for (QAction *act : actions)
if (auto dact = qobject_cast<SavedAction *>(act)) 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) void SavedAction::trigger(const QVariant &data)
{ {
setData(data); m_action.setData(data);
QAction::trigger(); m_action.trigger();
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@@ -27,6 +27,8 @@
#include "utils_global.h" #include "utils_global.h"
#include "aspects.h"
#include <QAction> #include <QAction>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -37,7 +39,7 @@ namespace Utils {
enum ApplyMode { ImmediateApply, DeferedApply }; enum ApplyMode { ImmediateApply, DeferedApply };
class QTCREATOR_UTILS_EXPORT SavedAction : public QAction class QTCREATOR_UTILS_EXPORT SavedAction : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -57,9 +59,6 @@ public:
void setSettingsKey(const QString &key); void setSettingsKey(const QString &key);
void setSettingsKey(const QString &group, 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 readSettings(const QSettings *settings);
virtual void writeSettings(QSettings *settings); virtual void writeSettings(QSettings *settings);
@@ -72,6 +71,15 @@ public:
QString dialogText() const; QString dialogText() const;
void setDialogText(const QString &dialogText); 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: signals:
void valueChanged(const QVariant &newValue); void valueChanged(const QVariant &newValue);
@@ -81,9 +89,9 @@ private:
QVariant m_value; QVariant m_value;
QVariant m_defaultValue; QVariant m_defaultValue;
QString m_settingsKey; QString m_settingsKey;
QString m_settingsGroup;
QString m_dialogText; QString m_dialogText;
QWidget *m_widget = nullptr; QWidget *m_widget = nullptr;
QAction m_action;
}; };
class QTCREATOR_UTILS_EXPORT SavedActionSet class QTCREATOR_UTILS_EXPORT SavedActionSet

View File

@@ -127,7 +127,7 @@ private:
// AndroidBuildApkWidget // AndroidBuildApkWidget
class AndroidBuildApkWidget : public BuildStepConfigWidget class AndroidBuildApkWidget : public QWidget
{ {
Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidBuildApkStep) Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidBuildApkStep)
@@ -157,7 +157,7 @@ private:
}; };
AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step)
: BuildStepConfigWidget(step), m_step(step) : m_step(step)
{ {
auto vbox = new QVBoxLayout(this); auto vbox = new QVBoxLayout(this);
vbox->addWidget(createSignPackageGroup()); vbox->addWidget(createSignPackageGroup());
@@ -662,7 +662,7 @@ void AndroidBuildApkStep::showInGraphicalShell()
Core::FileUtils::showInGraphicalShell(Core::ICore::dialogParent(), m_packagePath); Core::FileUtils::showInGraphicalShell(Core::ICore::dialogParent(), m_packagePath);
} }
ProjectExplorer::BuildStepConfigWidget *AndroidBuildApkStep::createConfigWidget() QWidget *AndroidBuildApkStep::createConfigWidget()
{ {
return new AndroidBuildApkWidget(this); return new AndroidBuildApkWidget(this);
} }

View File

@@ -83,7 +83,7 @@ private:
bool init() override; bool init() override;
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
void processStarted() override; void processStarted() override;
void processFinished(int exitCode, QProcess::ExitStatus status) override; void processFinished(int exitCode, QProcess::ExitStatus status) override;
bool verifyKeystorePassword(); 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())); setDisplayName(QString("<b>%1</b>").arg(displayName()));
setSummaryText(displayName()); setSummaryText(displayName());

View File

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

View File

@@ -196,6 +196,8 @@ void ClangEditorDocumentProcessor::updateCodeWarnings(
uint documentRevision) uint documentRevision)
{ {
if (documentRevision == revision()) { if (documentRevision == revision()) {
if (m_invalidationState == InvalidationState::Scheduled)
m_invalidationState = InvalidationState::Canceled;
m_diagnosticManager.processNewDiagnostics(diagnostics, m_isProjectFile); m_diagnosticManager.processNewDiagnostics(diagnostics, m_isProjectFile);
const auto codeWarnings = m_diagnosticManager.takeExtraSelections(); const auto codeWarnings = m_diagnosticManager.takeExtraSelections();
const auto fixitAvailableMarkers = m_diagnosticManager.takeFixItAvailableMarkers(); const auto fixitAvailableMarkers = m_diagnosticManager.takeFixItAvailableMarkers();
@@ -298,11 +300,14 @@ TextEditor::QuickFixOperations ClangEditorDocumentProcessor::extraRefactoringOpe
void ClangEditorDocumentProcessor::editorDocumentTimerRestarted() void ClangEditorDocumentProcessor::editorDocumentTimerRestarted()
{ {
m_updateBackendDocumentTimer.stop(); // Wait for the next call to run(). m_updateBackendDocumentTimer.stop(); // Wait for the next call to run().
m_invalidationState = InvalidationState::Scheduled;
} }
void ClangEditorDocumentProcessor::invalidateDiagnostics() void ClangEditorDocumentProcessor::invalidateDiagnostics()
{ {
m_diagnosticManager.invalidateDiagnostics(); if (m_invalidationState != InvalidationState::Canceled)
m_diagnosticManager.invalidateDiagnostics();
m_invalidationState = InvalidationState::Off;
} }
TextEditor::TextMarks ClangEditorDocumentProcessor::diagnosticTextMarksAt(uint line, TextEditor::TextMarks ClangEditorDocumentProcessor::diagnosticTextMarksAt(uint line,

View File

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

View File

@@ -432,9 +432,9 @@ QString CMakeBuildStep::activeRunConfigTarget() const
return rc ? rc->buildKey() : QString(); return rc ? rc->buildKey() : QString();
} }
BuildStepConfigWidget *CMakeBuildStep::createConfigWidget() QWidget *CMakeBuildStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
auto updateDetails = [this] { auto updateDetails = [this] {
ProcessParameters param; ProcessParameters param;

View File

@@ -89,7 +89,7 @@ private:
bool init() override; bool init() override;
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
void doRun() override; void doRun() override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
QString defaultBuildTarget() const; QString defaultBuildTarget() const;

View File

@@ -1671,9 +1671,9 @@ bool BreakHandler::contextMenuEvent(const ItemViewEvent &ev)
menu->addSeparator(); menu->addSeparator();
menu->addAction(action(UseToolTipsInBreakpointsView)); menu->addAction(action(UseToolTipsInBreakpointsView)->action());
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
@@ -2632,9 +2632,9 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev)
menu->addSeparator(); menu->addSeparator();
menu->addAction(action(UseToolTipsInBreakpointsView)); menu->addAction(action(UseToolTipsInBreakpointsView)->action());
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());

View File

@@ -204,7 +204,7 @@ CdbEngine::CdbEngine() :
wh->addTypeFormats("QImage", imageFormats); wh->addTypeFormats("QImage", imageFormats);
wh->addTypeFormats("QImage *", imageFormats); wh->addTypeFormats("QImage *", imageFormats);
connect(action(CreateFullBacktrace), &QAction::triggered, connect(action(CreateFullBacktrace)->action(), &QAction::triggered,
this, &CdbEngine::createFullBacktrace); this, &CdbEngine::createFullBacktrace);
connect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
this, &CdbEngine::processFinished); this, &CdbEngine::processFinished);
@@ -216,7 +216,7 @@ CdbEngine::CdbEngine() :
connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, connect(action(UseDebuggingHelpers), &SavedAction::valueChanged,
this, &CdbEngine::updateLocals); this, &CdbEngine::updateLocals);
if (action(UseCodeModel)->isChecked()) if (action(UseCodeModel)->action()->isChecked())
m_codeModelSnapshot = CppTools::CppModelManager::instance()->snapshot(); m_codeModelSnapshot = CppTools::CppModelManager::instance()->snapshot();
} }

View File

@@ -203,7 +203,7 @@ public:
if (HostOsInfo::isWindowsHost()) { if (HostOsInfo::isWindowsHost()) {
SavedAction *registerAction = action(RegisterForPostMortem); SavedAction *registerAction = action(RegisterForPostMortem);
m_group.insert(registerAction, checkBoxRegisterForPostMortem); m_group.insert(registerAction, checkBoxRegisterForPostMortem);
connect(registerAction, &QAction::toggled, connect(registerAction->action(), &QAction::toggled,
checkBoxRegisterForPostMortem, &QAbstractButton::setChecked); checkBoxRegisterForPostMortem, &QAbstractButton::setChecked);
} else { } else {
checkBoxRegisterForPostMortem->setVisible(false); checkBoxRegisterForPostMortem->setVisible(false);

View File

@@ -108,9 +108,9 @@ Console::Console()
m_showDebugButtonAction->setCheckable(true); m_showDebugButtonAction->setCheckable(true);
m_showDebugButtonAction->setChecked(true); m_showDebugButtonAction->setChecked(true);
m_showDebugButtonAction->setIcon(Utils::Icons::INFO_TOOLBAR.icon()); m_showDebugButtonAction->setIcon(Utils::Icons::INFO_TOOLBAR.icon());
connect(m_showDebugButtonAction, &Utils::SavedAction::toggled, connect(m_showDebugButtonAction->action(), &QAction::toggled,
proxyModel, &ConsoleProxyModel::setShowLogs); proxyModel, &ConsoleProxyModel::setShowLogs);
m_showDebugButton->setDefaultAction(m_showDebugButtonAction); m_showDebugButton->setDefaultAction(m_showDebugButtonAction->action());
m_showWarningButton = new QToolButton(m_consoleWidget); m_showWarningButton = new QToolButton(m_consoleWidget);
@@ -121,9 +121,9 @@ Console::Console()
m_showWarningButtonAction->setCheckable(true); m_showWarningButtonAction->setCheckable(true);
m_showWarningButtonAction->setChecked(true); m_showWarningButtonAction->setChecked(true);
m_showWarningButtonAction->setIcon(Utils::Icons::WARNING_TOOLBAR.icon()); m_showWarningButtonAction->setIcon(Utils::Icons::WARNING_TOOLBAR.icon());
connect(m_showWarningButtonAction, &Utils::SavedAction::toggled, connect(m_showWarningButtonAction->action(), &QAction::toggled,
proxyModel, &ConsoleProxyModel::setShowWarnings); proxyModel, &ConsoleProxyModel::setShowWarnings);
m_showWarningButton->setDefaultAction(m_showWarningButtonAction); m_showWarningButton->setDefaultAction(m_showWarningButtonAction->action());
m_showErrorButton = new QToolButton(m_consoleWidget); m_showErrorButton = new QToolButton(m_consoleWidget);
@@ -134,9 +134,9 @@ Console::Console()
m_showErrorButtonAction->setCheckable(true); m_showErrorButtonAction->setCheckable(true);
m_showErrorButtonAction->setChecked(true); m_showErrorButtonAction->setChecked(true);
m_showErrorButtonAction->setIcon(Utils::Icons::CRITICAL_TOOLBAR.icon()); m_showErrorButtonAction->setIcon(Utils::Icons::CRITICAL_TOOLBAR.icon());
connect(m_showErrorButtonAction, &Utils::SavedAction::toggled, connect(m_showErrorButtonAction->action(), &QAction::toggled,
proxyModel, &ConsoleProxyModel::setShowErrors); proxyModel, &ConsoleProxyModel::setShowErrors);
m_showErrorButton->setDefaultAction(m_showErrorButtonAction); m_showErrorButton->setDefaultAction(m_showErrorButtonAction->action());
m_spacer = new QWidget(m_consoleWidget); m_spacer = new QWidget(m_consoleWidget);
m_spacer->setMinimumWidth(30); m_spacer->setMinimumWidth(30);

View File

@@ -1197,7 +1197,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments)
this, &DebuggerPluginPrivate::updateBreakMenuItem); this, &DebuggerPluginPrivate::updateBreakMenuItem);
// Application interaction // Application interaction
connect(action(SettingsDialog), &QAction::triggered, connect(action(SettingsDialog)->action(), &QAction::triggered,
[] { ICore::showOptionsDialog(DEBUGGER_COMMON_SETTINGS_ID); }); [] { ICore::showOptionsDialog(DEBUGGER_COMMON_SETTINGS_ID); });
m_perspective.useSubPerspectiveSwitcher(EngineManager::engineChooser()); m_perspective.useSubPerspectiveSwitcher(EngineManager::engineChooser());
@@ -2047,7 +2047,7 @@ SavedAction *DebuggerPluginPrivate::action(int code)
QWidget *DebuggerPluginPrivate::addSearch(BaseTreeView *treeView) QWidget *DebuggerPluginPrivate::addSearch(BaseTreeView *treeView)
{ {
QAction *act = action(UseAlternatingRowColors); QAction *act = action(UseAlternatingRowColors)->action();
treeView->setAlternatingRowColors(act->isChecked()); treeView->setAlternatingRowColors(act->isChecked());
treeView->setProperty(PerspectiveState::savesHeaderKey(), true); treeView->setProperty(PerspectiveState::savesHeaderKey(), true);
connect(act, &QAction::toggled, treeView, &BaseTreeView::setAlternatingRowColors); connect(act, &QAction::toggled, treeView, &BaseTreeView::setAlternatingRowColors);

View File

@@ -135,7 +135,7 @@ GdbEngine::GdbEngine()
connect(action(AutoDerefPointers), &SavedAction::valueChanged, connect(action(AutoDerefPointers), &SavedAction::valueChanged,
this, &GdbEngine::reloadLocals); this, &GdbEngine::reloadLocals);
connect(action(CreateFullBacktrace), &QAction::triggered, connect(action(CreateFullBacktrace)->action(), &QAction::triggered,
this, &GdbEngine::createFullBacktrace); this, &GdbEngine::createFullBacktrace);
connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, connect(action(UseDebuggingHelpers), &SavedAction::valueChanged,
this, &GdbEngine::reloadLocals); this, &GdbEngine::reloadLocals);

View File

@@ -89,7 +89,7 @@ LldbEngine::LldbEngine()
connect(action(AutoDerefPointers), &SavedAction::valueChanged, connect(action(AutoDerefPointers), &SavedAction::valueChanged,
this, &LldbEngine::updateLocals); this, &LldbEngine::updateLocals);
connect(action(CreateFullBacktrace), &QAction::triggered, connect(action(CreateFullBacktrace)->action(), &QAction::triggered,
this, &LldbEngine::fetchFullBacktrace); this, &LldbEngine::fetchFullBacktrace);
connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, connect(action(UseDebuggingHelpers), &SavedAction::valueChanged,
this, &LldbEngine::updateLocals); this, &LldbEngine::updateLocals);

View File

@@ -220,10 +220,10 @@ public:
QMenu *menu = createStandardContextMenu(); QMenu *menu = createStandardContextMenu();
menu->addAction(m_clearContentsAction); menu->addAction(m_clearContentsAction);
menu->addAction(m_saveContentsAction); // X11 clipboard is unreliable for long texts 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->addAction(m_reloadDebuggingHelpersAction);
menu->addSeparator(); menu->addSeparator();
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->exec(ev->globalPos()); menu->exec(ev->globalPos());
delete menu; delete menu;
} }

View File

@@ -224,7 +224,7 @@ bool ModulesModel::contextMenuEvent(const ItemViewEvent &ev)
[this, modulePath] { engine->requestModuleSections(modulePath); }); [this, modulePath] { engine->requestModuleSections(modulePath); });
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; return true;

View File

@@ -787,7 +787,7 @@ bool PeripheralRegisterHandler::contextMenuEvent(const ItemViewEvent &ev)
} }
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; return true;
} }

View File

@@ -68,7 +68,7 @@ QmlInspectorAgent::QmlInspectorAgent(QmlEngine *engine, QmlDebugConnection *conn
: m_qmlEngine(engine) : m_qmlEngine(engine)
, m_inspectorToolsContext("Debugger.QmlInspector") , m_inspectorToolsContext("Debugger.QmlInspector")
, m_selectAction(new QAction(this)) , m_selectAction(new QAction(this))
, m_showAppOnTopAction(action(ShowAppOnTop)) , m_showAppOnTopAction(action(ShowAppOnTop)->action())
{ {
m_debugIdToIname.insert(WatchItem::InvalidId, "inspect"); m_debugIdToIname.insert(WatchItem::InvalidId, "inspect");
connect(action(ShowQmlObjectTree), connect(action(ShowQmlObjectTree),

View File

@@ -757,7 +757,7 @@ bool RegisterHandler::contextMenuEvent(const ItemViewEvent &ev)
addFormatAction(tr("Binary"), BinaryFormat); addFormatAction(tr("Binary"), BinaryFormat);
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; 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)); }); [this, name] { m_engine->gotoLocation(FilePath::fromString(name)); });
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; return true;
} }

View File

@@ -70,10 +70,10 @@ StackHandler::StackHandler(DebuggerEngine *engine)
setObjectName("StackModel"); setObjectName("StackModel");
setHeader({tr("Level"), tr("Function"), tr("File"), tr("Line"), tr("Address") }); 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); this, &StackHandler::reloadFullStack);
connect(action(MaximalStackDepth), &QAction::triggered, connect(action(MaximalStackDepth)->action(), &QAction::triggered,
this, &StackHandler::reloadFullStack); this, &StackHandler::reloadFullStack);
// For now there's always only "the" current thread. // For now there's always only "the" current thread.
rootItem()->appendChild(new ThreadDummyItem); rootItem()->appendChild(new ThreadDummyItem);
@@ -390,13 +390,13 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev)
frame = frameAt(row); frame = frameAt(row);
const quint64 address = frame.address; 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("Copy Contents to Clipboard"), true, [this] { copyContentsToClipboard(); });
addAction(menu, tr("Save as Task File..."), true, [this] { saveTaskFile(); }); addAction(menu, tr("Save as Task File..."), true, [this] { saveTaskFile(); });
if (m_engine->hasCapability(CreateFullBacktraceCapability)) if (m_engine->hasCapability(CreateFullBacktraceCapability))
menu->addAction(action(CreateFullBacktrace)); menu->addAction(action(CreateFullBacktrace)->action());
if (m_engine->hasCapability(AdditionalQmlStackCapability)) if (m_engine->hasCapability(AdditionalQmlStackCapability))
addAction(menu, tr("Load QML Stack"), true, [this] { m_engine->loadAdditionalQmlStack(); }); addAction(menu, tr("Load QML Stack"), true, [this] { m_engine->loadAdditionalQmlStack(); });
@@ -444,9 +444,9 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev)
} }
menu->addSeparator(); menu->addSeparator();
menu->addAction(action(UseToolTipsInStackView)); menu->addAction(action(UseToolTipsInStackView)->action());
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; return true;
} }

View File

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

View File

@@ -1738,15 +1738,15 @@ bool WatchModel::contextMenuEvent(const ItemViewEvent &ev)
menu->addSeparator(); menu->addSeparator();
menu->addAction(action(UseDebuggingHelpers)); menu->addAction(action(UseDebuggingHelpers)->action());
menu->addAction(action(UseToolTipsInLocalsView)); menu->addAction(action(UseToolTipsInLocalsView)->action());
menu->addAction(action(AutoDerefPointers)); menu->addAction(action(AutoDerefPointers)->action());
menu->addAction(action(SortStructMembers)); menu->addAction(action(SortStructMembers)->action());
menu->addAction(action(UseDynamicType)); menu->addAction(action(UseDynamicType)->action());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
Internal::addHideColumnActions(menu, ev.view()); Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog)); menu->addAction(action(SettingsDialog)->action());
connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater); connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater);
menu->popup(ev.globalPos()); menu->popup(ev.globalPos());
return true; return true;

View File

@@ -54,7 +54,7 @@ WatchTreeView::WatchTreeView(WatchType type)
connect(this, &QTreeView::expanded, this, &WatchTreeView::expandNode); connect(this, &QTreeView::expanded, this, &WatchTreeView::expandNode);
connect(this, &QTreeView::collapsed, this, &WatchTreeView::collapseNode); connect(this, &QTreeView::collapsed, this, &WatchTreeView::collapseNode);
connect(action(LogTimeStamps), &QAction::triggered, connect(action(LogTimeStamps)->action(), &QAction::triggered,
this, &WatchTreeView::updateTimeColumn); this, &WatchTreeView::updateTimeColumn);
} }

View File

@@ -1194,7 +1194,7 @@ bool FakeVimPluginPrivate::initialize()
readSettings(); readSettings();
Command *cmd = nullptr; Command *cmd = nullptr;
cmd = ActionManager::registerAction(theFakeVimSetting(ConfigUseFakeVim), cmd = ActionManager::registerAction(theFakeVimSetting(ConfigUseFakeVim)->action(),
INSTALL_HANDLER, Context(Core::Constants::C_GLOBAL), true); 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"))); 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); IosBuildStep(BuildStepList *stepList, Utils::Id id);
private: private:
BuildStepConfigWidget *createConfigWidget() final; QWidget *createConfigWidget() final;
void setBaseArguments(const QStringList &args); void setBaseArguments(const QStringList &args);
void setExtraArguments(const QStringList &extraArgs); void setExtraArguments(const QStringList &extraArgs);
QStringList baseArguments() const; QStringList baseArguments() const;
@@ -88,9 +88,9 @@ private:
bool m_useDefaultArguments = true; 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); auto buildArgumentsLabel = new QLabel(tr("Base arguments:"), widget);

View File

@@ -83,7 +83,7 @@ private:
void updateDisplayNames(); void updateDisplayNames();
bool init() final; bool init() final;
BuildStepConfigWidget *createConfigWidget() final; QWidget *createConfigWidget() final;
IDevice::ConstPtr device() const; IDevice::ConstPtr device() const;
IosDevice::ConstPtr iosdevice() const; IosDevice::ConstPtr iosdevice() const;
IosSimulator::ConstPtr iossimulator() const; IosSimulator::ConstPtr iossimulator() const;
@@ -230,9 +230,9 @@ void IosDeployStep::handleErrorMsg(IosToolHandler *handler, const QString &msg)
emit addOutput(msg, OutputFormat::ErrorMessage); emit addOutput(msg, OutputFormat::ErrorMessage);
} }
BuildStepConfigWidget *IosDeployStep::createConfigWidget() QWidget *IosDeployStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
widget->setObjectName("IosDeployStepWidget"); widget->setObjectName("IosDeployStepWidget");
setDisplayName(QString("<b>%1</b>").arg(displayName())); 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); auto commandLabel = new QLabel(tr("Command:"), widget);

View File

@@ -39,7 +39,7 @@ class IosDsymBuildStep : public ProjectExplorer::AbstractProcessStep
public: public:
IosDsymBuildStep(ProjectExplorer::BuildStepList *parent, Utils::Id id); IosDsymBuildStep(ProjectExplorer::BuildStepList *parent, Utils::Id id);
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
void setArguments(const QStringList &args); void setArguments(const QStringList &args);
QStringList arguments() const; QStringList arguments() const;
QStringList defaultArguments() const; QStringList defaultArguments() const;

View File

@@ -70,9 +70,9 @@ NinjaBuildStep::NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id
&NinjaBuildStep::commandChanged); &NinjaBuildStep::commandChanged);
} }
BuildStepConfigWidget *NinjaBuildStep::createConfigWidget() QWidget *NinjaBuildStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget{this}; auto widget = new QWidget;
setDisplayName(tr("Build", "MesonProjectManager::MesonBuildStepConfigWidget display name.")); setDisplayName(tr("Build", "MesonProjectManager::MesonBuildStepConfigWidget display name."));
auto buildTargetsList = new QListWidget(widget); auto buildTargetsList = new QListWidget(widget);

View File

@@ -38,7 +38,7 @@ class NinjaBuildStep final : public ProjectExplorer::AbstractProcessStep
public: public:
NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id); NinjaBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id);
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() final; QWidget *createConfigWidget() final;
Utils::CommandLine command(); Utils::CommandLine command();
QStringList projectTargets(); QStringList projectTargets();
void setBuildTarget(const QString &targetName); void setBuildTarget(const QString &targetName);

View File

@@ -60,7 +60,7 @@ public:
NimbleTaskStep(BuildStepList *parentList, Id id); NimbleTaskStep(BuildStepList *parentList, Id id);
private: private:
BuildStepConfigWidget *createConfigWidget() final; QWidget *createConfigWidget() final;
void setTaskName(const QString &name); void setTaskName(const QString &name);
@@ -100,9 +100,9 @@ NimbleTaskStep::NimbleTaskStep(BuildStepList *parentList, Id id)
m_taskArgs->setLabelText(tr("Task arguments:")); 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); auto taskList = new QListView(widget);
taskList->setFrameShape(QFrame::StyledPanel); taskList->setFrameShape(QFrame::StyledPanel);

View File

@@ -107,9 +107,9 @@ void NimCompilerBuildStep::setupOutputFormatter(OutputFormatter *formatter)
AbstractProcessStep::setupOutputFormatter(formatter); AbstractProcessStep::setupOutputFormatter(formatter);
} }
BuildStepConfigWidget *NimCompilerBuildStep::createConfigWidget() QWidget *NimCompilerBuildStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
setDisplayName(tr("Nim build step")); setDisplayName(tr("Nim build step"));
setSummaryText(tr("Nim build step")); setSummaryText(tr("Nim build step"));

View File

@@ -46,7 +46,7 @@ public:
private: private:
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override; QVariantMap toMap() const override;

View File

@@ -157,17 +157,15 @@ void BuildStep::cancel()
doCancel(); doCancel();
} }
BuildStepConfigWidget *BuildStep::createConfigWidget() QWidget *BuildStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
{ LayoutBuilder builder(widget);
LayoutBuilder builder(widget); for (BaseAspect *aspect : qAsConst(m_aspects)) {
for (BaseAspect *aspect : qAsConst(m_aspects)) { if (aspect->isVisible())
if (aspect->isVisible()) aspect->addToLayout(builder.finishRow());
aspect->addToLayout(builder.finishRow()); connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary);
connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary);
}
} }
connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged,
@@ -483,10 +481,6 @@ BuildStep *BuildStepFactory::restore(BuildStepList *parent, const QVariantMap &m
return bs; return bs;
} }
BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *)
{
}
QString BuildStep::summaryText() const QString BuildStep::summaryText() const
{ {
if (m_summaryText.isEmpty()) if (m_summaryText.isEmpty())

View File

@@ -50,12 +50,10 @@ class OutputFormatter;
namespace ProjectExplorer { namespace ProjectExplorer {
class BuildConfiguration; class BuildConfiguration;
class BuildStepConfigWidget;
class BuildStepFactory; class BuildStepFactory;
class BuildStepList; class BuildStepList;
class BuildSystem; class BuildSystem;
class DeployConfiguration; class DeployConfiguration;
class Target;
class Task; class Task;
// Documentation inside. // Documentation inside.
@@ -72,7 +70,7 @@ public:
virtual bool init() = 0; virtual bool init() = 0;
void run(); void run();
void cancel(); void cancel();
virtual BuildStepConfigWidget *createConfigWidget(); virtual QWidget *createConfigWidget();
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override; QVariantMap toMap() const override;
@@ -231,13 +229,6 @@ private:
bool m_isRepeatable = true; bool m_isRepeatable = true;
}; };
class PROJECTEXPLORER_EXPORT BuildStepConfigWidget : public QWidget
{
Q_OBJECT
public:
explicit BuildStepConfigWidget(BuildStep *step);
};
} // namespace ProjectExplorer } // namespace ProjectExplorer
Q_DECLARE_METATYPE(ProjectExplorer::BuildStep::OutputFormat) Q_DECLARE_METATYPE(ProjectExplorer::BuildStep::OutputFormat)

View File

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

View File

@@ -342,9 +342,9 @@ CommandLine MakeStep::effectiveMakeCommand(MakeCommandType type) const
return cmd; return cmd;
} }
BuildStepConfigWidget *MakeStep::createConfigWidget() QWidget *MakeStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
auto targetsLabel = new QLabel(widget); auto targetsLabel = new QLabel(widget);
targetsLabel->setText(tr("Targets:")); targetsLabel->setText(tr("Targets:"));

View File

@@ -34,8 +34,6 @@ namespace Utils { class Environment; }
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { class MakeStepConfigWidget; }
class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep
{ {
Q_OBJECT Q_OBJECT
@@ -52,7 +50,7 @@ public:
bool init() override; bool init() override;
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
bool buildsTarget(const QString &target) const; bool buildsTarget(const QString &target) const;
void setBuildTarget(const QString &target, bool on); void setBuildTarget(const QString &target, bool on);
QStringList availableTargets() const; QStringList availableTargets() const;
@@ -86,8 +84,6 @@ protected:
virtual QStringList displayArguments() const; virtual QStringList displayArguments() const;
private: private:
friend class Internal::MakeStepConfigWidget;
static int defaultJobCount(); static int defaultJobCount();
QStringList jobArguments() const; QStringList jobArguments() const;

View File

@@ -49,11 +49,7 @@ using namespace Utils;
namespace ProjectExplorer { namespace ProjectExplorer {
ProcessParameters::ProcessParameters() : ProcessParameters::ProcessParameters() = default;
m_macroExpander(nullptr),
m_commandMissing(false)
{
}
/*! /*!
Sets the command to run. Sets the command to run.
@@ -68,7 +64,6 @@ void ProcessParameters::setCommandLine(const CommandLine &cmdLine)
effectiveArguments(); effectiveArguments();
} }
/*! /*!
Sets the \a workingDirectory for the process for a build configuration. 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(); QString cmd = m_command.executable().toString();
if (m_macroExpander) if (m_macroExpander)
cmd = m_macroExpander->expand(cmd); cmd = m_macroExpander->expand(cmd);
return Utils::FilePath::fromString(cmd).fileName(); return FilePath::fromString(cmd).fileName();
} }
QString ProcessParameters::prettyArguments() const QString ProcessParameters::prettyArguments() const
{ {
QString margs = effectiveArguments(); QString margs = effectiveArguments();
QString workDir = effectiveWorkingDirectory().toString(); QString workDir = effectiveWorkingDirectory().toString();
Utils::QtcProcess::SplitError err; QtcProcess::SplitError err;
Utils::QtcProcess::Arguments args = QtcProcess::Arguments args =
Utils::QtcProcess::prepareArgs(margs, &err, Utils::HostOsInfo::hostOs(), &m_environment, &workDir); QtcProcess::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
if (err != Utils::QtcProcess::SplitOk) if (err != QtcProcess::SplitOk)
return margs; // Sorry, too complex - just fall back. return margs; // Sorry, too complex - just fall back.
return args.toString(); return args.toString();
} }
@@ -189,7 +184,7 @@ QString ProcessParameters::summary(const QString &displayName) const
return QString::fromLatin1("<b>%1:</b> %2 %3") return QString::fromLatin1("<b>%1:</b> %2 %3")
.arg(displayName, .arg(displayName,
Utils::QtcProcess::quoteArg(prettyCommand()), QtcProcess::quoteArg(prettyCommand()),
prettyArguments()); prettyArguments());
} }
@@ -200,7 +195,7 @@ QString ProcessParameters::summaryInWorkdir(const QString &displayName) const
return QString::fromLatin1("<b>%1:</b> %2 %3 in %4") return QString::fromLatin1("<b>%1:</b> %2 %3 in %4")
.arg(displayName, .arg(displayName,
Utils::QtcProcess::quoteArg(prettyCommand()), QtcProcess::quoteArg(prettyCommand()),
prettyArguments(), prettyArguments(),
QDir::toNativeSeparators(effectiveWorkingDirectory().toString())); QDir::toNativeSeparators(effectiveWorkingDirectory().toString()));
} }

View File

@@ -73,12 +73,12 @@ private:
Utils::FilePath m_workingDirectory; Utils::FilePath m_workingDirectory;
Utils::CommandLine m_command; Utils::CommandLine m_command;
Utils::Environment m_environment; Utils::Environment m_environment;
Utils::MacroExpander *m_macroExpander; Utils::MacroExpander *m_macroExpander = nullptr;
mutable Utils::FilePath m_effectiveWorkingDirectory; mutable Utils::FilePath m_effectiveWorkingDirectory;
mutable Utils::FilePath m_effectiveCommand; mutable Utils::FilePath m_effectiveCommand;
mutable QString m_effectiveArguments; mutable QString m_effectiveArguments;
mutable bool m_commandMissing; mutable bool m_commandMissing = false;
}; };
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -72,7 +72,7 @@ using namespace Utils;
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {
class QbsBuildStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget class QbsBuildStepConfigWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -191,7 +191,7 @@ void QbsBuildStep::doRun()
parseProject(); parseProject();
} }
ProjectExplorer::BuildStepConfigWidget *QbsBuildStep::createConfigWidget() QWidget *QbsBuildStep::createConfigWidget()
{ {
return new QbsBuildStepConfigWidget(this); return new QbsBuildStepConfigWidget(this);
} }
@@ -544,7 +544,6 @@ void QbsBuildStep::dropSession()
// -------------------------------------------------------------------- // --------------------------------------------------------------------
QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) : QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
BuildStepConfigWidget(step),
m_qbsStep(step), m_qbsStep(step),
m_ignoreChange(false) m_ignoreChange(false)
{ {

View File

@@ -83,7 +83,7 @@ private:
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
void doRun() override; void doRun() override;
void doCancel() override; void doCancel() override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override; QVariantMap toMap() const override;

View File

@@ -179,9 +179,9 @@ QbsBuildStepData QbsInstallStep::stepData() const
return data; return data;
} }
BuildStepConfigWidget *QbsInstallStep::createConfigWidget() QWidget *QbsInstallStep::createConfigWidget()
{ {
auto widget = new BuildStepConfigWidget(this); auto widget = new QWidget;
auto installRootValueLabel = new QLabel(installRoot()); auto installRootValueLabel = new QLabel(installRoot());

View File

@@ -54,7 +54,7 @@ private:
bool init() override; bool init() override;
void doRun() override; void doRun() override;
void doCancel() override; void doCancel() override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
const QbsBuildConfiguration *buildConfig() const; const QbsBuildConfiguration *buildConfig() const;
void installDone(const ErrorInfo &error); void installDone(const ErrorInfo &error);

View File

@@ -31,6 +31,23 @@ const TextEditor::Keywords &QmakeProjectManager::Internal::qmakeKeywords()
{ {
static TextEditor::Keywords keywords( static TextEditor::Keywords keywords(
QStringList{ // variables 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", "ARGC",
"ARGS", "ARGS",
"BUILDS", "BUILDS",

View File

@@ -233,6 +233,7 @@ QmakePriFile::~QmakePriFile()
void QmakePriFile::scheduleUpdate() void QmakePriFile::scheduleUpdate()
{ {
QTC_ASSERT(m_buildSystem, return);
QtSupport::ProFileCacheManager::instance()->discardFile( QtSupport::ProFileCacheManager::instance()->discardFile(
filePath().toString(), m_buildSystem->qmakeVfs()); filePath().toString(), m_buildSystem->qmakeVfs());
m_qmakeProFile->scheduleUpdate(QmakeProFile::ParseLater); m_qmakeProFile->scheduleUpdate(QmakeProFile::ParseLater);

View File

@@ -502,9 +502,9 @@ bool QMakeStep::fromMap(const QVariantMap &map)
return BuildStep::fromMap(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); auto label_0 = new QLabel(tr("qmake build configuration:"), widget);

View File

@@ -122,7 +122,7 @@ public:
bool init() override; bool init() override;
void setupOutputFormatter(Utils::OutputFormatter *formatter) override; void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
void doRun() override; void doRun() override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; QWidget *createConfigWidget() override;
void setForced(bool b); void setForced(bool b);
enum class ArgumentFlag { enum class ArgumentFlag {

View File

@@ -53,11 +53,13 @@ void BindingModel::resetModel()
{ {
beginResetModel(); beginResetModel();
clear(); clear();
setHorizontalHeaderLabels(QStringList({ tr("Item"), tr("Property"), tr("Source Item"), setHorizontalHeaderLabels(
tr("Source Property") })); QStringList({tr("Item"), tr("Property"), tr("Source Item"), tr("Source Property")}));
foreach (const ModelNode modelNode, m_selectedModelNodes) if (connectionView()->isAttached()) {
addModelNode(modelNode); for (const ModelNode modelNode : connectionView()->selectedModelNodes())
addModelNode(modelNode);
}
endResetModel(); endResetModel();
} }
@@ -100,7 +102,6 @@ void BindingModel::bindingRemoved(const BindingProperty &bindingProperty)
void BindingModel::selectionChanged(const QList<ModelNode> &selectedNodes) void BindingModel::selectionChanged(const QList<ModelNode> &selectedNodes)
{ {
m_handleDataChanged = false; m_handleDataChanged = false;
m_selectedModelNodes = selectedNodes;
resetModel(); resetModel();
m_handleDataChanged = true; m_handleDataChanged = true;
} }

View File

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

View File

@@ -128,11 +128,13 @@ void DynamicPropertiesModel::resetModel()
{ {
beginResetModel(); beginResetModel();
clear(); clear();
setHorizontalHeaderLabels(QStringList({ tr("Item"), tr("Property"), tr("Property Type"), setHorizontalHeaderLabels(
tr("Property Value") })); QStringList({tr("Item"), tr("Property"), tr("Property Type"), tr("Property Value")}));
foreach (const ModelNode modelNode, m_selectedModelNodes) if (connectionView()->isAttached()) {
addModelNode(modelNode); for (const ModelNode modelNode : connectionView()->selectedModelNodes())
addModelNode(modelNode);
}
endResetModel(); endResetModel();
} }
@@ -279,7 +281,6 @@ void DynamicPropertiesModel::bindingRemoved(const BindingProperty &bindingProper
void DynamicPropertiesModel::selectionChanged(const QList<ModelNode> &selectedNodes) void DynamicPropertiesModel::selectionChanged(const QList<ModelNode> &selectedNodes)
{ {
m_handleDataChanged = false; m_handleDataChanged = false;
m_selectedModelNodes = selectedNodes;
resetModel(); resetModel();
m_handleDataChanged = true; m_handleDataChanged = true;
} }

View File

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

View File

@@ -242,6 +242,18 @@ void DebugView::selectedNodesChanged(const QList<ModelNode> &selectedNodes /*sel
message << lineBreak; message << lineBreak;
message << selectedNode.metaInfo().typeName(); message << selectedNode.metaInfo().typeName();
message << lineBreak; 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()) for (const PropertyName &name : selectedNode.metaInfo().slotNames())
message << name << " "; message << name << " ";

View File

@@ -154,7 +154,7 @@ public:
bool hasSingleSelectedModelNode() const; bool hasSingleSelectedModelNode() const;
bool isSelectedModelNode(const ModelNode &modelNode) const; bool isSelectedModelNode(const ModelNode &modelNode) const;
QList<ModelNode> selectedModelNodes() const; const QList<ModelNode> selectedModelNodes() const;
ModelNode firstSelectedModelNode() const; ModelNode firstSelectedModelNode() const;
ModelNode singleSelectedModelNode() 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 Sets the list of nodes to the actual selected nodes. Returns a list of the
selected nodes. selected nodes.
*/ */
QList<ModelNode> AbstractView::selectedModelNodes() const const QList<ModelNode> AbstractView::selectedModelNodes() const
{ {
return toModelNodeList(model()->d->selectedNodes()); return toModelNodeList(model()->d->selectedNodes());
} }

View File

@@ -213,11 +213,20 @@ QmlObjectNode QmlVisualNode::createQmlObjectNode(AbstractView *view,
NodeHints hints = NodeHints::fromItemLibraryEntry(itemLibraryEntry); NodeHints hints = NodeHints::fromItemLibraryEntry(itemLibraryEntry);
const PropertyName forceNonDefaultProperty = hints.forceNonDefaultProperty().toUtf8(); 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 (!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); parentQmlItemNode.nodeListProperty(forceNonDefaultProperty).reparentHere(newNode);
}
} }
return newNode; return newNode;
@@ -288,8 +297,18 @@ QmlObjectNode QmlVisualNode::createQmlObjectNode(AbstractView *view,
newQmlObjectNode = createQmlObjectNodeFromSource(view, itemLibraryEntry.qmlSource(), position); newQmlObjectNode = createQmlObjectNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
} }
if (parentProperty.isValid()) if (parentProperty.isValid()) {
parentProperty.reparentHere(newQmlObjectNode); 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()) if (!newQmlObjectNode.isValid())
return; return;

View File

@@ -288,11 +288,8 @@ bool isListElementType(const QmlDesigner::TypeName &type)
bool isComponentType(const QmlDesigner::TypeName &type) bool isComponentType(const QmlDesigner::TypeName &type)
{ {
return type == "Component" return type == "Component" || type == "Qt.Component" || type == "QtQuick.Component"
|| type == "Qt.Component" || type == "QtQml.Component" || type == "<cpp>.QQmlComponent" || type == "QQmlComponent";
|| type == "QtQuick.Component"
|| type == "<cpp>.QQmlComponent"
|| type == "QQmlComponent";
} }
bool isCustomParserType(const QmlDesigner::TypeName &type) bool isCustomParserType(const QmlDesigner::TypeName &type)

View File

@@ -120,8 +120,9 @@ QString MakeInstallStep::displayName()
return tr("Install into temporary host directory"); return tr("Install into temporary host directory");
} }
BuildStepConfigWidget *MakeInstallStep::createConfigWidget() QWidget *MakeInstallStep::createConfigWidget()
{ {
// Note: this intentionally skips the MakeStep::createConfigWidget() level.
return BuildStep::createConfigWidget(); return BuildStep::createConfigWidget();
} }

View File

@@ -48,7 +48,7 @@ public:
private: private:
bool fromMap(const QVariantMap &map) override; bool fromMap(const QVariantMap &map) override;
ProjectExplorer::BuildStepConfigWidget * createConfigWidget() override; QWidget *createConfigWidget() override;
bool init() override; bool init() override;
void finish(bool success) override; void finish(bool success) override;
void stdError(const QString &line) override; void stdError(const QString &line) override;

View File

@@ -88,6 +88,7 @@ public:
bool eventFilter(QObject *o, QEvent *e) override; bool eventFilter(QObject *o, QEvent *e) override;
private: private:
bool requestActivationCharProposal();
void processProposalItem(AssistProposalItemInterface *proposalItem); void processProposalItem(AssistProposalItemInterface *proposalItem);
void handlePrefixExpansion(const QString &newPrefix); void handlePrefixExpansion(const QString &newPrefix);
void finalizeProposal(); 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() void CodeAssistantPrivate::process()
{ {
if (!isConfigured()) if (!isConfigured())
@@ -169,16 +183,8 @@ void CodeAssistantPrivate::process()
stopAutomaticProposalTimer(); stopAutomaticProposalTimer();
if (m_assistKind == TextEditor::Completion) { if (m_assistKind == TextEditor::Completion) {
if (m_settings.m_completionTrigger != ManualCompletion) { if (!requestActivationCharProposal())
if (CompletionAssistProvider *provider = identifyActivationSequence()) { startAutomaticProposalTimer();
if (isWaitingForProposal())
cancelCurrentRequest();
requestProposal(ActivationCharacter, Completion, provider);
return;
}
}
startAutomaticProposalTimer();
} else if (m_assistKind != FunctionHint){ } else if (m_assistKind != FunctionHint){
m_assistKind = TextEditor::Completion; m_assistKind = TextEditor::Completion;
} }
@@ -365,6 +371,8 @@ void CodeAssistantPrivate::processProposalItem(AssistProposalItemInterface *prop
proposalItem->apply(manipulator, m_proposal->basePosition()); proposalItem->apply(manipulator, m_proposal->basePosition());
destroyContext(); destroyContext();
m_editorWidget->encourageApply(); m_editorWidget->encourageApply();
if (!proposalItem->isSnippet())
requestActivationCharProposal();
} }
void CodeAssistantPrivate::handlePrefixExpansion(const QString &newPrefix) void CodeAssistantPrivate::handlePrefixExpansion(const QString &newPrefix)
@@ -404,7 +412,7 @@ void CodeAssistantPrivate::finalizeProposal()
bool CodeAssistantPrivate::isDisplayingProposal() const bool CodeAssistantPrivate::isDisplayingProposal() const
{ {
return m_proposalWidget != nullptr; return m_proposalWidget != nullptr && m_proposalWidget->isVisible();
} }
bool CodeAssistantPrivate::isWaitingForProposal() const bool CodeAssistantPrivate::isWaitingForProposal() const
@@ -457,6 +465,8 @@ void CodeAssistantPrivate::notifyChange()
m_proposalWidget->updateProposal( m_proposalWidget->updateProposal(
m_editorWidget->textAt(m_proposal->basePosition(), m_editorWidget->textAt(m_proposal->basePosition(),
m_editorWidget->position() - m_proposal->basePosition())); m_editorWidget->position() - m_proposal->basePosition()));
if (!isDisplayingProposal())
requestActivationCharProposal();
} else { } else {
destroyContext(); destroyContext();
requestProposal(ExplicitlyInvoked, m_assistKind, m_requestProvider); 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"); const QByteArray &boostLibPath = qgetenv("QTC_BOOST_LIBRARY_PATH_FOR_TEST");
if (!boostLibPath.isEmpty()) if (!boostLibPath.isEmpty())
contents += QByteArray("\nLIBS += \"-L") + boostLibPath.constData() + QByteArray("\""); 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"; includes = "#include <boost/version.hpp>\n";
} }
}; };
@@ -7502,8 +7503,8 @@ void tst_Dumpers::dumper_data()
; ;
const QtVersion jsonv1{0, 0x50e00}; const QtVersion jsonv1{0, 0x50f00};
const QtVersion jsonv2{0x50e00}; const QtVersion jsonv2{0x50f00};
QTest::newRow("QJson") QTest::newRow("QJson")
<< Data("#include <QString>\n" << Data("#include <QString>\n"