WidgetResizeHandler: Fix the geometry calculation for non-toplevels

This commit is contained in:
Sergio Martins
2020-12-18 15:20:58 +00:00
parent d2fa5efafe
commit 2c1a70280a

View File

@@ -107,7 +107,8 @@ bool WidgetResizeHandler::eventFilter(QObject *o, QEvent *e)
auto mouseEvent = static_cast<QMouseEvent *>(e);
mResizeWidget = mResizeWidget && (mouseEvent->buttons() & Qt::LeftButton);
const bool state = mResizeWidget;
mResizeWidget = ((o == mTarget) && mResizeWidget);
if (!mFilterIsGlobal)
mResizeWidget = ((o == mTarget) && mResizeWidget);
const bool consumed = mouseMoveEvent(mouseEvent);
mResizeWidget = state;
return consumed;
@@ -127,7 +128,7 @@ bool WidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
return pos != CursorPosition_Undefined;
}
const QRect oldGeometry = mTarget->geometry();
const QRect oldGeometry = KDDockWidgets::globalGeometry(mTarget);
QRect newGeometry = oldGeometry;
{
@@ -200,8 +201,14 @@ bool WidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
}
}
if (newGeometry != mTarget->geometry())
if (newGeometry != mTarget->geometry()) {
if (!mTarget->isTopLevel()) {
// Back to local.
newGeometry.moveTopLeft(mTarget->mapFromGlobal(newGeometry.topLeft()) + mTarget->pos());
}
mTarget->setGeometry(newGeometry);
}
return true;
}