mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-04-16 10:24:45 +08:00
Fixed resizing of dropped widget to the size of the dock overlay, small improve to improve performance when dropping into a container with many widgets
This commit is contained in:
parent
9f1b2c122a
commit
fcb1846bf5
@ -281,7 +281,6 @@ void DockContainerWidgetPrivate::dropIntoSection(CFloatingDockContainer* Floatin
|
|||||||
Splitter->addWidget(TargetArea);
|
Splitter->addWidget(TargetArea);
|
||||||
TargetAreaSplitter = Splitter;
|
TargetAreaSplitter = Splitter;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AreaIndex = TargetAreaSplitter->indexOf(TargetArea);
|
int AreaIndex = TargetAreaSplitter->indexOf(TargetArea);
|
||||||
auto Widget = FloatingWidget->dockContainer()->findChild<QWidget*>(QString(), Qt::FindDirectChildrenOnly);
|
auto Widget = FloatingWidget->dockContainer()->findChild<QWidget*>(QString(), Qt::FindDirectChildrenOnly);
|
||||||
auto FloatingSplitter = dynamic_cast<QSplitter*>(Widget);
|
auto FloatingSplitter = dynamic_cast<QSplitter*>(Widget);
|
||||||
@ -316,8 +315,8 @@ void DockContainerWidgetPrivate::dropIntoSection(CFloatingDockContainer* Floatin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
insertWidgetIntoSplitter(NewSplitter, TargetArea, !InsertParam.append());
|
|
||||||
TargetAreaSplitter->insertWidget(AreaIndex, NewSplitter);
|
TargetAreaSplitter->insertWidget(AreaIndex, NewSplitter);
|
||||||
|
insertWidgetIntoSplitter(NewSplitter, TargetArea, !InsertParam.append());
|
||||||
}
|
}
|
||||||
|
|
||||||
FloatingWidget->deleteLater();
|
FloatingWidget->deleteLater();
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
#include "DockWidget.h"
|
#include "DockWidget.h"
|
||||||
#include "DockOverlay.h"
|
#include "DockOverlay.h"
|
||||||
|
|
||||||
|
|
||||||
namespace ads
|
namespace ads
|
||||||
{
|
{
|
||||||
static unsigned int zOrderCounter = 0;
|
static unsigned int zOrderCounter = 0;
|
||||||
@ -119,15 +118,21 @@ void FloatingDockContainerPrivate::titleMouseReleaseEvent()
|
|||||||
{
|
{
|
||||||
// Resize the floating widget to the size of the highlighted drop area
|
// Resize the floating widget to the size of the highlighted drop area
|
||||||
// rectangle
|
// rectangle
|
||||||
QRect Rect = DockManager->containerOverlay()->dropOverlayRect();
|
CDockOverlay* Overlay = DockManager->containerOverlay();
|
||||||
if (!Rect.isValid())
|
if (!Overlay->dropOverlayRect().isValid())
|
||||||
{
|
{
|
||||||
Rect = DockManager->dockAreaOverlay()->rect();
|
Overlay = DockManager->dockAreaOverlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QRect Rect = Overlay->dropOverlayRect();
|
||||||
|
int FrameWidth = (_this->frameSize().width() - _this->rect().width()) / 2;
|
||||||
|
int TitleBarHeight = _this->frameSize().height() - _this->rect().height() - FrameWidth;
|
||||||
if (Rect.isValid())
|
if (Rect.isValid())
|
||||||
{
|
{
|
||||||
_this->resize(Rect.size());
|
QPoint TopLeft = Overlay->mapToGlobal(Rect.topLeft());
|
||||||
|
TopLeft.ry() += TitleBarHeight;
|
||||||
|
_this->setGeometry(QRect(TopLeft, QSize(Rect.width(), Rect.height() - TitleBarHeight)));
|
||||||
|
QApplication::processEvents();
|
||||||
}
|
}
|
||||||
DropContainer->dropFloatingWidget(_this, QCursor::pos());
|
DropContainer->dropFloatingWidget(_this, QCursor::pos());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user