Removed DockWidget->sideTabWidget()->setProperty("focused", Focused), DockWidget->sideTabWidget()->updateStyle() because it is not required

This commit is contained in:
Uwe Kindler 2022-10-28 13:19:38 +02:00
parent b70fc7b3e8
commit ae5a75bc3f
8 changed files with 31 additions and 19 deletions

View File

@ -268,6 +268,14 @@ CSideTabBar* CAutoHideDockContainer::sideTabBar() const
return parentContainer()->sideTabBar(d->SideTabBarArea); return parentContainer()->sideTabBar(d->SideTabBarArea);
} }
//============================================================================
CDockWidgetSideTab* CAutoHideDockContainer::sideTab() const
{
return d->SideTab;
}
//============================================================================ //============================================================================
CDockWidget* CAutoHideDockContainer::dockWidget() const CDockWidget* CAutoHideDockContainer::dockWidget() const
{ {
@ -284,13 +292,13 @@ void CAutoHideDockContainer::addDockWidget(CDockWidget* DockWidget)
} }
d->DockWidget = DockWidget; d->DockWidget = DockWidget;
d->SideTab = DockWidget->sideTabWidget();
CDockAreaWidget* OldDockArea = DockWidget->dockAreaWidget(); CDockAreaWidget* OldDockArea = DockWidget->dockAreaWidget();
if (OldDockArea) if (OldDockArea)
{ {
OldDockArea->removeDockWidget(DockWidget); OldDockArea->removeDockWidget(DockWidget);
} }
d->DockArea->addDockWidget(DockWidget); d->DockArea->addDockWidget(DockWidget);
d->DockWidget->sideTabWidget()->updateOrientationAndSpacing(d->SideTabBarArea);
// Prevent overriding of d->Size parameter when this function is called during // Prevent overriding of d->Size parameter when this function is called during
// state restoring // state restoring
@ -336,9 +344,10 @@ void CAutoHideDockContainer::cleanupAndDelete()
const auto dockWidget = d->DockWidget; const auto dockWidget = d->DockWidget;
if (dockWidget) if (dockWidget)
{ {
dockWidget->sideTabWidget()->removeFromSideTabBar(); auto SideTab = d->SideTab;
dockWidget->sideTabWidget()->setParent(dockWidget); SideTab->removeFromSideTabBar();
dockWidget->sideTabWidget()->hide(); SideTab->setParent(dockWidget);
SideTab->hide();
} }
hide(); hide();
@ -391,18 +400,16 @@ void CAutoHideDockContainer::toggleView(bool Enable)
{ {
if (Enable) if (Enable)
{ {
const auto dockWidget = d->DockWidget; if (d->SideTab)
if (dockWidget)
{ {
dockWidget->sideTabWidget()->show(); d->SideTab->show();
} }
} }
else else
{ {
const auto dockWidget = d->DockWidget; if (d->SideTab)
if (dockWidget)
{ {
dockWidget->sideTabWidget()->hide(); d->SideTab->hide();
} }
hide(); hide();
qApp->removeEventFilter(this); qApp->removeEventFilter(this);
@ -429,7 +436,7 @@ void CAutoHideDockContainer::collapseView(bool Enable)
} }
ADS_PRINT("CAutoHideDockContainer::collapseView " << Enable); ADS_PRINT("CAutoHideDockContainer::collapseView " << Enable);
d->DockWidget->sideTabWidget()->updateStyle(); d->SideTab->updateStyle();
} }
@ -494,7 +501,7 @@ bool CAutoHideDockContainer::eventFilter(QObject* watched, QEvent* event)
// because the side tab click handler will call collapseView(). If we // because the side tab click handler will call collapseView(). If we
// do not ignore this here, then we will collapse the container and the side tab // do not ignore this here, then we will collapse the container and the side tab
// click handler will uncollapse it // click handler will uncollapse it
auto SideTab = d->DockWidget->sideTabWidget(); auto SideTab = d->SideTab;
pos = SideTab->mapFromGlobal(me->globalPos()); pos = SideTab->mapFromGlobal(me->globalPos());
if (SideTab->rect().contains(pos)) if (SideTab->rect().contains(pos))
{ {

View File

@ -89,6 +89,11 @@ public:
*/ */
CSideTabBar* sideTabBar() const; CSideTabBar* sideTabBar() const;
/**
* Returns the side tab
*/
CDockWidgetSideTab* sideTab() const;
/** /**
* Get's the dock widget in this dock container * Get's the dock widget in this dock container
*/ */

View File

@ -1546,7 +1546,6 @@ CAutoHideDockContainer* CDockContainerWidget::createAndSetupAutoHideContainer(
return nullptr; return nullptr;
} }
DockWidget->sideTabWidget()->updateOrientationAndSpacing(area);
sideTabBar(area)->insertSideTab(insertOrder == CDockWidget::First ? 0 : -1, DockWidget->sideTabWidget()); sideTabBar(area)->insertSideTab(insertOrder == CDockWidget::First ? 0 : -1, DockWidget->sideTabWidget());
DockWidget->sideTabWidget()->show(); DockWidget->sideTabWidget()->show();

View File

@ -70,8 +70,6 @@ static void updateDockWidgetFocusStyle(CDockWidget* DockWidget, bool Focused)
DockWidget->setProperty("focused", Focused); DockWidget->setProperty("focused", Focused);
DockWidget->tabWidget()->setProperty("focused", Focused); DockWidget->tabWidget()->setProperty("focused", Focused);
DockWidget->tabWidget()->updateStyle(); DockWidget->tabWidget()->updateStyle();
DockWidget->sideTabWidget()->setProperty("focused", Focused);
DockWidget->sideTabWidget()->updateStyle();
internal::repolishStyle(DockWidget); internal::repolishStyle(DockWidget);
} }

