forked from github_mirror/framelesshelper
UNIX: resize: fix wrong logic.
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
b5e497e6ff
commit
d3152df01f
|
@ -511,7 +511,28 @@ bool FramelessHelper::eventFilter(QObject *object, QEvent *event)
|
||||||
&& isResizePermitted(globalPoint, point, object) && getResizable(object)) {
|
&& isResizePermitted(globalPoint, point, object) && getResizable(object)) {
|
||||||
if (!window->startSystemResize(edges)) {
|
if (!window->startSystemResize(edges)) {
|
||||||
// Fallback to the traditional way.
|
// Fallback to the traditional way.
|
||||||
window->resize(window->width() + deltaX, window->height() + deltaY);
|
bool leftHandled = false, topHandled = false;
|
||||||
|
int newX = window->x();
|
||||||
|
int newY = window->y();
|
||||||
|
int newWidth = window->width();
|
||||||
|
int newHeight = window->height();
|
||||||
|
if (edges.testFlag(Qt::Edge::LeftEdge)) {
|
||||||
|
newX += deltaX;
|
||||||
|
newWidth -= deltaX;
|
||||||
|
leftHandled = true;
|
||||||
|
}
|
||||||
|
if (edges.testFlag(Qt::Edge::TopEdge)) {
|
||||||
|
newY += deltaY;
|
||||||
|
newHeight -= deltaY;
|
||||||
|
topHandled = true;
|
||||||
|
}
|
||||||
|
if (!leftHandled) {
|
||||||
|
newWidth += deltaX;
|
||||||
|
}
|
||||||
|
if (!topHandled) {
|
||||||
|
newHeight += deltaY;
|
||||||
|
}
|
||||||
|
window->setGeometry(newX, newY, newWidth, newHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue