aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kanakarakis <ivan.kanak@gmail.com>2012-01-03 05:51:53 +0200
committerIvan Kanakarakis <ivan.kanak@gmail.com>2012-01-03 05:51:53 +0200
commit66e64632f30d2829b7193b9ace4fb2d1c71aec86 (patch)
treee67a1a6fed1e17584dbf70c557ff8c5a0608f5da
parenteae5f705bf2c655006f52c069eb248200b92a97a (diff)
fix flickering when changing desktops
-rw-r--r--monsterwm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/monsterwm.c b/monsterwm.c
index e7bd7e0..c01cfab 100644
--- a/monsterwm.c
+++ b/monsterwm.c
@@ -162,15 +162,18 @@ void buttonpressed(XEvent *e) {
void change_desktop(const Arg *arg) {
if (arg->i == current_desktop) return;
previous_desktop = current_desktop;
- /* save current desktop settings and unmap windows */
+ /* save current desktop settings */
save_desktop(current_desktop);
- for (client *c=head; c; c=c->next) XUnmapWindow(dis, c->win);
/* read new desktop properties, tile and map new windows */
select_desktop(arg->i);
tile();
if (mode == MONOCLE && current) XMapWindow(dis, current->win);
else for (client *c=head; c; c=c->next) XMapWindow(dis, c->win);
update_current();
+ /* finally unmap previous desktop's windows */
+ select_desktop(previous_desktop);
+ for (client *c=head; c; c=c->next) XUnmapWindow(dis, c->win);
+ select_desktop(arg->i);
desktopinfo();
}