From c7a0fc9c3f60a2b6af3d309f00d61ef28b2b1e3c Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Sun, 5 Jul 2009 03:13:07 +0200 Subject: [PATCH] Layout: Add update_layout boolean argument in arrange() function --- src/client.c | 2 +- src/event.c | 2 +- src/infobar.c | 2 +- src/layout.c | 8 +++++--- src/mouse.c | 4 ++-- src/tag.c | 15 +++------------ src/wmfs.c | 2 +- src/wmfs.h | 2 +- 8 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/client.c b/src/client.c index 8cc0e83..9ed33a0 100644 --- a/src/client.c +++ b/src/client.c @@ -493,7 +493,7 @@ client_manage(Window w, XWindowAttributes *wa, Bool ar) client_update_attributes(c); if(ar) - arrange(c->screen); + arrange(c->screen, True); return c; } diff --git a/src/event.c b/src/event.c index 2608b7b..9aa1276 100644 --- a/src/event.c +++ b/src/event.c @@ -462,7 +462,7 @@ propertynotify(XPropertyEvent *ev) case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &trans); if((c->tile || c->max) && (c->hint = (client_gb_win(trans) != NULL))) - arrange(c->screen); + arrange(c->screen, True); break; case XA_WM_NORMAL_HINTS: client_size_hints(c); diff --git a/src/infobar.c b/src/infobar.c index cc8a7fa..baecc00 100644 --- a/src/infobar.c +++ b/src/infobar.c @@ -289,7 +289,7 @@ infobar_set_position(int pos) barwin_move(infobar[selscreen].bar, sgeo[selscreen].x - BORDH, infobar[selscreen].geo.y); infobar_draw(selscreen); ewmh_set_workarea(); - arrange(selscreen); + arrange(selscreen, True); return; } diff --git a/src/layout.c b/src/layout.c index 11c0eff..d828e93 100644 --- a/src/layout.c +++ b/src/layout.c @@ -35,7 +35,7 @@ /** Arrange All */ void -arrange(int screen) +arrange(int screen, Bool update_layout) { Client *c; @@ -51,7 +51,9 @@ arrange(int screen) client_hide(c); } - tags[screen][seltag[screen]].layout.func(screen); + if(update_layout) + tags[screen][seltag[screen]].layout.func(screen); + infobar_draw(screen); return; @@ -752,7 +754,7 @@ uicb_set_layout(uicb_t cmd) if(layout_list[i].func == conf.layout[j].func) tags[selscreen][seltag[selscreen]].layout = conf.layout[j]; - arrange(selscreen); + arrange(selscreen, True); return; } diff --git a/src/mouse.c b/src/mouse.c index 9eb452c..b8fb085 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -118,9 +118,9 @@ mouse_move(Client *c) c->screen = selscreen; c->tag = i; tags[c->screen][c->tag].request_update = True; - arrange(oscreen); + arrange(oscreen, True); if(oscreen != c->screen) - arrange(c->screen); + arrange(c->screen, True); } } diff --git a/src/tag.c b/src/tag.c index aa60671..46f53d0 100644 --- a/src/tag.c +++ b/src/tag.c @@ -65,20 +65,11 @@ tag_set(int tag) ewmh_update_current_tag_prop(); + /* Arrange infobar position */ if(tags[selscreen][otag].barpos != tags[selscreen][seltag[selscreen]].barpos) infobar_set_position(tags[selscreen][seltag[selscreen]].barpos); - /* arrange(selscreen); */ - for(c = clients; c; c = c->next) - if(c->screen == selscreen) - { - if(!ishide(c, selscreen)) - client_unhide(c); - else - client_hide(c); - } - - infobar_draw(selscreen); + arrange(selscreen, False); if(tags[selscreen][tag].request_update) { @@ -113,7 +104,7 @@ tag_transfert(Client *c, int tag) c->tag = tag; - arrange(c->screen); + arrange(c->screen, True); if(c == sel) client_focus(NULL); diff --git a/src/wmfs.c b/src/wmfs.c index d61f839..05a6e6b 100644 --- a/src/wmfs.c +++ b/src/wmfs.c @@ -228,7 +228,7 @@ scan(void) tags[c->screen][c->tag].request_update = True; for(i = 0; i < screen_count(); ++i) - arrange(i); + arrange(i, True); XFree(w); diff --git a/src/wmfs.h b/src/wmfs.h index 25523c7..4ad81dd 100644 --- a/src/wmfs.h +++ b/src/wmfs.h @@ -268,7 +268,7 @@ void uicb_screen_next(uicb_t); void uicb_screen_prev(uicb_t); /* layout.c */ -void arrange(int screen); +void arrange(int screen, Bool update_layout); void freelayout(int screen); void layoutswitch(Bool b); void maxlayout(int screen);