mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-01-13 00:30:25 +08:00
Add title label to the overlayed dock area
This commit is contained in:
parent
9bfd77a206
commit
af549d8ca9
@ -49,10 +49,10 @@
|
|||||||
#include "DockWidget.h"
|
#include "DockWidget.h"
|
||||||
#include "DockWidgetTab.h"
|
#include "DockWidgetTab.h"
|
||||||
#include "DockAreaTabBar.h"
|
#include "DockAreaTabBar.h"
|
||||||
#include "IconProvider.h"
|
|
||||||
#include "DockComponentsFactory.h"
|
#include "DockComponentsFactory.h"
|
||||||
#include "DockFocusController.h"
|
#include "DockFocusController.h"
|
||||||
#include "OverlayDockContainer.h"
|
#include "OverlayDockContainer.h"
|
||||||
|
#include "ElidingLabel.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -72,6 +72,7 @@ struct DockAreaTitleBarPrivate
|
|||||||
QBoxLayout* Layout;
|
QBoxLayout* Layout;
|
||||||
CDockAreaWidget* DockArea;
|
CDockAreaWidget* DockArea;
|
||||||
CDockAreaTabBar* TabBar;
|
CDockAreaTabBar* TabBar;
|
||||||
|
CElidingLabel* OverlayTitleLabel;
|
||||||
bool MenuOutdated = true;
|
bool MenuOutdated = true;
|
||||||
QMenu* TabsMenu;
|
QMenu* TabsMenu;
|
||||||
QList<tTitleBarButton*> DockWidgetActionsButtons;
|
QList<tTitleBarButton*> DockWidgetActionsButtons;
|
||||||
@ -91,6 +92,12 @@ struct DockAreaTitleBarPrivate
|
|||||||
*/
|
*/
|
||||||
void createButtons();
|
void createButtons();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the overlay title label, only displayed when the dock area is overlayed
|
||||||
|
*/
|
||||||
|
void createOverlayTitleLabel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the internal TabBar
|
* Creates the internal TabBar
|
||||||
*/
|
*/
|
||||||
@ -207,6 +214,15 @@ void DockAreaTitleBarPrivate::createButtons()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
void DockAreaTitleBarPrivate::createOverlayTitleLabel()
|
||||||
|
{
|
||||||
|
OverlayTitleLabel = new CElidingLabel("");
|
||||||
|
OverlayTitleLabel->setObjectName("overlayTitleLabel");
|
||||||
|
Layout->addWidget(OverlayTitleLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
void DockAreaTitleBarPrivate::createTabBar()
|
void DockAreaTitleBarPrivate::createTabBar()
|
||||||
{
|
{
|
||||||
@ -287,6 +303,8 @@ CDockAreaTitleBar::CDockAreaTitleBar(CDockAreaWidget* parent) :
|
|||||||
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||||
|
|
||||||
d->createTabBar();
|
d->createTabBar();
|
||||||
|
d->createOverlayTitleLabel();
|
||||||
|
d->OverlayTitleLabel->setVisible(false); // Default hidden
|
||||||
d->Layout->addWidget(new CSpacerWidget(this));
|
d->Layout->addWidget(new CSpacerWidget(this));
|
||||||
d->createButtons();
|
d->createButtons();
|
||||||
|
|
||||||
@ -480,6 +498,13 @@ QAbstractButton* CDockAreaTitleBar::button(TitleBarButton which) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
CElidingLabel* CDockAreaTitleBar::overlayTitleLabel() const
|
||||||
|
{
|
||||||
|
return d->OverlayTitleLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
void CDockAreaTitleBar::setVisible(bool Visible)
|
void CDockAreaTitleBar::setVisible(bool Visible)
|
||||||
{
|
{
|
||||||
|
@ -41,6 +41,7 @@ namespace ads
|
|||||||
class CDockAreaTabBar;
|
class CDockAreaTabBar;
|
||||||
class CDockAreaWidget;
|
class CDockAreaWidget;
|
||||||
struct DockAreaTitleBarPrivate;
|
struct DockAreaTitleBarPrivate;
|
||||||
|
class CElidingLabel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Title bar of a dock area.
|
* Title bar of a dock area.
|
||||||
@ -120,6 +121,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
QAbstractButton* button(TitleBarButton which) const;
|
QAbstractButton* button(TitleBarButton which) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the overlay title label, used when the dock area is overlayed
|
||||||
|
*/
|
||||||
|
CElidingLabel* overlayTitleLabel() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the visibility of the dock widget actions in the title bar
|
* Updates the visibility of the dock widget actions in the title bar
|
||||||
*/
|
*/
|
||||||
|
@ -32,18 +32,15 @@
|
|||||||
|
|
||||||
#include <QStackedLayout>
|
#include <QStackedLayout>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QScrollArea>
|
|
||||||
#include <QWheelEvent>
|
#include <QWheelEvent>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QSplitter>
|
|
||||||
#include <QXmlStreamWriter>
|
#include <QXmlStreamWriter>
|
||||||
#include <QVector>
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
|
#include "ElidingLabel.h"
|
||||||
#include "DockContainerWidget.h"
|
#include "DockContainerWidget.h"
|
||||||
#include "DockWidget.h"
|
#include "DockWidget.h"
|
||||||
#include "FloatingDockContainer.h"
|
#include "FloatingDockContainer.h"
|
||||||
@ -54,7 +51,6 @@
|
|||||||
#include "DockAreaTitleBar.h"
|
#include "DockAreaTitleBar.h"
|
||||||
#include "DockComponentsFactory.h"
|
#include "DockComponentsFactory.h"
|
||||||
#include "DockWidgetTab.h"
|
#include "DockWidgetTab.h"
|
||||||
#include "SideTabBar.h"
|
|
||||||
#include "DockWidgetSideTab.h"
|
#include "DockWidgetSideTab.h"
|
||||||
#include "OverlayDockContainer.h"
|
#include "OverlayDockContainer.h"
|
||||||
|
|
||||||
@ -451,6 +447,7 @@ void CDockAreaWidget::insertDockWidget(int index, CDockWidget* DockWidget,
|
|||||||
d->tabBar()->insertTab(index, TabWidget);
|
d->tabBar()->insertTab(index, TabWidget);
|
||||||
d->tabBar()->blockSignals(false);
|
d->tabBar()->blockSignals(false);
|
||||||
TabWidget->setVisible(!DockWidget->isClosed());
|
TabWidget->setVisible(!DockWidget->isClosed());
|
||||||
|
d->TitleBar->overlayTitleLabel()->setText(DockWidget->windowTitle());
|
||||||
DockWidget->setProperty(INDEX_PROPERTY, index);
|
DockWidget->setProperty(INDEX_PROPERTY, index);
|
||||||
d->MinSizeHint.setHeight(qMax(d->MinSizeHint.height(), DockWidget->minimumSizeHint().height()));
|
d->MinSizeHint.setHeight(qMax(d->MinSizeHint.height(), DockWidget->minimumSizeHint().height()));
|
||||||
d->MinSizeHint.setWidth(qMax(d->MinSizeHint.width(), DockWidget->minimumSizeHint().width()));
|
d->MinSizeHint.setWidth(qMax(d->MinSizeHint.width(), DockWidget->minimumSizeHint().width()));
|
||||||
@ -787,7 +784,9 @@ void CDockAreaWidget::updateTitleBarVisibility()
|
|||||||
|| CDockManager::testConfigFlag(CDockManager::HideSingleCentralWidgetTitleBar));
|
|| CDockManager::testConfigFlag(CDockManager::HideSingleCentralWidgetTitleBar));
|
||||||
Hidden |= (d->Flags.testFlag(HideSingleWidgetTitleBar) && openDockWidgetsCount() == 1);
|
Hidden |= (d->Flags.testFlag(HideSingleWidgetTitleBar) && openDockWidgetsCount() == 1);
|
||||||
d->TitleBar->setVisible(isOverlayed() ? true : !Hidden); // Titlebar must always be visible when overlayed so it can be dragged
|
d->TitleBar->setVisible(isOverlayed() ? true : !Hidden); // Titlebar must always be visible when overlayed so it can be dragged
|
||||||
d->TitleBar->tabBar()->setVisible(isOverlayed() ? false : !Hidden); // Never show tab bar when overlayed
|
auto tabBar = d->TitleBar->tabBar();
|
||||||
|
tabBar->setVisible(isOverlayed() ? false : !Hidden); // Never show tab bar when overlayed
|
||||||
|
d->TitleBar->overlayTitleLabel()->setVisible(isOverlayed()); // Always show when overlayed, never otherwise
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user