input: Move MoveResize input filter after global shortcut input filter

This allows using global shortcuts while a move/resize is ongoing. Most
importantly, this allows moving a window to a different desktop by
picking it up and then using a global shortcut to move to a different
desktop.

BUG: 444696
This commit is contained in:
Arjen Hiemstra 2022-03-03 16:21:23 +01:00
parent 2575bf8cd8
commit 79dfb1ff61
2 changed files with 12 additions and 1 deletions

View file

@ -640,6 +640,17 @@ void EffectsHandlerImpl::startMouseInterception(Effect *effect, Qt::CursorShape
void EffectsHandlerImpl::doStartMouseInterception(Qt::CursorShape shape)
{
input()->pointer()->setEffectsOverrideCursor(shape);
// We want to allow global shortcuts to be triggered when moving a
// window so it is possible to pick up a window and then move it to a
// different desktop by using the global shortcut to switch desktop.
// However, that means that some other things can also be triggered. If
// an effect that fill the screen gets triggered that way, we end up in a
// weird state where the move will restart after the effect closes. So to
// avoid that, abort move/resize if a full screen effect starts.
if (workspace()->moveResizeWindow()) {
workspace()->moveResizeWindow()->endInteractiveMoveResize();
}
}
void EffectsHandlerImpl::stopMouseInterception(Effect *effect)

View file

@ -2853,7 +2853,6 @@ void InputRedirection::setupInputFilters()
if (hasGlobalShortcutSupport) {
installInputEventFilter(new ScreenEdgeInputFilter);
}
installInputEventFilter(new MoveResizeFilter);
#if KWIN_BUILD_TABBOX
installInputEventFilter(new TabBoxInputFilter);
#endif
@ -2861,6 +2860,7 @@ void InputRedirection::setupInputFilters()
installInputEventFilter(new GlobalShortcutFilter);
}
installInputEventFilter(new EffectsFilter);
installInputEventFilter(new MoveResizeFilter);
installInputEventFilter(new PopupInputFilter);
installInputEventFilter(new DecorationEventFilter);
installInputEventFilter(new WindowActionInputFilter);