diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index d82617ea463..9a2c067cb29 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -106,29 +106,36 @@ LayoutBuilder::LayoutItem::LayoutItem(const QString &text) : text(text) {} -static QLayout *createLayoutFromType(LayoutBuilder::LayoutType layoutType) +QLayout *LayoutBuilder::createLayout() const { - switch (layoutType) { + QLayout *layout = nullptr; + switch (m_layoutType) { case LayoutBuilder::FormLayout: { auto formLayout = new QFormLayout; formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); - return formLayout; + layout = formLayout; + break; } case LayoutBuilder::GridLayout: { auto gridLayout = new QGridLayout; - return gridLayout; + layout = gridLayout; + break; } case LayoutBuilder::HBoxLayout: { auto hboxLayout = new QHBoxLayout; - return hboxLayout; + layout = hboxLayout; + break; } case LayoutBuilder::VBoxLayout: { auto vboxLayout = new QVBoxLayout; - return vboxLayout; + layout = vboxLayout; + break; } } - QTC_CHECK(false); - return nullptr; + QTC_ASSERT(layout, return nullptr); + if (m_spacing) + layout->setSpacing(*m_spacing); + return layout; } static void setMargins(bool on, QLayout *layout) @@ -246,7 +253,7 @@ static void doLayoutHelper(QLayout *layout, */ LayoutBuilder::LayoutItem::LayoutItem(const LayoutBuilder &builder) { - layout = createLayoutFromType(builder.m_layoutType); + layout = builder.createLayout(); doLayoutHelper(layout, builder.m_items); setMargins(builder.m_withMargins, layout); } @@ -287,6 +294,12 @@ LayoutBuilder::LayoutBuilder(LayoutType layoutType, const LayoutItems &items) addItem(item); } +LayoutBuilder &LayoutBuilder::setSpacing(int spacing) +{ + m_spacing = spacing; + return *this; +} + LayoutBuilder::LayoutBuilder() = default; /*! @@ -343,7 +356,7 @@ LayoutBuilder &LayoutBuilder::addItem(const LayoutItem &item) void LayoutBuilder::doLayout(QWidget *parent) { - QLayout *layout = createLayoutFromType(m_layoutType); + QLayout *layout = createLayout(); parent->setLayout(layout); doLayoutHelper(layout, m_items); diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index a258690416e..5953fa09f95 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -27,6 +27,8 @@ #include "utils_global.h" +#include "optional.h" + #include #include #include @@ -97,6 +99,8 @@ public: ~LayoutBuilder(); + LayoutBuilder &setSpacing(int spacing); + LayoutBuilder &addItem(const LayoutItem &item); LayoutBuilder &addItems(const LayoutItems &items); @@ -148,10 +152,12 @@ public: protected: explicit LayoutBuilder(); // Adds to existing layout. + QLayout *createLayout() const; void doLayout(QWidget *parent); LayoutItems m_items; LayoutType m_layoutType; + Utils::optional m_spacing; bool m_withMargins = false; }; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 69e4d01dd09..abf3d4f552d 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -339,16 +339,18 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) qmlDebugAspect }, m_warningMessageLabel, - Space(10), - Row{m_kitConfiguration, m_configurationStates}, - Group { - cmakeConfiguration, - Row { - bc->aspect(), - bc->aspect() - }, - m_reconfigureButton, - } + m_kitConfiguration, + Column { + m_configurationStates, + Group { + cmakeConfiguration, + Row { + bc->aspect(), + bc->aspect() + }, + m_reconfigureButton, + } + }.setSpacing(0) }.attachTo(details, false); updateAdvancedCheckBox();