@@ -72,10 +72,11 @@ struct DockAreaTitleBarPrivate
7272 QPointer<CTitleBarButton> AutoHideButton;
7373 QPointer<CTitleBarButton> UndockButton;
7474 QPointer<CTitleBarButton> CloseButton;
75+ QPointer<CTitleBarButton> MinimizeButton;
7576 QBoxLayout* Layout;
7677 CDockAreaWidget* DockArea;
7778 CDockAreaTabBar* TabBar;
78- CElidingLabel* AutoHideTitleLabel;
79+ CElidingLabel* AutoHideTitleLabel = nullptr ;
7980 bool MenuOutdated = true ;
8081 QMenu* TabsMenu;
8182 QList<tTitleBarButton*> DockWidgetActionsButtons;
@@ -218,6 +219,17 @@ void DockAreaTitleBarPrivate::createButtons()
218219 Layout->addWidget (AutoHideButton, 0 );
219220 _this->connect (AutoHideButton, SIGNAL (clicked ()), SLOT (onAutoHideButtonClicked ()));
220221
222+ // Minimize button
223+ MinimizeButton = new CTitleBarButton (testAutoHideConfigFlag (CDockManager::AutoHideHasMinimizeButton));
224+ MinimizeButton->setObjectName (" dockAreaMinimizeButton" );
225+ MinimizeButton->setAutoRaise (true );
226+ MinimizeButton->setVisible (false );
227+ internal::setButtonIcon (MinimizeButton, QStyle::SP_TitleBarMinButton, ads::DockAreaMinimizeIcon);
228+ internal::setToolTip (MinimizeButton, QObject::tr (" Minimize" ));
229+ MinimizeButton->setSizePolicy (ButtonSizePolicy);
230+ Layout->addWidget (MinimizeButton, 0 );
231+ _this->connect (MinimizeButton, SIGNAL (clicked ()), SLOT (minimizeAutoHideContainer ()));
232+
221233 // Close button
222234 CloseButton = new CTitleBarButton (testConfigFlag (CDockManager::DockAreaHasCloseButton));
223235 CloseButton->setObjectName (" dockAreaCloseButton" );
@@ -236,7 +248,10 @@ void DockAreaTitleBarPrivate::createAutoHideTitleLabel()
236248{
237249 AutoHideTitleLabel = new CElidingLabel (" " );
238250 AutoHideTitleLabel->setObjectName (" autoHideTitleLabel" );
239- Layout->addWidget (AutoHideTitleLabel);
251+ // At position 0 is the tab bar - insert behind tab bar
252+ Layout->insertWidget (1 , AutoHideTitleLabel);
253+ AutoHideTitleLabel->setVisible (false ); // Default hidden
254+ Layout->insertWidget (2 ,new CSpacerWidget (_this));
240255}
241256
242257
@@ -324,10 +339,8 @@ CDockAreaTitleBar::CDockAreaTitleBar(CDockAreaWidget* parent) :
324339 setSizePolicy (QSizePolicy::Preferred, QSizePolicy::Fixed);
325340
326341 d->createTabBar ();
327- d->createAutoHideTitleLabel ();
328- d->AutoHideTitleLabel ->setVisible (false ); // Default hidden
329- d->Layout ->addWidget (new CSpacerWidget (this ));
330342 d->createButtons ();
343+ d->createAutoHideTitleLabel ();
331344
332345 setFocusPolicy (Qt::NoFocus);
333346}
@@ -439,7 +452,7 @@ void CDockAreaTitleBar::onAutoHideCloseActionTriggered()
439452
440453
441454// ============================================================================
442- void CDockAreaTitleBar::onAutoHideMinimizeActionTriggered ()
455+ void CDockAreaTitleBar::minimizeAutoHideContainer ()
443456{
444457 auto AutoHideContainer = d->DockArea ->autoHideDockContainer ();
445458 if (AutoHideContainer)
@@ -565,6 +578,7 @@ CTitleBarButton* CDockAreaTitleBar::button(TitleBarButton which) const
565578 case TitleBarButtonUndock: return d->UndockButton ;
566579 case TitleBarButtonClose: return d->CloseButton ;
567580 case TitleBarButtonAutoHide: return d->AutoHideButton ;
581+ case TitleBarButtonMinimize: return d->MinimizeButton ;
568582 default :
569583 return nullptr ;
570584 }
@@ -756,7 +770,7 @@ void CDockAreaTitleBar::contextMenuEvent(QContextMenuEvent* ev)
756770
757771 if (isAutoHide)
758772 {
759- Action = Menu.addAction (tr (" Minimize" ), this , SLOT (onAutoHideMinimizeActionTriggered ()));
773+ Action = Menu.addAction (tr (" Minimize" ), this , SLOT (minimizeAutoHideContainer ()));
760774 Action = Menu.addAction (tr (" Close" ), this , SLOT (onAutoHideCloseActionTriggered ()));
761775 }
762776 else
@@ -831,6 +845,16 @@ QString CDockAreaTitleBar::titleBarButtonToolTip(TitleBarButton Button) const
831845 return QString ();
832846}
833847
848+
849+ // ============================================================================
850+ void CDockAreaTitleBar::showAutoHideControls (bool Show)
851+ {
852+ d->TabBar ->setVisible (!Show); // Auto hide toolbar never has tabs
853+ d->MinimizeButton ->setVisible (Show);
854+ d->AutoHideTitleLabel ->setVisible (Show);
855+ }
856+
857+
834858// ============================================================================
835859CTitleBarButton::CTitleBarButton (bool showInTitleBar, QWidget* parent)
836860 : tTitleBarButton(parent),
@@ -887,6 +911,7 @@ CSpacerWidget::CSpacerWidget(QWidget* Parent /*= 0*/) : Super(Parent)
887911 setStyleSheet (" border: none; background: none;" );
888912}
889913
914+
890915} // namespace ads
891916
892917// ---------------------------------------------------------------------------
0 commit comments