diff --git a/workspace.cpp b/workspace.cpp index 4e16584eba..df8b9f6ec1 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -321,10 +321,13 @@ void Workspace::init() Window root_return, parent_return, *wins; XWindowAttributes attr; + connect(&resetTimer, SIGNAL(timeout()), this, + SLOT(slotResetAllClients())); + connect(&mgr, SIGNAL(resetAllClients()), this, SLOT(slotResetAllClients())); connect(kapp, SIGNAL(appearanceChanged()), this, - SLOT(slotResetAllClients())); + SLOT(slotResetAllClientsDelayed())); XQueryTree(qt_xdisplay(), root, &root_return, &parent_return, &wins, &nwins); for (i = 0; i < nwins; i++) { @@ -1592,6 +1595,7 @@ void Workspace::unclutterDesktop() */ void Workspace::reconfigure() { + slotResetAllClientsDelayed(); KGlobal::config()->reparseConfiguration(); mgr.updatePlugin(); options->reload(); @@ -2786,6 +2790,10 @@ bool Workspace::keyPressMouseEmulation( XKeyEvent key ) } +void Workspace::slotResetAllClientsDelayed() +{ + resetTimer.start(200, true); +} /*! Puts a new decoration frame around every client. Used to react on @@ -2793,7 +2801,7 @@ bool Workspace::keyPressMouseEmulation( XKeyEvent key ) */ void Workspace::slotResetAllClients() { - + resetTimer.stop(); ClientList stack = stacking_order; Client* active = activeClient(); block_focus = TRUE; diff --git a/workspace.h b/workspace.h index a8ae326a10..c09d9dd833 100644 --- a/workspace.h +++ b/workspace.h @@ -12,6 +12,7 @@ Copyright (C) 1999, 2000 Matthias Ettrich #include #include #include +#include #include "options.h" #include "plugins.h" #include "KWinInterface.h" @@ -233,6 +234,7 @@ public slots: void slotMouseEmulation(); + void slotResetAllClientsDelayed(); void slotResetAllClients(); void slotLogout(); @@ -350,6 +352,9 @@ private: // colormap handling Colormap default_colormap; Colormap installed_colormap; + + // Timer to collect requests for 'ResetAllClients' + QTimer resetTimer; }; inline WId Workspace::rootWin() const