View File

@ -365,7 +365,9 @@ public:
CDockAreaWidget* dockAreaWidget() const; CDockAreaWidget* dockAreaWidget() const;
/** /**
* Returns the side tab widget for this dock * Returns the side tab widget for this dock, if this dock widget is in
* a auto hide container. If it is not in a auto hide container, then this
* function returns a nullptr,
*/ */
CDockWidgetSideTab* sideTabWidget() const; CDockWidgetSideTab* sideTabWidget() const;

View File

@ -142,7 +142,7 @@ Qt::Orientation CDockWidgetSideTab::orientation() const
//============================================================================ //============================================================================
void CDockWidgetSideTab::updateOrientationAndSpacing(SideBarLocation area) void CDockWidgetSideTab::updateOrientationForArea(SideBarLocation area)
{ {
setOrientation((area == Bottom || area == Top) ? Qt::Horizontal : Qt::Vertical); setOrientation((area == Bottom || area == Top) ? Qt::Horizontal : Qt::Vertical);

View File

@ -106,7 +106,7 @@ public:
/** /**
* Update the orientation, visibility and spacing based on the area and the config * Update the orientation, visibility and spacing based on the area and the config
*/ */
void updateOrientationAndSpacing(SideBarLocation area); void updateOrientationForArea(SideBarLocation area);
/** /**
* Returns true, if this is the active tab. The tab is active if the auto hide widget is visible * Returns true, if this is the active tab. The tab is active if the auto hide widget is visible

View File

@ -128,6 +128,7 @@ CSideTabBar::~CSideTabBar()
//============================================================================ //============================================================================
void CSideTabBar::insertSideTab(int Index, CDockWidgetSideTab* SideTab) void CSideTabBar::insertSideTab(int Index, CDockWidgetSideTab* SideTab)
{ {
SideTab->updateOrientationForArea(d->SideTabArea);
SideTab->installEventFilter(this); SideTab->installEventFilter(this);
d->TabsLayout->insertWidget(Index, SideTab); d->TabsLayout->insertWidget(Index, SideTab);
SideTab->setSideTabBar(this); SideTab->setSideTabBar(this);
@ -142,7 +143,7 @@ CAutoHideDockContainer* CSideTabBar::insertDockWidget(int Index, CDockWidget* Do
auto area = sideTabBarArea(); auto area = sideTabBarArea();
qDebug() << "area " << area; qDebug() << "area " << area;
Tab->setSideTabBar(this); Tab->setSideTabBar(this);
Tab->updateOrientationAndSpacing(area); Tab->updateOrientationForArea(area);
d->TabsLayout->insertWidget(Index, Tab); d->TabsLayout->insertWidget(Index, Tab);
Tab->show(); Tab->show();