Make DragArea::drop() deal in WindowBeingDragged()

Preparing for wayland case.
This commit is contained in:
Sergio Martins
2020-10-16 10:49:42 +01:00
parent 9e418ced53
commit 4fa47403c5
3 changed files with 11 additions and 4 deletions

View File

@@ -236,12 +236,18 @@ bool DropArea::drop(WindowBeingDragged *droppedWindow, QPoint globalPos)
return false;
}
return drop(floatingWindow, acceptingFrame, droploc);
return drop(droppedWindow, acceptingFrame, droploc);
}
bool DropArea::drop(FloatingWindow *droppedWindow, Frame *acceptingFrame,
bool DropArea::drop(WindowBeingDragged *draggedWindow, Frame *acceptingFrame,
DropIndicatorOverlayInterface::DropLocation droploc)
{
FloatingWindow *droppedWindow = draggedWindow ? draggedWindow->floatingWindow()
: nullptr;
if (!droppedWindow)
return false;
bool result = true;
const bool needToFocusNewlyDroppedWidgets = Config::self().flags() & Config::Flag_TitleBarIsFocusable;
const DockWidgetBase::List droppedDockWidgets = needToFocusNewlyDroppedWidgets ? droppedWindow->multiSplitter()->dockWidgets()

View File

@@ -73,7 +73,7 @@ private:
template <typename T>
bool validateAffinity(T *, Frame *acceptingFrame = nullptr) const;
bool drop(FloatingWindow *droppedWindow, Frame *acceptingFrame, DropIndicatorOverlayInterface::DropLocation);
bool drop(WindowBeingDragged *draggedWindow, Frame *acceptingFrame, DropIndicatorOverlayInterface::DropLocation);
bool drop(QWidgetOrQuick *droppedwindow, KDDockWidgets::Location location, Frame *relativeTo);
Frame *frameContainingPos(QPoint globalPos) const;
void updateFloatingActions();

View File

@@ -326,7 +326,8 @@ void TestCommon::tst_tabbingWithAffinities()
{
SetExpectedWarning ignoreWarning("Refusing to dock widget with incompatible affinity");
auto dropArea = m1->dropArea();
QVERIFY(!dropArea->drop(fw2, dw1->frame(), DropIndicatorOverlayInterface::DropLocation_Center));
WindowBeingDragged wbd(fw2, fw2);
QVERIFY(!dropArea->drop(&wbd, dw1->frame(), DropIndicatorOverlayInterface::DropLocation_Center));
QVERIFY(dw1->window() != dw2->window());
}