Add initial functionality for Auto hide
- Add left and right side tab widgets - Add overlay dock and overlay dock widget behavior
This commit is contained in:
@@ -56,6 +56,7 @@
|
||||
#include "DockAreaTitleBar.h"
|
||||
#include "DockFocusController.h"
|
||||
#include "DockSplitter.h"
|
||||
#include "OverlayDockContainer.h"
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#include "linux/FloatingWidgetTitleBar.h"
|
||||
@@ -99,6 +100,7 @@ struct DockManagerPrivate
|
||||
CDockManager* _this;
|
||||
QList<CFloatingDockContainer*> FloatingWidgets;
|
||||
QList<CFloatingDockContainer*> HiddenFloatingWidgets;
|
||||
QList<COverlayDockContainer*> OverlayWidgets;
|
||||
QList<CDockContainerWidget*> Containers;
|
||||
CDockOverlay* ContainerOverlay;
|
||||
CDockOverlay* DockAreaOverlay;
|
||||
@@ -146,6 +148,15 @@ struct DockManagerPrivate
|
||||
}
|
||||
}
|
||||
|
||||
void deleteOverlayWidgets()
|
||||
{
|
||||
for (auto OverlayWidget : OverlayWidgets)
|
||||
{
|
||||
OverlayWidget->cleanupAndDelete();
|
||||
}
|
||||
OverlayWidgets.clear();
|
||||
}
|
||||
|
||||
void markDockWidgetsDirty()
|
||||
{
|
||||
for (auto DockWidget : DockWidgetsMap)
|
||||
@@ -430,6 +441,7 @@ bool DockManagerPrivate::restoreState(const QByteArray& State, int version)
|
||||
|
||||
// Hide updates of floating widgets from use
|
||||
hideFloatingWidgets();
|
||||
deleteOverlayWidgets();
|
||||
markDockWidgetsDirty();
|
||||
|
||||
if (!restoreStateFromXml(state, version))
|
||||
@@ -481,6 +493,7 @@ CDockManager::CDockManager(QWidget *parent) :
|
||||
d(new DockManagerPrivate(this))
|
||||
{
|
||||
createRootSplitter();
|
||||
createSideTabBarWidgets();
|
||||
QMainWindow* MainWindow = qobject_cast<QMainWindow*>(parent);
|
||||
if (MainWindow)
|
||||
{
|
||||
@@ -525,6 +538,13 @@ CDockManager::~CDockManager()
|
||||
{
|
||||
delete FloatingWidget;
|
||||
}
|
||||
|
||||
auto OverlayWidgets = d->OverlayWidgets;
|
||||
for (auto OverlayWidget : OverlayWidgets)
|
||||
{
|
||||
delete OverlayWidget;
|
||||
}
|
||||
|
||||
delete d;
|
||||
}
|
||||
|
||||
@@ -616,6 +636,14 @@ void CDockManager::registerFloatingWidget(CFloatingDockContainer* FloatingWidget
|
||||
ADS_PRINT("d->FloatingWidgets.count() " << d->FloatingWidgets.count());
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
void CDockManager::registerOverlayWidget(COverlayDockContainer* OverlayWidget)
|
||||
{
|
||||
d->OverlayWidgets.append(OverlayWidget);
|
||||
Q_EMIT overlayWidgetCreated(OverlayWidget);
|
||||
ADS_PRINT("d->OverlayWidgets.count() " << d->OverlayWidgets.count());
|
||||
}
|
||||
|
||||
|
||||
//============================================================================
|
||||
void CDockManager::removeFloatingWidget(CFloatingDockContainer* FloatingWidget)
|
||||
@@ -623,6 +651,11 @@ void CDockManager::removeFloatingWidget(CFloatingDockContainer* FloatingWidget)
|
||||
d->FloatingWidgets.removeAll(FloatingWidget);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
void CDockManager::removeOverlayWidget(COverlayDockContainer* OverlayWidget)
|
||||
{
|
||||
d->OverlayWidgets.removeAll(OverlayWidget);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
void CDockManager::registerDockContainer(CDockContainerWidget* DockContainer)
|
||||
|
||||
Reference in New Issue
Block a user