xdgshellclient: fix moveresize with touch and CSD
When moveresize is done with touch we need to use the current touch point and not the mouse position. BUG: 438283 CCBUG: 431489
This commit is contained in:
parent
a4dcfbfb31
commit
f54d7a2697
1 changed files with 15 additions and 2 deletions
|
@ -21,6 +21,7 @@
|
|||
#if KWIN_BUILD_ACTIVITIES
|
||||
#include "activities.h"
|
||||
#endif
|
||||
#include "touch_input.h"
|
||||
|
||||
#include <KDecoration2/DecoratedClient>
|
||||
#include <KDecoration2/Decoration>
|
||||
|
@ -961,7 +962,13 @@ void XdgToplevelClient::handleMoveRequested(SeatInterface *seat, quint32 serial)
|
|||
return;
|
||||
}
|
||||
if (isMovable()) {
|
||||
performMouseCommand(Options::MouseMove, Cursors::self()->mouse()->pos());
|
||||
QPoint cursorPos;
|
||||
if (seat->hasImplicitPointerGrab(serial)) {
|
||||
cursorPos = Cursors::self()->mouse()->pos();
|
||||
} else {
|
||||
cursorPos = input()->touch()->position().toPoint();
|
||||
}
|
||||
performMouseCommand(Options::MouseMove, cursorPos);
|
||||
} else {
|
||||
qCDebug(KWIN_CORE) << this << "is immovable, ignoring the move request";
|
||||
}
|
||||
|
@ -979,7 +986,13 @@ void XdgToplevelClient::handleResizeRequested(SeatInterface *seat, Qt::Edges edg
|
|||
finishInteractiveMoveResize(false);
|
||||
}
|
||||
setInteractiveMoveResizePointerButtonDown(true);
|
||||
setInteractiveMoveOffset(Cursors::self()->mouse()->pos() - pos()); // map from global
|
||||
QPoint cursorPos;
|
||||
if (seat->hasImplicitPointerGrab(serial)) {
|
||||
cursorPos = Cursors::self()->mouse()->pos();
|
||||
} else {
|
||||
cursorPos = input()->touch()->position().toPoint();
|
||||
}
|
||||
setInteractiveMoveOffset(cursorPos - pos()); // map from global
|
||||
setInvertedInteractiveMoveOffset(rect().bottomRight() - interactiveMoveOffset());
|
||||
setUnrestrictedInteractiveMoveResize(false);
|
||||
auto toPosition = [edges] {
|
||||
|
|
Loading…
Reference in a new issue