From e7397ec57609914a496019f9926bfae43da88a5b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 9 May 2023 14:44:17 +0200 Subject: [PATCH] LayoutBuilder: Fix Splitter construction QSplitter is different insofar as that it doesn't have a Layout, but a list of child widgets. Change-Id: I4e1076e39d20df409c4bab93d79770b6d0e5aa8d Reviewed-by: Alessandro Portale --- src/libs/utils/layoutbuilder.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 51b94b582d8..40862c04346 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -574,8 +574,22 @@ TextEdit::TextEdit(std::initializer_list items) Splitter::Splitter(std::initializer_list items) { - this->subItems = items; - setupWidget(this); // FIXME: Default was Qt::Vertical) + subItems = items; + onAdd = [](LayoutBuilder &builder) { + auto splitter = new QSplitter; + splitter->setOrientation(Qt::Vertical); + builder.stack.append(splitter); + }; + onExit = [](LayoutBuilder &builder) { + const Slice slice = builder.stack.last(); + QSplitter *splitter = qobject_cast(slice.widget); + for (const ResultItem &ri : slice.pendingItems) { + if (ri.widget) + splitter->addWidget(ri.widget); + } + builder.stack.pop_back(); + builder.stack.last().pendingItems.append(ResultItem(splitter)); + }; } TabWidget::TabWidget(std::initializer_list items)