diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index c3491fabf68..13fd0538b0a 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -25,7 +25,6 @@ #include "layoutbuilder.h" -#include "algorithm.h" #include "aspects.h" #include "qtcassert.h" @@ -287,7 +286,6 @@ LayoutBuilder::LayoutItem::LayoutItem(const LayoutBuilder &builder) { layout = builder.createLayout(); doLayoutHelper(layout, builder.m_items); - setMargins(builder.m_withMargins, layout); } /*! @@ -386,13 +384,13 @@ LayoutBuilder &LayoutBuilder::addItem(const LayoutItem &item) return *this; } -void LayoutBuilder::doLayout(QWidget *parent) +void LayoutBuilder::doLayout(QWidget *parent, bool withMargins) const { QLayout *layout = createLayout(); parent->setLayout(layout); doLayoutHelper(layout, m_items); - setMargins(m_withMargins, layout); + setMargins(withMargins, layout); } /*! @@ -410,17 +408,15 @@ LayoutBuilder &LayoutBuilder::addItems(const LayoutItems &items) This operation can only be performed once per LayoutBuilder instance. */ -void LayoutBuilder::attachTo(QWidget *w, bool withMargins) +void LayoutBuilder::attachTo(QWidget *w, bool withMargins) const { - m_withMargins = withMargins; - doLayout(w); + doLayout(w, withMargins); } QWidget *LayoutBuilder::emerge(bool withMargins) { - m_withMargins = withMargins; auto w = new QWidget; - doLayout(w); + doLayout(w, withMargins); return w; } @@ -485,25 +481,23 @@ LayoutBuilder::AlignAsFormLabel::AlignAsFormLabel(const LayoutItem &item) namespace Layouting { -Group::Group(std::initializer_list items) +Group::Group(const LayoutBuilder &innerLayout) + : Group(Title({}), innerLayout) +{} + +Group::Group(const LayoutBuilder::Title &title, const LayoutBuilder &innerLayout) { auto box = new QGroupBox; - Column builder; - bool innerMargins = true; - for (const LayoutItem &item : items) { - if (item.specialType == LayoutBuilder::SpecialType::Title) { - box->setTitle(item.specialValue.toString()); - box->setObjectName(item.specialValue.toString()); - if (auto check = qobject_cast(item.aspect)) { - box->setCheckable(true); - box->setChecked(check->value()); - check->setHandlesGroup(box); - } - } else { - builder.addItem(item); - } + + box->setTitle(title.specialValue.toString()); + box->setObjectName(title.specialValue.toString()); + if (auto check = qobject_cast(title.aspect)) { + box->setCheckable(true); + box->setChecked(check->value()); + check->setHandlesGroup(box); } - builder.attachTo(box, innerMargins); + + innerLayout.attachTo(box, true); widget = box; } diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 3b818956baa..29b6e134810 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -110,7 +110,7 @@ public: LayoutType layoutType() const { return m_layoutType; } - void attachTo(QWidget *w, bool withMargins = true); + void attachTo(QWidget *w, bool withMargins = true) const; QWidget *emerge(bool withMargins = true); class QTCREATOR_UTILS_EXPORT Space : public LayoutItem @@ -153,12 +153,11 @@ protected: explicit LayoutBuilder(); // Adds to existing layout. QLayout *createLayout() const; - void doLayout(QWidget *parent); + void doLayout(QWidget *parent, bool withMargins) const; LayoutItems m_items; LayoutType m_layoutType; Utils::optional m_spacing; - bool m_withMargins = false; }; class QTCREATOR_UTILS_EXPORT LayoutExtender : public LayoutBuilder @@ -176,7 +175,8 @@ namespace Layouting { class QTCREATOR_UTILS_EXPORT Group : public LayoutBuilder::LayoutItem { public: - Group(std::initializer_list items); + explicit Group(const LayoutBuilder &innerLayout); + Group(const LayoutBuilder::Title &title, const LayoutBuilder &innerLayout); }; class QTCREATOR_UTILS_EXPORT Column : public LayoutBuilder diff --git a/src/plugins/autotest/ctest/ctestsettings.cpp b/src/plugins/autotest/ctest/ctestsettings.cpp index 4c8bfb643d8..88ac6335a0d 100644 --- a/src/plugins/autotest/ctest/ctestsettings.cpp +++ b/src/plugins/autotest/ctest/ctestsettings.cpp @@ -155,13 +155,15 @@ CTestSettingsPage::CTestSettingsPage(CTestSettings *settings, Utils::Id settings Row {s.stopOnFailure}, nl, Row {s.outputMode}, nl, Group { - Title(tr("Repeat tests"), &s.repeat), nl, + Title(tr("Repeat tests"), &s.repeat), Row {s.repetitionMode, s.repetitionCount}, }, nl, Group { - Title(tr("Run in parallel"), &s.parallel), nl, - Row {s.jobs}, nl, - Row {s.testLoad, s.threshold} + Title(tr("Run in parallel"), &s.parallel), + Column { + Row {s.jobs}, nl, + Row {s.testLoad, s.threshold} + } } }; diff --git a/src/plugins/autotest/qtest/qttestsettings.cpp b/src/plugins/autotest/qtest/qttestsettings.cpp index 486b831766d..24e2f34629f 100644 --- a/src/plugins/autotest/qtest/qttestsettings.cpp +++ b/src/plugins/autotest/qtest/qttestsettings.cpp @@ -134,7 +134,7 @@ QtTestSettingsPage::QtTestSettingsPage(QtTestSettings *settings, Id settingsId) }, Group { Title(QtTestSettings::tr("Benchmark Metrics")), - s.metrics + Column { s.metrics } }, }; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 25eb0544415..8847cebcbd2 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -347,12 +347,14 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildSystem *bs) : Column { m_configurationStates, Group { - cmakeConfiguration, - Row { - bc->aspect(), - bc->aspect() - }, - m_reconfigureButton, + Column { + cmakeConfiguration, + Row { + bc->aspect(), + bc->aspect() + }, + m_reconfigureButton, + } } }.setSpacing(0) }.attachTo(details, false); diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp index f03a7e5476f..1d1ebb99a39 100644 --- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp +++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp @@ -97,7 +97,7 @@ CMakeSpecificSettingsPage::CMakeSpecificSettingsPage(CMakeSpecificSettings *sett Column { Group { Title(::CMakeProjectManager::Internal::CMakeSpecificSettings::tr("Adding Files")), - s.afterAddFileSetting + Column { s.afterAddFileSetting } }, s.packageManagerAutoSetup, s.askBeforeReConfigureInitialParams, diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp index 44b60e503c7..a49c7bf7f5c 100644 --- a/src/plugins/coreplugin/systemsettings.cpp +++ b/src/plugins/coreplugin/systemsettings.cpp @@ -207,7 +207,12 @@ public: form.addRow(Span(3, Row{m_clearCrashReportsButton, m_crashReportsSizeText, Stretch()})); #endif - Column{Group{Title(tr("System")), form, Stretch()}}.attachTo(this); + Column { + Group { + Title(tr("System")), + Column { form, Stretch() } + } + }.attachTo(this); m_reloadBehavior->setCurrentIndex(EditorManager::reloadSetting()); if (HostOsInfo::isAnyUnixHost()) { diff --git a/src/plugins/cvs/cvssettings.cpp b/src/plugins/cvs/cvssettings.cpp index a84764ee49a..f3effb0816e 100644 --- a/src/plugins/cvs/cvssettings.cpp +++ b/src/plugins/cvs/cvssettings.cpp @@ -112,12 +112,14 @@ CvsSettingsPage::CvsSettingsPage(CvsSettings *settings) }, Group { Title(CvsSettings::tr("Miscellaneous")), - Form { - s.timeout, - s.diffOptions, - }, - s.promptOnSubmit, - s.describeByCommitId, + Column { + Form { + s.timeout, + s.diffOptions, + }, + s.promptOnSubmit, + s.describeByCommitId, + } }, Stretch() }.attachTo(widget); diff --git a/src/plugins/debugger/cdb/cdboptionspage.cpp b/src/plugins/debugger/cdb/cdboptionspage.cpp index 333a5d74d1b..b7fb6e36e7c 100644 --- a/src/plugins/debugger/cdb/cdboptionspage.cpp +++ b/src/plugins/debugger/cdb/cdboptionspage.cpp @@ -199,29 +199,35 @@ CdbOptionsPageWidget::CdbOptionsPageWidget() Row { Group { Title(Tr::tr("Startup")), - s.cdbAdditionalArguments, - s.useCdbConsole, - Stretch() + Column { + s.cdbAdditionalArguments, + s.useCdbConsole, + Stretch() + } }, Group { Title(Tr::tr("Various")), - s.ignoreFirstChanceAccessViolation, - s.cdbBreakOnCrtDbgReport, - s.cdbBreakPointCorrection, - s.cdbUsePythonDumper + Column { + s.ignoreFirstChanceAccessViolation, + s.cdbBreakOnCrtDbgReport, + s.cdbBreakPointCorrection, + s.cdbUsePythonDumper + } } }, Group { Title(Tr::tr("Break On")), - m_breakEventWidget + Column { m_breakEventWidget } }, Group { Title(Tr::tr("Add Exceptions to Issues View")), - s.firstChanceExceptionTaskEntry, - s.secondChanceExceptionTaskEntry + Column { + s.firstChanceExceptionTaskEntry, + s.secondChanceExceptionTaskEntry + } }, Stretch() @@ -275,8 +281,8 @@ CdbPathsPageWidget::CdbPathsPageWidget() finish(); Column { - Group { Title(Tr::tr("Symbol Paths")), m_symbolPaths }, - Group { Title(Tr::tr("Source Paths")), m_sourcePaths }, + Group { Title(Tr::tr("Symbol Paths")), Column { m_symbolPaths } }, + Group { Title(Tr::tr("Source Paths")), Column { m_sourcePaths } }, Stretch() }.attachTo(this); } diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index e467bc63801..66dad3d1a77 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -160,13 +160,16 @@ public: label, s.useCodeModel, s.showThreadNames, - Group { Title(Tr::tr("Extra Debugging Helper")), s.extraDumperFile } + Group { Title(Tr::tr("Extra Debugging Helper")), Column { s.extraDumperFile } } }; Group useHelper { Row { left, - Group { Title(Tr::tr("Debugging Helper Customization")), s.extraDumperCommands } + Group { + Title(Tr::tr("Debugging Helper Customization")), + Column { s.extraDumperCommands } + } } }; diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp index f4bd049bcbd..00c2195369c 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.cpp +++ b/src/plugins/debugger/gdb/gdboptionspage.cpp @@ -60,22 +60,30 @@ public: Group general { Title { Tr::tr("General") }, - Row { s.gdbWatchdogTimeout, Stretch() }, - s.skipKnownFrames, - s.useMessageBoxForSignals, - s.adjustBreakpointLocations, - s.useDynamicType, - s.loadGdbInit, - s.loadGdbDumpers, - s.intelFlavor, - s.usePseudoTracepoints, - s.useIndexCache, - Stretch() + Column { + Row { s.gdbWatchdogTimeout, Stretch() }, + s.skipKnownFrames, + s.useMessageBoxForSignals, + s.adjustBreakpointLocations, + s.useDynamicType, + s.loadGdbInit, + s.loadGdbDumpers, + s.intelFlavor, + s.usePseudoTracepoints, + s.useIndexCache, + Stretch() + } }; Column commands { - Group { Title { Tr::tr("Additional Startup Commands") }, s.gdbStartupCommands }, - Group { Title { Tr::tr("Additional Attach Commands") }, s.gdbPostAttachCommands }, + Group { + Title { Tr::tr("Additional Startup Commands") }, + Column { s.gdbStartupCommands } + }, + Group { + Title { Tr::tr("Additional Attach Commands") }, + Column { s.gdbPostAttachCommands }, + }, Stretch() }; @@ -112,14 +120,16 @@ public: Group extended { Title(Tr::tr("Extended")), - labelDangerous, - s.targetAsync, - s.autoEnrichParameters, - s.breakOnWarning, - s.breakOnFatal, - s.breakOnAbort, - s.enableReverseDebugging, - s.multiInferior, + Column { + labelDangerous, + s.targetAsync, + s.autoEnrichParameters, + s.breakOnWarning, + s.breakOnFatal, + s.breakOnAbort, + s.enableReverseDebugging, + s.multiInferior, + } }; Column { extended, Stretch() }.attachTo(w); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 24485b0c2a7..6728a0f9d15 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -429,18 +429,22 @@ void FakeVimOptionPage::layoutPage(QWidget *widget) Group { Title(Tr::tr("Vim Behavior")), - bools, - ints, - strings + Column { + bools, + ints, + strings + } }, Group { Title(Tr::tr("Plugin Emulation")), - s.emulateVimCommentary, - s.emulateReplaceWithRegister, - s.emulateArgTextObj, - s.emulateExchange, - s.emulateSurround + Column { + s.emulateVimCommentary, + s.emulateReplaceWithRegister, + s.emulateArgTextObj, + s.emulateExchange, + s.emulateSurround + } }, Row { copyTextEditorSettings, setQtStyle, setPlainStyle, Stretch() }, diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index 6ab4b8edc6b..b0836ab54d4 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -170,14 +170,18 @@ GitSettingsPage::GitSettingsPage(GitSettings *settings) Column { Group { Title(GitSettings::tr("Configuration")), - Row { s.path }, - s.winSetHomeEnvironment, + Column { + Row { s.path }, + s.winSetHomeEnvironment, + } }, Group { Title(GitSettings::tr("Miscellaneous")), - Row { s.logCount, s.timeout, Stretch() }, - s.pullRebase + Column { + Row { s.logCount, s.timeout, Stretch() }, + s.pullRebase + } }, Group { diff --git a/src/plugins/gitlab/gitlaboptionspage.cpp b/src/plugins/gitlab/gitlaboptionspage.cpp index 6f9790d643c..afad0e285d0 100644 --- a/src/plugins/gitlab/gitlaboptionspage.cpp +++ b/src/plugins/gitlab/gitlaboptionspage.cpp @@ -148,7 +148,7 @@ GitLabOptionsWidget::GitLabOptionsWidget(QWidget *parent) Grid { Form { defaultLabel, m_defaultGitLabServer, nl, - Row { Group { m_gitLabServerWidget, Space(1) } }, nl, + Row { Group { Column { m_gitLabServerWidget, Space(1) } } }, nl, m_curl, nl, }, Column { m_add, m_edit, m_remove, Stretch() }, }.attachTo(this); diff --git a/src/plugins/nim/settings/nimsettings.cpp b/src/plugins/nim/settings/nimsettings.cpp index 0c2fb953161..85b68a14151 100644 --- a/src/plugins/nim/settings/nimsettings.cpp +++ b/src/plugins/nim/settings/nimsettings.cpp @@ -143,7 +143,7 @@ NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings) Column { Group { Title("Nimsuggest"), - settings->nimSuggestPath + Column { settings->nimSuggestPath } }, Stretch() }.attachTo(widget); diff --git a/src/plugins/perforce/perforcesettings.cpp b/src/plugins/perforce/perforcesettings.cpp index c58dc117b52..78f95cc76cd 100644 --- a/src/plugins/perforce/perforcesettings.cpp +++ b/src/plugins/perforce/perforcesettings.cpp @@ -277,9 +277,11 @@ PerforceSettingsPage::PerforceSettingsPage(PerforceSettings *settings) Group misc { Title(PerforceSettings::tr("Miscellaneous")), - Row { s.logCount, s.timeOutS, Stretch() }, - s.promptToSubmit, - s.autoOpen + Column { + Row { s.logCount, s.timeOutS, Stretch() }, + s.promptToSubmit, + s.autoOpen + } }; Column { diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index b720dfd5aa5..19be4970acf 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -122,7 +122,7 @@ SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings) Column { Group { Title(SubversionSettings::tr("Configuration")), - s.binaryPath + Column { s.binaryPath } }, Group { @@ -135,9 +135,11 @@ SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings) Group { Title(SubversionSettings::tr("Miscellaneous")), - Row { s.logCount, s.timeout, Stretch() }, - s.promptOnSubmit, - s.spaceIgnorantAnnotation, + Column { + Row { s.logCount, s.timeout, Stretch() }, + s.promptOnSubmit, + s.spaceIgnorantAnnotation, + } }, Stretch() diff --git a/src/plugins/todo/keyworddialog.cpp b/src/plugins/todo/keyworddialog.cpp index 8f6a5c1943e..3ccc62c3f03 100644 --- a/src/plugins/todo/keyworddialog.cpp +++ b/src/plugins/todo/keyworddialog.cpp @@ -81,7 +81,7 @@ KeywordDialog::KeywordDialog(const Keyword &keyword, const QSet &alread }, Group { Title(Tr::tr("Keyword")), - m_keywordNameEdit + Column { m_keywordNameEdit } } }, m_errorLabel, diff --git a/src/plugins/valgrind/valgrindconfigwidget.cpp b/src/plugins/valgrind/valgrindconfigwidget.cpp index 8fa534870b3..dfaa87a5a85 100644 --- a/src/plugins/valgrind/valgrindconfigwidget.cpp +++ b/src/plugins/valgrind/valgrindconfigwidget.cpp @@ -89,10 +89,12 @@ ValgrindConfigWidget::ValgrindConfigWidget(ValgrindBaseSettings *settings) Span { 2, Group { - s.enableCacheSim, - s.enableBranchSim, - s.collectSystime, - s.collectBusEvents, + Column { + s.enableCacheSim, + s.enableBranchSim, + s.collectSystime, + s.collectBusEvents, + } } } };