7#ifndef __KIS_SHORTCUT_MATCHER_H
8#define __KIS_SHORTCUT_MATCHER_H
19class QNativeGestureEvent;
78 static constexpr int TOUCH_SLOP_SQUARED = 16 * 16;
79 static constexpr qreal TOUCH_SLOP = 16;
84 bool hasRunningShortcut()
const;
85 bool hasTouchHoldShortcut()
const;
86 bool hasTouchpadScrollShortcuts()
const;
101 bool supportsHiResInputEvents();
110 bool keyPressed(Qt::Key key);
119 bool autoRepeatedKeyPressed(Qt::Key key);
128 bool keyReleased(Qt::Key key);
139 bool buttonPressed(Qt::MouseButton
button, QEvent *event);
150 bool buttonReleased(Qt::MouseButton
button, QEvent *event);
168 bool pointerMoved(QEvent *event);
182 bool touchBeginEvent(QTouchEvent *event);
183 bool touchUpdateEvent(QTouchEvent *event);
184 bool touchEndEvent(QTouchEvent *event);
191 void touchCancelEvent(QTouchEvent *event);
193 bool nativeGestureBeginEvent(QNativeGestureEvent *event);
194 bool nativeGestureEvent(QNativeGestureEvent *event);
195 bool nativeGestureEndEvent(QNativeGestureEvent *event);
197 bool touchpadScrollBeginEvent(QWheelEvent *event);
198 bool touchpadScrollEvent(QWheelEvent *event);
199 bool touchpadScrollEndEvent(QWheelEvent *event);
217 void reinitializeButtons();
235 bool sanityCheckModifiersCorrectness(Qt::KeyboardModifiers modifiers)
const;
245 bool hasPolledKeys();
251 void lostFocusEvent(
const QPointF &localPos);
257 void toolHasBeenActivated();
287 void clearShortcuts();
289 void setInputActionGroupsMaskCallback(std::function<KisInputActionGroupsMask()> func);
294 int touchHoldDelay()
const;
299 void setTouchHoldDelay(
int value);
306 void setIgnoreMultiFingerCancelWorkaroundEnalbed(
bool value);
311 bool ignoreMultiFingerCancelWorkaroundEnalbed()
const;
315 friend class KisInputManagerTest;
318 void reset(QString msg);
327 template<
typename T,
typename U>
bool tryRunSingleActionShortcutImpl(T param, U *event,
const QSet<Qt::Key> &keysState,
bool keyboard =
true);
329 void prepareReadyShortcuts();
331 bool tryRunReadyShortcut( Qt::MouseButton
button, QEvent* event );
332 void tryActivateReadyShortcut();
333 bool tryEndRunningShortcut( Qt::MouseButton
button, QEvent* event );
334 void forceEndRunningShortcut(
const QPointF &localPos);
335 void forceDeactivateAllActions();
337 bool touchUpdateEventImpl(QTouchEvent *event);
338 void slotTouchHoldCompleted();
340 void setMaxTouchPointEvent(QTouchEvent *event);
341 bool tryFireTapTouchShortcut(QTouchEvent *event, Qt::TouchPointStates allowedStates);
342 KisTouchShortcut *matchTouchShortcut(QTouchEvent *event, Qt::TouchPointStates allowedStates, TouchShortcutMode mode);
343 bool matchTouchShortcutBasedOnState(QTouchEvent *event,
KisTouchShortcut *shortcut, Qt::TouchPointStates allowedStates, TouchShortcutMode mode);
344 bool tryRunTouchShortcut(QTouchEvent *event, Qt::TouchPointStates allowedStates, TouchShortcutMode mode);
345 bool tryEndTouchShortcut(QTouchEvent *event);
346 void tryCancelAllCurrentTouchActionsImpl();
348 template <
typename EventType,
typename ShortcutType>
349 bool tryRunGestureBasedShortcutImpl(EventType *event, ShortcutType **resultShortcutPtr,
const QList<ShortcutType*> allTypedShortcuts);
350 template <
typename EventType,
typename ShortcutType>
351 bool tryEndGestureBasedShortcutImpl(EventType *event, ShortcutType **resultShortcutPtr);
353 bool tryRunNativeGestureShortcut(QNativeGestureEvent *event);
354 bool tryEndNativeGestureShortcut(QNativeGestureEvent *event);
356 bool tryRunTouchpadScrollShortcut(QWheelEvent* event);
357 bool tryEndTouchpadScrollShortcut(QWheelEvent* event);
float value(const T *src, size_t ch)
void suppressAllKeyboardActions(bool value)
void suppressAllActions(bool value)
The KisTouchShortcut class only handles touch gestures it does not handle tool invocation i....
QString button(const QWheelEvent &ev)