[wayland] Add support for pointer warping in InputRedirectionCursor
With libinput we do can support warping pointers, let's do it.
This commit is contained in:
parent
4ca3734d12
commit
74c111ef88
4 changed files with 27 additions and 1 deletions
|
@ -536,8 +536,11 @@ InputRedirectionCursor::~InputRedirectionCursor()
|
|||
|
||||
void InputRedirectionCursor::doSetPos()
|
||||
{
|
||||
// no support for pointer warping - reset to true position
|
||||
if (input()->supportsPointerWarping()) {
|
||||
input()->warpPointer(currentPos());
|
||||
}
|
||||
slotPosChanged(input()->globalPointer());
|
||||
emit posChanged(currentPos());
|
||||
}
|
||||
|
||||
void InputRedirectionCursor::slotPosChanged(const QPointF &pos)
|
||||
|
|
|
@ -286,6 +286,7 @@ void InputRedirection::setupLibInput()
|
|||
m_libInput = conn;
|
||||
if (conn) {
|
||||
conn->setup();
|
||||
m_pointerWarping = true;
|
||||
connect(conn, &LibInput::Connection::pointerButtonChanged, this, &InputRedirection::processPointerButton);
|
||||
connect(conn, &LibInput::Connection::pointerAxisChanged, this, &InputRedirection::processPointerAxis);
|
||||
connect(conn, &LibInput::Connection::keyChanged, this, &InputRedirection::processKeyboardKey);
|
||||
|
@ -1046,4 +1047,11 @@ void InputRedirection::updatePointerAfterScreenChange()
|
|||
emit globalPointerChanged(m_globalPointer);
|
||||
}
|
||||
|
||||
void InputRedirection::warpPointer(const QPointF &pos)
|
||||
{
|
||||
if (m_pointerWarping) {
|
||||
updatePointerPosition(pos);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
11
input.h
11
input.h
|
@ -139,6 +139,9 @@ public:
|
|||
void cancelTouch();
|
||||
void touchFrame();
|
||||
|
||||
bool supportsPointerWarping() const;
|
||||
void warpPointer(const QPointF &pos);
|
||||
|
||||
static uint8_t toXPointerButton(uint32_t button);
|
||||
static uint8_t toXPointerButton(PointerAxis axis, qreal delta);
|
||||
|
||||
|
@ -219,6 +222,8 @@ private:
|
|||
|
||||
LibInput::Connection *m_libInput = nullptr;
|
||||
|
||||
bool m_pointerWarping = false;
|
||||
|
||||
KWIN_SINGLETON(InputRedirection)
|
||||
friend InputRedirection *input();
|
||||
};
|
||||
|
@ -282,6 +287,12 @@ void InputRedirection::registerShortcut(const QKeySequence &shortcut, QAction *a
|
|||
connect(action, &QAction::triggered, receiver, slot);
|
||||
}
|
||||
|
||||
inline
|
||||
bool InputRedirection::supportsPointerWarping() const
|
||||
{
|
||||
return m_pointerWarping;
|
||||
}
|
||||
|
||||
#if HAVE_XKB
|
||||
inline
|
||||
Qt::KeyboardModifiers Xkb::modifiers() const
|
||||
|
|
|
@ -38,3 +38,7 @@ Qt::KeyboardModifiers KWin::InputRedirection::keyboardModifiers() const
|
|||
{
|
||||
return Qt::NoModifier;
|
||||
}
|
||||
|
||||
void KWin::InputRedirection::warpPointer(const QPointF&)
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue