X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=93b42444d8c7607ead1ca7a118ff7e9d1696d2d3;hb=519aa00149f17f00cc7067c2b957e3639b8411f5;hp=a6ef35f8456e78e3c33aaad594139050ebc1892b;hpb=749dbb28b26faa84871dcd745ca4b4e6150c3955;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index a6ef35f..93b4244 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -5,10 +5,10 @@ * Copyright (c) 2009 Pierre-Yves Ritschard * Copyright (c) 2010 Tuukka Kataja * Copyright (c) 2011 Jason L. Wright - * Copyright (c) 2011-2012 Reginald Kennedy + * Copyright (c) 2011-2013 Reginald Kennedy * Copyright (c) 2011-2012 Lawrence Teo * Copyright (c) 2011-2012 Tiago Cunha - * Copyright (c) 2012 David Hill + * Copyright (c) 2012-2013 David Hill * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -1989,12 +1989,12 @@ bar_window_name(char *s, size_t sz, struct swm_region *r) free(title); } -int urgent[SWM_WS_MAX]; void bar_urgent(char *s, size_t sz) { struct ws_win *win; int i, j, num_screens; + int urgent[SWM_WS_MAX]; char b[8]; xcb_get_property_cookie_t c; xcb_icccm_wm_hints_t hints; @@ -3465,8 +3465,9 @@ switchws(struct swm_region *r, union arg *args) this_r->ws = new_ws; new_ws->r = this_r; - /* Set focus_pending before stacking. */ - if (focus_mode != SWM_FOCUS_FOLLOW) + /* Set focus_pending before stacking, if needed. */ + if (focus_mode != SWM_FOCUS_FOLLOW && (!new_ws->focus_pending || + validate_win(new_ws->focus_pending))) new_ws->focus_pending = get_region_focus(new_ws->r); stack(); @@ -4258,20 +4259,24 @@ stack_master(struct workspace *ws, struct swm_geometry *g, int rot, int flip) colno = (winno - mwin) / stacks; if (s <= (winno - mwin) % stacks) colno++; - split = split + colno; - hrh = (r_g.h / colno); + split += colno; + hrh = r_g.h / colno; extra = r_g.h - (colno * hrh); - if (flip) - win_g.x = r_g.x; - else + + if (!flip) win_g.x += win_g.w + 2 * border_width + tile_gap; + win_g.w = (r_g.w - msize - (stacks * (2 * border_width + tile_gap))) / stacks; if (s == 1) win_g.w += (r_g.w - msize - (stacks * (2 * border_width + tile_gap))) % stacks; + + if (flip) + win_g.x -= win_g.w + 2 * border_width + + tile_gap; s--; j = 0; }