From 0c13aecc70ddf739ffd584eb655e53f3c7a73dac Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 13 Jun 2025 10:18:19 +0200 Subject: [PATCH] ProjectExplorer: (Ab-)Use window title for panel tab display name Moves the specification of the name closer to the widget itself and simplifies the overall structure, at the price of some (bearable) obscurity. Change-Id: I8c8f15175e64f8d406cbd742d158e681f67ec316 Reviewed-by: Christian Kandeler --- .../buildsettingspropertiespage.cpp | 2 + src/plugins/projectexplorer/panelswidget.cpp | 1 + .../projectcommentssettings.cpp | 1 + .../projectexplorer/projectpanelfactory.h | 7 ++-- src/plugins/projectexplorer/projectwindow.cpp | 39 +++++-------------- .../runsettingspropertiespage.cpp | 2 + 6 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index b3fb9fac959..7b4d9c40494 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -74,6 +74,8 @@ private: BuildSettingsWidget::BuildSettingsWidget(Target *target) : m_target(target) { + setWindowTitle(Tr::tr("Build Settings")); + auto vbox = new QVBoxLayout(this); vbox->setContentsMargins(0, 0, 0, 0); diff --git a/src/plugins/projectexplorer/panelswidget.cpp b/src/plugins/projectexplorer/panelswidget.cpp index e0d522b3452..c455181be33 100644 --- a/src/plugins/projectexplorer/panelswidget.cpp +++ b/src/plugins/projectexplorer/panelswidget.cpp @@ -60,6 +60,7 @@ PanelsWidget::~PanelsWidget() = default; void PanelsWidget::addWidget(QWidget *widget) { + setWindowTitle(widget->windowTitle()); widget->setContentsMargins(0, CONTENTS_MARGIN, 0, BELOW_CONTENTS_MARGIN); widget->setParent(m_root); m_layout->addWidget(widget); diff --git a/src/plugins/projectexplorer/projectcommentssettings.cpp b/src/plugins/projectexplorer/projectcommentssettings.cpp index 00175fbb6cc..d1b6b1ffaa1 100644 --- a/src/plugins/projectexplorer/projectcommentssettings.cpp +++ b/src/plugins/projectexplorer/projectcommentssettings.cpp @@ -99,6 +99,7 @@ public: : m_settings(project) { setGlobalSettingsId(TextEditor::Constants::TEXT_EDITOR_COMMENTS_SETTINGS); + const auto layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(&m_widget); diff --git a/src/plugins/projectexplorer/projectpanelfactory.h b/src/plugins/projectexplorer/projectpanelfactory.h index d09f1dd0c1b..7695828a9e9 100644 --- a/src/plugins/projectexplorer/projectpanelfactory.h +++ b/src/plugins/projectexplorer/projectpanelfactory.h @@ -32,8 +32,9 @@ public: // interface for users of ProjectPanelFactory bool supports(Project *project); - - using WidgetCreator = std::function; + // Widgets created by this function should use setWindowTitle() to specify + // their tab title. + ProjectSettingsWidget *createWidget(Project *project) const; // interface for "implementations" of ProjectPanelFactory // by default all projects are supported, only set a custom supports function @@ -45,8 +46,8 @@ public: Utils::TreeItem *createPanelItem(Project *project); + using WidgetCreator = std::function; void setCreateWidgetFunction(const WidgetCreator &createWidgetFunction); - ProjectSettingsWidget *createWidget(Project *project) const; private: Utils::Id m_id; diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 13d964a007e..0f6132528ce 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -219,19 +219,7 @@ void BuildSystemOutputWindow::updateFilter() 0 /* after context */); } -class ProjectPanel -{ -public: - ProjectPanel() = default; - ProjectPanel(const QString &displayName, QWidget *widget) - : displayName(displayName), widget(widget) - {} - - QString displayName; - QWidget *widget = nullptr; -}; - -using ProjectPanels = QList; +using ProjectPanels = QList; // Overall structure: // @@ -519,12 +507,10 @@ ProjectPanels MiscSettingsPanelItem::panelWidgets() const panel->addGlobalSettingsProperties(inner); panel->addWidget(inner); panel->setFocusProxy(inner); + panel->setWindowTitle(m_factory->displayName()); m_widget = panel; } - ProjectPanel panel; - panel.displayName = m_factory->displayName(); - panel.widget = m_widget; - return QList{panel}; + return {m_widget.get()}; } ProjectItemBase *MiscSettingsPanelItem::activeItem() @@ -756,6 +742,8 @@ private: TargetSetupPageWrapper::TargetSetupPageWrapper(Project *project) : m_project(project) { + setWindowTitle(Tr::tr("Configure Project")); + auto box = new QDialogButtonBox(this); m_configureButton = new QPushButton(this); @@ -892,10 +880,7 @@ public: if (!m_runSettingsWidget) m_runSettingsWidget = createRunSettingsWidget(target()); - return { - ProjectPanel(Tr::tr("Build Settings"), m_buildSettingsWidget), - ProjectPanel(Tr::tr("Run Settings"), m_runSettingsWidget) - }; + return { m_buildSettingsWidget.get(), m_runSettingsWidget.get() }; } void addToMenu(QMenu *menu) const final @@ -1106,11 +1091,7 @@ ProjectPanels TargetGroupItem::panelWidgets() const m_targetSetupPage = panel; } - ProjectPanel panel; - panel.displayName = Tr::tr("Configure Project"); - panel.widget = m_targetSetupPage; - - return {panel}; + return {m_targetSetupPage.get()}; } void TargetGroupItem::itemActivatedFromBelow(const ProjectItemBase *) @@ -1290,9 +1271,9 @@ public: m_tabWidget->removeTab(pos); } - for (const ProjectPanel &panel : panels) { - QTC_ASSERT(panel.widget, continue); - m_tabWidget->addTab(panel.widget, panel.displayName); + for (QWidget *panel : panels) { + QTC_ASSERT(panel, continue); + m_tabWidget->addTab(panel, panel->windowTitle()); } m_tabWidget->setCurrentIndex(oldIndex); diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 26ad808b320..850e2cbe979 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -245,6 +245,8 @@ private: RunSettingsWidget::RunSettingsWidget(Target *target) : m_target(target) { + setWindowTitle(Tr::tr("Run Settings")); + m_deployConfigurationCombo = new QComboBox(this); setWheelScrollingWithoutFocusBlocked(m_deployConfigurationCombo); m_addDeployToolButton = new QPushButton(Tr::tr("Add"), this);