wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 13055ca0871fad7a2d7e5c9f284e0c160489145d
parent 874b2a730cc01508eb444dfebaa775612bd84fff
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Tue, 23 May 2006 16:56:43 +0200

allowing empty views, treating 'nil'-view specially


Diffstat:
TODO.wmii-4 | 1-
cmd/wm/view.c | 40+++++++++++++++++++---------------------
2 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/TODO.wmii-4 b/TODO.wmii-4 @@ -1,4 +1,3 @@ -- introduce empty views - UTF8 fixes with iconv? - move /<view> to /tags/<name|sel>/ - add /tags/sel/index (for column reverse-addressing) diff --git a/cmd/wm/view.c b/cmd/wm/view.c @@ -169,23 +169,11 @@ get_view(char *name) return v ? v : create_view(name); } -static Bool -is_empty(View *v) -{ - unsigned int i; - for(i = 0; i < v->area.size; i++) - if(v->area.data[i]->frame.size) - return False; - return True; -} - void select_view(char *arg) { - View *v = view_of_name(arg); - if(!v) - return; - focus_view(v); + sel = idx_of_view(get_view(arg)); + update_views(); /* performs focus_view */ } static Bool @@ -352,12 +340,22 @@ is_view_of(Client *c, View *v) return False; } +static Bool +is_empty(View *v) +{ + unsigned int i; + for(i = 0; i < v->area.size; i++) + if(v->area.data[i]->frame.size) + return False; + return True; +} + static View * -next_empty_view() +next_empty_view(View *ignore) { unsigned int i; for(i = 0; i < view.size; i++) - if(is_empty(view.data[i])) + if((view.data[i] != ignore) && is_empty(view.data[i])) return view.data[i]; return nil; } @@ -366,7 +364,7 @@ void update_views() { unsigned int i, j; - View *v, *old = view.size ? view.data[sel] : nil; + View *v, *ign = nil, *old = view.size ? view.data[sel] : nil; for(i = 0; i < client.size; i++) update_client_views(client.data[i]); @@ -387,11 +385,11 @@ update_views() } } - while((v = next_empty_view())) { - if(v == old) - old = nil; + ign = old; + if(old && !strncmp(old->name, "nil", 4)) + ign = nil; + while((v = next_empty_view(ign))) destroy_view(v); - } if(old) focus_view(old);