Index: krandrapp.cpp =================================================================== --- kcontrol/randr/krandrapp.cpp (revision 1261452) +++ kcontrol/randr/krandrapp.cpp (working copy) @@ -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 ); } Index: krandrapp.h =================================================================== --- kcontrol/randr/krandrapp.h (revision 1261452) +++ kcontrol/randr/krandrapp.h (working copy) @@ -19,6 +19,7 @@ #ifndef KRANDRAPP_H #define KRANDRAPP_H +#include <tqtimer.h> #include <kuniqueapplication.h> class KRandRSystemTray; @@ -32,8 +33,12 @@ virtual bool x11EventFilter(XEvent * e); +private slots: + void handleX11ConfigChangeEvent(); + private: KRandRSystemTray* m_tray; + TQTimer m_eventMergingTimer; }; #endif