<table><tr><td style="">graesslin created this revision.<br />Restricted Application added a subscriber: plasma-devel.<br />Restricted Application added a project: Plasma on Wayland.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D5097" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This change adds global touchpad swipe gestures to the<br />
GlobalShortcutsManager and hooks up the swipe gestures as defined at the<br />
Plasma Affenfels sprint:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">swipe up: Desktop Grid</li>
<li class="remarkup-list-item">swipe down: Present Windows</li>
<li class="remarkup-list-item">swipe left: previous virtual desktop</li>
<li class="remarkup-list-item">swipe right: next virtual desktop</li>
</ul>

<p>The main work is handled by two new classes: SwipeGesture and<br />
GestureRecognizer. This is implemented in a way that it can be extended<br />
to also recognize touch screen gestures and pinch gestures.</p>

<p>The SwipeGesture defines what is required for the gesture to trigger.<br />
Currently this includes the minimum and maximum number of fingers<br />
participating in the gesture and the direction. The gesture gets<br />
registered in the GestureRecognizer.</p>

<p>The events for the gesture are fed into the GestureRecognizer. It<br />
evaluates which gestures could trigger and tracks them for every update<br />
of the gesture. In the process of the gesture tracking the<br />
GestureRecognizer emits signals on the Gesture:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">started: when the Gesture gets considered for a sequence</li>
<li class="remarkup-list-item">cancelled: the Gesture no longer matches the sequence</li>
<li class="remarkup-list-item">triggered: the sequence ended and the Gesture still matches</li>
</ul>

<p>The remaining changes are related to hook up the existing shortcut<br />
framework with the new touchpad gestures. The GlobalShortcutManager<br />
gained support for it, InputRedirection and EffectsHandler offer methods<br />
to register a QAction. VirtualDesktopManager, PresentWindows and<br />
DesktopGrid are adjusted to support the gesture.</p></div></div><br /><div><strong>BRANCH</strong><div><div>gesture-support</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5097" rel="noreferrer">https://phabricator.kde.org/D5097</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
autotests/CMakeLists.txt<br />
autotests/mock_effectshandler.h<br />
autotests/test_gestures.cpp<br />
autotests/test_screen_edges.cpp<br />
autotests/test_virtual_desktops.cpp<br />
effects.cpp<br />
effects.h<br />
effects/desktopgrid/desktopgrid.cpp<br />
effects/presentwindows/presentwindows.cpp<br />
gestures.cpp<br />
gestures.h<br />
globalshortcuts.cpp<br />
globalshortcuts.h<br />
input.cpp<br />
input.h<br />
libkwineffects/CMakeLists.txt<br />
libkwineffects/kwineffects.h<br />
libkwineffects/kwinglobals.h<br />
virtualdesktops.cpp<br />
virtualdesktops.h</div></div></div><br /><div><strong>To: </strong>graesslin, KWin, Plasma on Wayland<br /><strong>Cc: </strong>plasma-devel, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, eliasp, sebas, apol<br /></div>