diff options
| author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-01-03 05:51:53 +0200 |
|---|---|---|
| committer | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-01-03 05:51:53 +0200 |
| commit | 66e64632f30d2829b7193b9ace4fb2d1c71aec86 (patch) | |
| tree | e67a1a6fed1e17584dbf70c557ff8c5a0608f5da | |
| parent | eae5f705bf2c655006f52c069eb248200b92a97a (diff) | |
fix flickering when changing desktops
| -rw-r--r-- | monsterwm.c | 7 |
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(); } |
