@@ -70,6 +70,7 @@ struct DockAreaTitleBarPrivate
7070 CDockAreaTabBar* TabBar;
7171 bool MenuOutdated = true ;
7272 QMenu* TabsMenu;
73+ QList<tTitleBarButton*> DockWidgetActionsButtons;
7374
7475 /* *
7576 * Private data constructor
@@ -188,7 +189,6 @@ void DockAreaTitleBarPrivate::createButtons()
188189 _this->connect (TabsMenuButton->menu (), SIGNAL (triggered (QAction*)),
189190 SLOT (onTabsMenuActionTriggered (QAction*)));
190191
191-
192192 // Undock button
193193 UndockButton = new CTitleBarButton (testConfigFlag (CDockManager::DockAreaHasUndockButton));
194194 UndockButton->setObjectName (" undockButton" );
@@ -361,11 +361,39 @@ void CDockAreaTitleBar::onCurrentTabChanged(int Index)
361361 return ;
362362 }
363363
364+ CDockWidget* DockWidget = d->TabBar ->tab (Index)->dockWidget ();
364365 if (d->testConfigFlag (CDockManager::DockAreaCloseButtonClosesTab))
365366 {
366- CDockWidget* DockWidget = d->TabBar ->tab (Index)->dockWidget ();
367367 d->CloseButton ->setEnabled (DockWidget->features ().testFlag (CDockWidget::DockWidgetClosable));
368368 }
369+
370+ if (!d->DockWidgetActionsButtons .isEmpty ())
371+ {
372+ for (auto Button : d->DockWidgetActionsButtons )
373+ {
374+ d->TopLayout ->removeWidget (Button);
375+ delete Button;
376+ }
377+ d->DockWidgetActionsButtons .clear ();
378+ }
379+
380+ auto Actions = DockWidget->titleBarActions ();
381+ if (Actions.isEmpty ())
382+ {
383+ return ;
384+ }
385+
386+ int InsertIndex = 2 ;
387+ for (auto Action : Actions)
388+ {
389+ auto Button = new CTitleBarButton (true , this );
390+ Button->setDefaultAction (Action);
391+ Button->setAutoRaise (true );
392+ Button->setPopupMode (QToolButton::InstantPopup);
393+ Button->setObjectName (Action->objectName ());
394+ d->TopLayout ->insertWidget (InsertIndex++, Button, 0 );
395+ d->DockWidgetActionsButtons .append (Button);
396+ }
369397}
370398
371399
0 commit comments