ADS: Integrate newest base repository commits

* Update to newest version of ADS
* Fix memory leak in DockContainerWidget

Base repository was merged until commit
59b4dfb89c0c9c0e6035fe580088432312ed2d09

Change-Id: I357b21888fe6f0ec2160c8688d84cb7ecdcad079
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Henning Gruendl
2023-11-24 14:15:22 +01:00
committed by Henning Gründl
parent d0fccdc025
commit e16a302a43
10 changed files with 247 additions and 34 deletions

View File

@@ -64,6 +64,7 @@ public:
= DockWidget::MinimumSizeHintFromDockWidget;
WidgetFactory *m_factory = nullptr;
QPointer<AutoHideTab> m_sideTabWidget;
DockWidget::eToolBarStyleSource m_toolBarStyleSource = DockWidget::ToolBarStyleFromDockManager;
/**
* Private data constructor
@@ -106,6 +107,11 @@ public:
* Creates the content widget with the registered widget factory and returns true on success.
*/
bool createWidgetFromFactory();
/**
* Use the dock manager toolbar style and icon size for the different states
*/
void setToolBarStyleFromDockManager();
}; // class DockWidgetPrivate
DockWidgetPrivate::DockWidgetPrivate(DockWidget *parent)
@@ -246,6 +252,19 @@ bool DockWidgetPrivate::createWidgetFromFactory()
return true;
}
void DockWidgetPrivate::setToolBarStyleFromDockManager()
{
if (!m_dockManager)
return;
auto state = DockWidget::StateDocked;
q->setToolBarIconSize(m_dockManager->dockWidgetToolBarIconSize(state), state);
q->setToolBarStyle(m_dockManager->dockWidgetToolBarStyle(state), state);
state = DockWidget::StateFloating;
q->setToolBarIconSize(m_dockManager->dockWidgetToolBarIconSize(state), state);
q->setToolBarStyle(m_dockManager->dockWidgetToolBarStyle(state), state);
}
DockWidget::DockWidget(const QString &uniqueId, QWidget *parent)
: QFrame(parent)
, d(new DockWidgetPrivate(this))
@@ -381,6 +400,12 @@ DockManager *DockWidget::dockManager() const
void DockWidget::setDockManager(DockManager *dockManager)
{
d->m_dockManager = dockManager;
if (!dockManager)
return;
if (ToolBarStyleFromDockManager == d->m_toolBarStyleSource)
d->setToolBarStyleFromDockManager();
}
DockContainerWidget *DockWidget::dockContainer() const
@@ -491,6 +516,18 @@ QAction *DockWidget::toggleViewAction() const
return d->m_toggleViewAction;
}
void DockWidget::setToggleViewAction(QAction *action)
{
if (!action)
return;
d->m_toggleViewAction->setParent(nullptr);
delete d->m_toggleViewAction;
d->m_toggleViewAction = action;
d->m_toggleViewAction->setParent(this);
connect(d->m_toggleViewAction, &QAction::triggered, this, &DockWidget::toggleView);
}
void DockWidget::setToggleViewActionMode(eToggleViewActionMode mode)
{
if (ActionModeToggle == mode) {
@@ -693,6 +730,18 @@ void DockWidget::setToolBar(QToolBar *toolBar)
setToolbarFloatingStyle(isFloating());
}
void DockWidget::setToolBarStyleSource(eToolBarStyleSource source)
{
d->m_toolBarStyleSource = source;
if (ToolBarStyleFromDockManager == d->m_toolBarStyleSource)
d->setToolBarStyleFromDockManager();
}
DockWidget::eToolBarStyleSource DockWidget::toolBarStyleSource() const
{
return d->m_toolBarStyleSource;
}
void DockWidget::setToolBarStyle(Qt::ToolButtonStyle style, eState state)
{
if (StateFloating == state)