DockManager: add the ability to programmatically update splitter sizes (#266)
Add the ability to programmatically update splitter sizes. The user must specify the dock area that is contained in a splitter and a list of sizes. The list of sizes will be passed to the splitter that immediately contains the specified dock area. If the dock area is not part of a splitter the method will have no effect. Co-authored-by: Christian Seiler <c.seiler@luxflux.de>
This commit is contained in:
@@ -55,6 +55,7 @@
|
||||
#include "DockingStateReader.h"
|
||||
#include "DockAreaTitleBar.h"
|
||||
#include "DockFocusController.h"
|
||||
#include "DockSplitter.h"
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#include "linux/FloatingWidgetTitleBar.h"
|
||||
@@ -1093,6 +1094,34 @@ CDockWidget* CDockManager::focusedDockWidget() const
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
QList<int> CDockManager::splitterSizes(CDockAreaWidget *ContainedArea) const
|
||||
{
|
||||
if (ContainedArea)
|
||||
{
|
||||
auto Splitter = internal::findParent<CDockSplitter*>(ContainedArea);
|
||||
if (Splitter)
|
||||
{
|
||||
return Splitter->sizes();
|
||||
}
|
||||
}
|
||||
return QList<int>();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CDockManager::setSplitterSizes(CDockAreaWidget *ContainedArea, const QList<int>& sizes)
|
||||
{
|
||||
if (!ContainedArea)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
auto Splitter = internal::findParent<CDockSplitter*>(ContainedArea);
|
||||
if (Splitter && Splitter->count() == sizes.count())
|
||||
{
|
||||
Splitter->setSizes(sizes);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace ads
|
||||
|
||||
|
||||
Reference in New Issue
Block a user