diff options
-rw-r--r-- | kcontrol/randr/krandrapp.cpp | 9 | ||||
-rw-r--r-- | kcontrol/randr/krandrapp.h | 5 |
2 files changed, 13 insertions, 1 deletions
diff --git a/kcontrol/randr/krandrapp.cpp b/kcontrol/randr/krandrapp.cpp index 2d773dd22..eab459e8e 100644 --- a/kcontrol/randr/krandrapp.cpp +++ b/kcontrol/randr/krandrapp.cpp @@ -28,13 +28,20 @@ KRandRApp::KRandRApp() : m_tray(new KRandRSystemTray(0L, "RANDRTray")) { + connect(&m_eventMergingTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(handleX11ConfigChangeEvent())); m_tray->show(); } +void KRandRApp::handleX11ConfigChangeEvent() +{ + m_eventMergingTimer.stop(); + m_tray->configChanged(); +} + bool KRandRApp::x11EventFilter(XEvent* e) { if (e->type == m_tray->screenChangeNotifyEvent()) { - m_tray->configChanged(); + m_eventMergingTimer.start(1000, TRUE); } return KApplication::x11EventFilter( e ); } diff --git a/kcontrol/randr/krandrapp.h b/kcontrol/randr/krandrapp.h index 3b8895fc8..766b0056c 100644 --- a/kcontrol/randr/krandrapp.h +++ b/kcontrol/randr/krandrapp.h @@ -19,6 +19,7 @@ #ifndef KRANDRAPP_H #define KRANDRAPP_H +#include <tqtimer.h> #include <kuniqueapplication.h> class KRandRSystemTray; @@ -32,8 +33,12 @@ public: virtual bool x11EventFilter(XEvent * e); +private slots: + void handleX11ConfigChangeEvent(); + private: KRandRSystemTray* m_tray; + TQTimer m_eventMergingTimer; }; #endif |