From 66e64632f30d2829b7193b9ace4fb2d1c71aec86 Mon Sep 17 00:00:00 2001 From: Ivan Kanakarakis Date: Tue, 3 Jan 2012 05:51:53 +0200 Subject: fix flickering when changing desktops --- monsterwm.c | 7 +++++-- 1 file 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(); } -- cgit v1.3.1