Add title label to the overlayed dock area

This commit is contained in:
Syarif Fakhri
2022-09-08 14:43:18 +08:00
parent 9bfd77a206
commit af549d8ca9
3 changed files with 37 additions and 7 deletions

View File

@@ -49,10 +49,10 @@
#include "DockWidget.h"
#include "DockWidgetTab.h"
#include "DockAreaTabBar.h"
#include "IconProvider.h"
#include "DockComponentsFactory.h"
#include "DockFocusController.h"
#include "OverlayDockContainer.h"
#include "ElidingLabel.h"
#include <iostream>
@@ -72,6 +72,7 @@ struct DockAreaTitleBarPrivate
QBoxLayout* Layout;
CDockAreaWidget* DockArea;
CDockAreaTabBar* TabBar;
CElidingLabel* OverlayTitleLabel;
bool MenuOutdated = true;
QMenu* TabsMenu;
QList<tTitleBarButton*> DockWidgetActionsButtons;
@@ -91,7 +92,13 @@ struct DockAreaTitleBarPrivate
*/
void createButtons();
/**
* Creates the overlay title label, only displayed when the dock area is overlayed
*/
void createOverlayTitleLabel();
/**
* Creates the internal TabBar
*/
void createTabBar();
@@ -207,6 +214,15 @@ void DockAreaTitleBarPrivate::createButtons()
}
//============================================================================
void DockAreaTitleBarPrivate::createOverlayTitleLabel()
{
OverlayTitleLabel = new CElidingLabel("");
OverlayTitleLabel->setObjectName("overlayTitleLabel");
Layout->addWidget(OverlayTitleLabel);
}
//============================================================================
void DockAreaTitleBarPrivate::createTabBar()
{
@@ -287,6 +303,8 @@ CDockAreaTitleBar::CDockAreaTitleBar(CDockAreaWidget* parent) :
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
d->createTabBar();
d->createOverlayTitleLabel();
d->OverlayTitleLabel->setVisible(false); // Default hidden
d->Layout->addWidget(new CSpacerWidget(this));
d->createButtons();
@@ -480,6 +498,13 @@ QAbstractButton* CDockAreaTitleBar::button(TitleBarButton which) const
}
//============================================================================
CElidingLabel* CDockAreaTitleBar::overlayTitleLabel() const
{
return d->OverlayTitleLabel;
}
//============================================================================
void CDockAreaTitleBar::setVisible(bool Visible)
{