ProjectExplorer: Start dissolving PanelsWidget

Plan is to dissolve PanelsWidget completely, and replace it with more
directly created widgets to reduce some widget-in-widget layering.

Change-Id: I72ffce7544ed761a97527d8ead902f21a3a88538
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2025-06-02 13:11:01 +02:00
parent db698db171
commit f7b7343d89
5 changed files with 22 additions and 27 deletions

View File

@@ -6,6 +6,7 @@
#include "buildconfiguration.h"
#include "buildinfo.h"
#include "buildmanager.h"
#include "panelswidget.h"
#include "project.h"
#include "projectconfigurationmodel.h"
#include "projectexplorertr.h"
@@ -355,7 +356,9 @@ void BuildSettingsWidget::deleteConfiguration(BuildConfiguration *deleteConfigur
QWidget *createBuildSettingsWidget(Target *target)
{
return new BuildSettingsWidget(target);
auto panel = new PanelsWidget(true);
panel->addWidget(new BuildSettingsWidget(target));
return panel;
}
} // ProjectExplorer::Internal

View File

@@ -56,19 +56,6 @@ PanelsWidget::PanelsWidget(bool addStretch)
//layout->addWidget(new FindToolBarPlaceHolder(this));
}
PanelsWidget::PanelsWidget(QWidget *widget, bool addStretch)
: PanelsWidget(addStretch)
{
addWidget(widget);
}
PanelsWidget::PanelsWidget(ProjectSettingsWidget *widget)
: PanelsWidget(!widget->expanding())
{
addGlobalSettingsProperties(widget);
addWidget(widget);
}
PanelsWidget::~PanelsWidget() = default;
void PanelsWidget::addWidget(QWidget *widget)

View File

@@ -14,18 +14,15 @@ namespace ProjectExplorer::Internal {
class PanelsWidget final : public QWidget
{
public:
PanelsWidget(QWidget *widget, bool addStretch = true);
PanelsWidget(ProjectSettingsWidget *widget);
explicit PanelsWidget(bool addStretch);
~PanelsWidget() final;
static int constexpr PanelVMargin = 14;
private:
explicit PanelsWidget(bool addStretch);
void addGlobalSettingsProperties(ProjectSettingsWidget *widget);
void addWidget(QWidget *widget);
private:
QVBoxLayout *m_layout;
QWidget *m_root;
};

View File

@@ -330,7 +330,7 @@ private:
const QPointer<Project> m_project;
bool m_rebuildScheduled = false;
mutable QPointer<PanelsWidget> m_targetSetupPage;
mutable QPointer<QWidget> m_targetSetupPage;
QObject m_guard;
};
@@ -515,8 +515,11 @@ ProjectPanels MiscSettingsPanelItem::panelWidgets() const
{
if (!m_widget) {
ProjectSettingsWidget *inner = m_factory->createWidget(m_project);
m_widget = new PanelsWidget(inner);
m_widget->setFocusProxy(inner);
auto panel = new PanelsWidget(true);
panel->addGlobalSettingsProperties(inner);
panel->addWidget(inner);
panel->setFocusProxy(inner);
m_widget = panel;
}
ProjectPanel panel;
panel.displayName = m_factory->displayName();
@@ -885,9 +888,9 @@ public:
ProjectPanels panelWidgets() const final
{
if (!m_buildSettingsWidget)
m_buildSettingsWidget = new PanelsWidget(createBuildSettingsWidget(target()));
m_buildSettingsWidget = createBuildSettingsWidget(target());
if (!m_runSettingsWidget)
m_runSettingsWidget = new PanelsWidget(createRunSettingsWidget(target()));
m_runSettingsWidget = createRunSettingsWidget(target());
return {
ProjectPanel(Tr::tr("Build Settings"), m_buildSettingsWidget),
@@ -1097,8 +1100,10 @@ ProjectPanels TargetGroupItem::panelWidgets() const
{
if (!m_targetSetupPage) {
auto inner = new TargetSetupPageWrapper(m_project);
m_targetSetupPage = new PanelsWidget(inner, false);
m_targetSetupPage->setFocusProxy(inner);
auto panel = new PanelsWidget(false);
panel->addWidget(inner);
panel->setFocusProxy(inner);
m_targetSetupPage = panel;
}
ProjectPanel panel;

View File

@@ -7,6 +7,7 @@
#include "buildmanager.h"
#include "buildstepspage.h"
#include "deployconfiguration.h"
#include "panelswidget.h"
#include "project.h"
#include "projectconfigurationmodel.h"
#include "projectexplorerconstants.h"
@@ -790,7 +791,9 @@ void RunSettingsWidget::updateEnabledState()
QWidget *createRunSettingsWidget(Target *target)
{
return new RunSettingsWidget(target);
auto panel = new PanelsWidget(true);
panel->addWidget(new RunSettingsWidget(target));
return panel;
}
} // ProjectExplorer::Internal