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()