diff --git a/src/widgetbasedpoller.h b/src/widgetbasedpoller.h --- a/src/widgetbasedpoller.h +++ b/src/widgetbasedpoller.h @@ -13,6 +13,7 @@ class QTimer; class QEvent; +class QWindow; class KIDLETIME_EXPORT WidgetBasedPoller : public AbstractSystemPoller { @@ -49,7 +50,7 @@ private: QTimer *m_pollTimer; - QWidget *m_grabber; + QWindow *m_grabber; QList m_timeouts; }; diff --git a/src/widgetbasedpoller.cpp b/src/widgetbasedpoller.cpp --- a/src/widgetbasedpoller.cpp +++ b/src/widgetbasedpoller.cpp @@ -6,9 +6,9 @@ #include "widgetbasedpoller.h" -#include #include #include +#include WidgetBasedPoller::WidgetBasedPoller(QObject *parent) : AbstractSystemPoller(parent) @@ -31,10 +31,9 @@ //setup idle timer, with some smart polling connect(m_pollTimer, &QTimer::timeout, this, &WidgetBasedPoller::poll); - // This code was taken from Lithium/KDE4Powersave - m_grabber = new QWidget(nullptr, Qt::X11BypassWindowManagerHint); - m_grabber->move(-1000, -1000); - m_grabber->setMouseTracking(true); + m_grabber = new QWindow(); + m_grabber->setFlag(Qt::X11BypassWindowManagerHint); + m_grabber->setPosition(-1000, -1000); m_grabber->installEventFilter(this); m_grabber->setObjectName(QStringLiteral("KIdleGrabberWidget")); @@ -76,11 +75,9 @@ void WidgetBasedPoller::waitForActivity() { - // This code was taken from Lithium/KDE4Powersave - m_grabber->show(); - m_grabber->grabMouse(); - m_grabber->grabKeyboard(); + m_grabber->setMouseGrabEnabled(true); + m_grabber->setKeyboardGrabEnabled(true); } @@ -92,8 +89,8 @@ void WidgetBasedPoller::releaseInputLock() { - m_grabber->releaseMouse(); - m_grabber->releaseKeyboard(); + m_grabber->setMouseGrabEnabled(false); + m_grabber->setKeyboardGrabEnabled(false); m_grabber->hide(); }