diff options
author | Henning Gruendl <henning.gruendl@qt.io> | 2023-11-21 17:28:51 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2023-11-21 17:34:06 +0000 |
commit | f2eee58e00b67319ca8e2877ba63bf3b751a77b9 (patch) | |
tree | 7a2e8b3f860f58dc09bfbc4fcf0b220c5158a35b | |
parent | ccc9010d26b3dccb6cc924bae97c6f364cb0fc73 (diff) |
ADS: Set default minimum size on empty dock widget
* Set a default minimum size on empty dock widgets. Dock widgets are
empty if their content minimum size isEmpty (width or height <= 0)
* Replace 0 with nullptr as return value
* Fix some code formatting
Task-number: QDS-11255
Change-Id: Ifa7320fd57e73367f71087232dedd939d19ae490
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
-rw-r--r-- | src/libs/advanceddockingsystem/ads_globals.h | 10 | ||||
-rw-r--r-- | src/libs/advanceddockingsystem/docksplitter.cpp | 3 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designmodewidget.cpp | 60 |
3 files changed, 43 insertions, 30 deletions
diff --git a/src/libs/advanceddockingsystem/ads_globals.h b/src/libs/advanceddockingsystem/ads_globals.h index 8541e3d9da..6fc590f471 100644 --- a/src/libs/advanceddockingsystem/ads_globals.h +++ b/src/libs/advanceddockingsystem/ads_globals.h @@ -161,8 +161,8 @@ bool isSideBarArea(DockWidgetArea area); /** * Searches for the parent widget of the given type. Returns the parent widget of the given - * widget or 0 if the widget is not child of any widget of type T. - * It is not safe to use this function in in DockWidget because only the current dock widget has a + * widget or nullptr if the widget is not child of any widget of type T. + * It is not safe to use this function in DockWidget, because only the current dock widget has a * parent. All dock widgets that are not the current dock widget in a dock area have no parent. */ template<class T> @@ -171,12 +171,12 @@ T findParent(const QWidget *widget) QWidget *parentWidget = widget->parentWidget(); while (parentWidget) { T parentImpl = qobject_cast<T>(parentWidget); - if (parentImpl) { + if (parentImpl) return parentImpl; - } + parentWidget = parentWidget->parentWidget(); } - return 0; + return nullptr; } /** diff --git a/src/libs/advanceddockingsystem/docksplitter.cpp b/src/libs/advanceddockingsystem/docksplitter.cpp index a9207e0c08..4446170e2e 100644 --- a/src/libs/advanceddockingsystem/docksplitter.cpp +++ b/src/libs/advanceddockingsystem/docksplitter.cpp @@ -50,9 +50,8 @@ bool DockSplitter::hasVisibleContent() const { // TODO Cache or precalculate this to speed up for (int i = 0; i < count(); ++i) { - if (!widget(i)->isHidden()) { + if (!widget(i)->isHidden()) return true; - } } return false; diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 1387f42f9c..460b613b26 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -70,6 +70,27 @@ static void hideToolButtons(QList<QToolButton*> &buttons) button->hide(); } +static void ensureMinimumSize(QWidget *widget) +{ + if (widget->minimumSize().isEmpty()) + widget->setMinimumSize(widget->minimumSize().expandedTo(QSize(60, 60))); +} + +static ADS::DockWidget *createDockWidget(QWidget *widget, + const QString &uniqueId, + const QString &title, + ADS::DockWidget::eMinimumSizeHintMode minimumSizeHintMode) +{ + ADS::DockWidget *dockWidget = new ADS::DockWidget(uniqueId); + dockWidget->setWidget(widget, ADS::DockWidget::ForceNoScrollArea); + dockWidget->setWindowTitle(title); + dockWidget->setMinimumSizeHintMode(minimumSizeHintMode); + + widget->setObjectName(uniqueId); // Set unique id as object name + + return dockWidget; +} + namespace QmlDesigner { namespace Internal { @@ -308,15 +329,10 @@ void DesignModeWidget::setup() sheet += "QLabel { background-color: creatorTheme.DSsectionHeadBackground; }"; navigationView.widget->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet))); - // Create DockWidget - ADS::DockWidget *dockWidget = new ADS::DockWidget(uniqueId); - dockWidget->setWidget(navigationView.widget, ADS::DockWidget::ForceNoScrollArea); - dockWidget->setWindowTitle(title); - dockWidget->setMinimumSizeHintMode(m_minimumSizeHintMode); - m_dockManager->addDockWidget(ADS::NoDockWidgetArea, dockWidget); + ensureMinimumSize(navigationView.widget); - // Set unique id as object name - navigationView.widget->setObjectName(uniqueId); + auto dockWidget = createDockWidget(navigationView.widget, uniqueId, title, m_minimumSizeHintMode); + m_dockManager->addDockWidget(ADS::NoDockWidgetArea, dockWidget); // Create menu action auto command = Core::ActionManager::registerAction(dockWidget->toggleViewAction(), @@ -328,19 +344,17 @@ void DesignModeWidget::setup() // Afterwards get all the other widgets for (const WidgetInfo &widgetInfo : viewManager().widgetInfos()) { - // Create DockWidget - ADS::DockWidget *dockWidget = new ADS::DockWidget(widgetInfo.uniqueId); - dockWidget->setWidget(widgetInfo.widget, ADS::DockWidget::ForceNoScrollArea); - dockWidget->setWindowTitle(widgetInfo.tabName); - dockWidget->setMinimumSizeHintMode(m_minimumSizeHintMode); + ensureMinimumSize(widgetInfo.widget); + + auto dockWidget = createDockWidget(widgetInfo.widget, + widgetInfo.uniqueId, + widgetInfo.tabName, + m_minimumSizeHintMode); m_dockManager->addDockWidget(ADS::NoDockWidgetArea, dockWidget); // Add to view widgets m_viewWidgets.append(widgetInfo.widget); - // Set unique id as object name - widgetInfo.widget->setObjectName(widgetInfo.uniqueId); - // Create menu action auto command = Core::ActionManager::registerAction(dockWidget->toggleViewAction(), actionToggle.withSuffix( @@ -354,14 +368,14 @@ void DesignModeWidget::setup() { const QString uniqueId = "OutputPane"; auto outputPanePlaceholder = new Core::OutputPanePlaceHolder(Core::Constants::MODE_DESIGN); - m_outputPaneDockWidget = new ADS::DockWidget(uniqueId); - m_outputPaneDockWidget->setWidget(outputPanePlaceholder, ADS::DockWidget::ForceNoScrollArea); - m_outputPaneDockWidget->setWindowTitle(tr("Output")); - m_outputPaneDockWidget->setMinimumSizeHintMode(m_minimumSizeHintMode); - m_dockManager->addDockWidget(ADS::NoDockWidgetArea, m_outputPaneDockWidget); - // Set unique id as object name - outputPanePlaceholder->setObjectName(uniqueId); + ensureMinimumSize(outputPanePlaceholder); + + m_outputPaneDockWidget = createDockWidget(outputPanePlaceholder, + uniqueId, + tr("Output"), + m_minimumSizeHintMode); + m_dockManager->addDockWidget(ADS::NoDockWidgetArea, m_outputPaneDockWidget); // Create menu action auto command = Core::ActionManager::registerAction(m_outputPaneDockWidget->toggleViewAction(), |