12#include <config-kwin.h>
22#include <KDecoration2/Decoration>
24#if KWIN_BUILD_SCREENLOCKER
25#include <KScreenLocker/KsldApp>
51#if KWIN_BUILD_SCREENLOCKER
53 connect(ScreenLocker::KSldApp::self(), &ScreenLocker::KSldApp::lockStateChanged,
this, [
this]() {
60 connect(
workspace(), &QObject::destroyed,
this, [
this] {
70 if (m_windowUpdatedInCycle) {
73 m_windowUpdatedInCycle =
true;
77 if (m_activeTouchPoints.count() > 1) {
87 return !m_activeTouchPoints.isEmpty();
90void TouchInputRedirection::focusUpdate(
Window *focusOld,
Window *focusNow)
94 if (focusOld && focusOld->
isClient()) {
97 disconnect(m_focusGeometryConnection);
98 m_focusGeometryConnection = QMetaObject::Connection();
100 if (focusNow && focusNow->
isClient()) {
105 if (!focusNow || !focusNow->
surface()) {
106 seat->setFocusedTouchSurface(
nullptr);
119 if (
focus()->surface() !=
seat->focusedTouchSurface()) {
122 seat->setFocusedTouchSurfacePosition(-1 *
focus()->inputTransformation().map(
focus()->pos()) +
focus()->pos());
126void TouchInputRedirection::cleanupDecoration(Decoration::DecoratedClientImpl *old, Decoration::DecoratedClientImpl *now)
136 m_lastPosition = pos;
137 m_windowUpdatedInCycle =
false;
138 m_activeTouchPoints.insert(
id);
139 if (m_activeTouchPoints.count() == 1) {
146 m_windowUpdatedInCycle =
false;
154 if (!m_activeTouchPoints.remove(
id)) {
158 m_windowUpdatedInCycle =
false;
161 m_windowUpdatedInCycle =
false;
162 if (m_activeTouchPoints.count() == 0) {
172 if (!m_activeTouchPoints.contains(
id)) {
176 m_lastPosition = pos;
177 m_windowUpdatedInCycle =
false;
180 m_windowUpdatedInCycle =
false;
192 if (!m_activeTouchPoints.isEmpty()) {
193 m_activeTouchPoints.clear();
208#include "moc_touch_input.cpp"
void setHasTouch(bool has)
SeatInterface * seat() const
QMatrix4x4 inputTransformation() const
virtual bool isClient() const
SurfaceInterface * surface() const
virtual void pointerEnterEvent(const QPointF &globalPos)
virtual void pointerLeaveEvent()
void frameGeometryChanged(const QRectF &oldGeometry)
void setActiveCursorOutput(Output *output)
KWayland::Client::Seat * seat
WaylandServer * waylandServer()
InputRedirection * input()