diff --git a/kcms/touchpad/src/backends/x11/libinputtouchpad.h b/kcms/touchpad/src/backends/x11/libinputtouchpad.h --- a/kcms/touchpad/src/backends/x11/libinputtouchpad.h +++ b/kcms/touchpad/src/backends/x11/libinputtouchpad.h @@ -38,6 +38,9 @@ bool getDefaultConfig() override; bool isChangedConfig() override; + int touchpadOff() override; + XcbAtom &touchpadOffAtom() override; + private: template diff --git a/kcms/touchpad/src/backends/x11/libinputtouchpad.cpp b/kcms/touchpad/src/backends/x11/libinputtouchpad.cpp --- a/kcms/touchpad/src/backends/x11/libinputtouchpad.cpp +++ b/kcms/touchpad/src/backends/x11/libinputtouchpad.cpp @@ -366,6 +366,16 @@ return changed; } +int LibinputTouchpad::touchpadOff() +{ + return m_enabled.val; +} + +XcbAtom &LibinputTouchpad::touchpadOffAtom() +{ + return *m_atoms[QLatin1Literal("enabled")].data(); +} + template bool LibinputTouchpad::valueLoader(Prop &prop) { diff --git a/kcms/touchpad/src/backends/x11/synapticstouchpad.h b/kcms/touchpad/src/backends/x11/synapticstouchpad.h --- a/kcms/touchpad/src/backends/x11/synapticstouchpad.h +++ b/kcms/touchpad/src/backends/x11/synapticstouchpad.h @@ -29,11 +29,16 @@ public: SynapticsTouchpad(Display *display, int deviceId); + void setTouchpadOff(int touchpadOff) override; + int touchpadOff() override; + + XcbAtom &touchpadOffAtom() override; + protected: double getPropertyScale(const QString &name) const override; private: - XcbAtom m_capsAtom; + XcbAtom m_capsAtom, m_touchpadOffAtom; int m_resX, m_resY; QStringList m_scaleByResX, m_scaleByResY, m_toRadians; }; diff --git a/kcms/touchpad/src/backends/x11/synapticstouchpad.cpp b/kcms/touchpad/src/backends/x11/synapticstouchpad.cpp --- a/kcms/touchpad/src/backends/x11/synapticstouchpad.cpp +++ b/kcms/touchpad/src/backends/x11/synapticstouchpad.cpp @@ -235,6 +235,28 @@ m_paramList = synapticsProperties; } +void SynapticsTouchpad::setTouchpadOff(int touchpadOff) +{ + PropertyInfo off(m_display, m_deviceId, m_touchpadOffAtom.atom(), 0); + if (off.b && *(off.b) != touchpadOff) { + *(off.b) = touchpadOff; + off.set(); + } + + flush(); +} + +int SynapticsTouchpad::touchpadOff() +{ + PropertyInfo off(m_display, m_deviceId, m_touchpadOffAtom.atom(), 0); + return off.value(0).toInt(); +} + +XcbAtom &SynapticsTouchpad::touchpadOffAtom() +{ + return m_touchpadOffAtom; +} + double SynapticsTouchpad::getPropertyScale(const QString &name) const { if (m_scaleByResX.contains(name) && m_scaleByResY.contains(name)) { diff --git a/kcms/touchpad/src/backends/x11/xlibtouchpad.h b/kcms/touchpad/src/backends/x11/xlibtouchpad.h --- a/kcms/touchpad/src/backends/x11/xlibtouchpad.h +++ b/kcms/touchpad/src/backends/x11/xlibtouchpad.h @@ -60,10 +60,10 @@ virtual bool isChangedConfig() { return false; } void setEnabled(bool enable); bool enabled(); - void setTouchpadOff(int touchpadOff); - int touchpadOff(); + virtual void setTouchpadOff(int touchpadOff) {} + virtual int touchpadOff() = 0; - XcbAtom &touchpadOffAtom(); + virtual XcbAtom &touchpadOffAtom() = 0; protected: void loadSupportedProperties(const Parameter *props); @@ -78,7 +78,7 @@ xcb_connection_t *m_connection; int m_deviceId; - XcbAtom m_floatType, m_enabledAtom, m_touchpadOffAtom; + XcbAtom m_floatType, m_enabledAtom; QMap > m_atoms; diff --git a/kcms/touchpad/src/backends/x11/xlibtouchpad.cpp b/kcms/touchpad/src/backends/x11/xlibtouchpad.cpp --- a/kcms/touchpad/src/backends/x11/xlibtouchpad.cpp +++ b/kcms/touchpad/src/backends/x11/xlibtouchpad.cpp @@ -251,29 +251,6 @@ return enabled.value(0).toBool(); } - -void XlibTouchpad::setTouchpadOff(int touchpadOff) -{ - PropertyInfo off(m_display, m_deviceId, m_touchpadOffAtom.atom(), 0); - if (off.b && *(off.b) != touchpadOff) { - *(off.b) = touchpadOff; - off.set(); - } - - flush(); -} - -int XlibTouchpad::touchpadOff() -{ - PropertyInfo off(m_display, m_deviceId, m_touchpadOffAtom.atom(), 0); - return off.value(0).toInt(); -} - -XcbAtom& XlibTouchpad::touchpadOffAtom() -{ - return m_touchpadOffAtom; -} - const Parameter* XlibTouchpad::findParameter(const QString& name) { for (const Parameter *par = m_paramList; par->name; par++) {