mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-01-12 16:20:25 +08:00
Fixed setting of splitter sizes for transparent docking
This commit is contained in:
parent
8ea7c265a7
commit
07f9c6d016
@ -603,13 +603,13 @@ void DockContainerWidgetPrivate::moveIntoCenterOfSection(QWidget* Widget, CDockA
|
|||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
void DockContainerWidgetPrivate::moveToNewSection(QWidget* Widget, CDockAreaWidget* TargetDockArea, DockWidgetArea area)
|
void DockContainerWidgetPrivate::moveToNewSection(QWidget* Widget, CDockAreaWidget* TargetArea, DockWidgetArea area)
|
||||||
{
|
{
|
||||||
// Dropping into center means all dock widgets in the dropped floating
|
// Dropping into center means all dock widgets in the dropped floating
|
||||||
// widget will become tabs of the drop area
|
// widget will become tabs of the drop area
|
||||||
if (CenterDockWidgetArea == area)
|
if (CenterDockWidgetArea == area)
|
||||||
{
|
{
|
||||||
moveIntoCenterOfSection(Widget, TargetDockArea);
|
moveIntoCenterOfSection(Widget, TargetArea);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -634,21 +634,29 @@ void DockContainerWidgetPrivate::moveToNewSection(QWidget* Widget, CDockAreaWidg
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto InsertParam = internal::dockAreaInsertParameters(area);
|
auto InsertParam = internal::dockAreaInsertParameters(area);
|
||||||
QSplitter* TargetAreaSplitter = internal::findParent<QSplitter*>(TargetDockArea);
|
QSplitter* TargetAreaSplitter = internal::findParent<QSplitter*>(TargetArea);
|
||||||
int index = TargetAreaSplitter ->indexOf(TargetDockArea);
|
int AreaIndex = TargetAreaSplitter->indexOf(TargetArea);
|
||||||
|
auto Sizes = TargetAreaSplitter->sizes();
|
||||||
if (TargetAreaSplitter->orientation() == InsertParam.orientation())
|
if (TargetAreaSplitter->orientation() == InsertParam.orientation())
|
||||||
{
|
{
|
||||||
ADS_PRINT("TargetAreaSplitter->orientation() == InsertParam.orientation()");
|
int TargetAreaSize = (InsertParam.orientation() == Qt::Horizontal) ? TargetArea->width() : TargetArea->height();
|
||||||
TargetAreaSplitter->insertWidget(index + InsertParam.insertOffset(), NewDockArea);
|
TargetAreaSplitter->insertWidget(AreaIndex + InsertParam.insertOffset(), NewDockArea);
|
||||||
|
int Size = (TargetAreaSize - TargetAreaSplitter->handleWidth()) / 2;
|
||||||
|
Sizes[AreaIndex] = Size;
|
||||||
|
Sizes.insert(AreaIndex, Size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ADS_PRINT("TargetAreaSplitter->orientation() != InsertParam.orientation()");
|
auto Sizes = TargetAreaSplitter->sizes();
|
||||||
|
int TargetAreaSize = (InsertParam.orientation() == Qt::Horizontal) ? TargetArea->width() : TargetArea->height();
|
||||||
QSplitter* NewSplitter = newSplitter(InsertParam.orientation());
|
QSplitter* NewSplitter = newSplitter(InsertParam.orientation());
|
||||||
NewSplitter->addWidget(TargetDockArea);
|
NewSplitter->addWidget(TargetArea);
|
||||||
insertWidgetIntoSplitter(NewSplitter, NewDockArea, InsertParam.append());
|
insertWidgetIntoSplitter(NewSplitter, NewDockArea, InsertParam.append());
|
||||||
TargetAreaSplitter->insertWidget(index, NewSplitter);
|
int Size = TargetAreaSize / 2;
|
||||||
|
NewSplitter->setSizes({Size, Size});
|
||||||
|
TargetAreaSplitter->insertWidget(AreaIndex, NewSplitter);
|
||||||
}
|
}
|
||||||
|
TargetAreaSplitter->setSizes(Sizes);
|
||||||
|
|
||||||
addDockAreasToList({NewDockArea});
|
addDockAreasToList({NewDockArea});
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Define ADS_DEBUG_PRINT to enable a lot of debug output
|
// Define ADS_DEBUG_PRINT to enable a lot of debug output
|
||||||
#define ADS_DEBUG_PRINT
|
|
||||||
#ifdef ADS_DEBUG_PRINT
|
#ifdef ADS_DEBUG_PRINT
|
||||||
#define ADS_PRINT(s) qDebug() << s
|
#define ADS_PRINT(s) qDebug() << s
|
||||||
#else
|
#else
|
||||||
|
Loading…
Reference in New Issue
Block a user