#endif
#endif
-/* #define SWM_DEBUG */
+/*#define SWM_DEBUG*/
#ifdef SWM_DEBUG
#define DPRINTF(x...) do { if (swm_debug) fprintf(stderr, x); } while (0)
#define DNPRINTF(n,x...) do { if (swm_debug & n) fprintf(stderr, x); } while (0)
win->g.y = rg.y;
win->g.w = rg.w;
win->g.h = rg.h;
- } else {
+ } else {
if (win->g_floatvalid) {
/* refloat at last floating relative position */
win->g.x = win->g_float.x - win->rg_float.x + rg.x;
head = TAILQ_LAST(wl, ws_win_list);
winfocus = head;
}
+
+ /* skip iconics */
+ if (winfocus && winfocus->iconic) {
+ TAILQ_FOREACH_REVERSE(winfocus, wl, ws_win_list, entry)
+ if (winfocus->iconic == 0)
+ break;
+ }
break;
case SWM_ARG_ID_FOCUSNEXT:
if (head == NULL)
head = TAILQ_FIRST(wl);
winfocus = head;
+
+ /* skip iconics */
+ if (winfocus && winfocus->iconic) {
+ TAILQ_FOREACH(winfocus, wl, entry)
+ if (winfocus->iconic == 0)
+ break;
+ }
break;
case SWM_ARG_ID_FOCUSMAIN:
* floaters and transients are auto-centred unless moved
* or resized
*/
- win->g.x = r->g.x + (WIDTH(r) - win->g.w) / 2 - border_width;
- win->g.y = r->g.y + (HEIGHT(r) - win->g.h) / 2 - border_width;
+ win->g.x = r->g.x + (WIDTH(r) - win->g.w) / 2 - wc.border_width;
+ win->g.y = r->g.y + (HEIGHT(r) - win->g.h) / 2 - wc.border_width;
}
/* win can be outside r if new r smaller than old r */
/* Ensure top left corner inside r (move probs otherwise) */
- if (win->g.x < r->g.x - border_width)
- win->g.x = r->g.x - border_width;
+ if (win->g.x < r->g.x - wc.border_width)
+ win->g.x = r->g.x - wc.border_width;
if (win->g.x > r->g.x + r->g.w - 1)
win->g.x = (win->g.w > r->g.w) ? r->g.x :
- (r->g.x + r->g.w - win->g.w - 2 * border_width);
- if (win->g.y < r->g.y - border_width)
- win->g.y = r->g.y - border_width;
+ (r->g.x + r->g.w - win->g.w - 2 * wc.border_width);
+ if (win->g.y < r->g.y - wc.border_width)
+ win->g.y = r->g.y - wc.border_width;
if (win->g.y > r->g.y + r->g.h - 1)
win->g.y = (win->g.h > r->g.h) ? r->g.y :
- (r->g.y + r->g.h - win->g.h - 2 * border_width);
+ (r->g.y + r->g.h - win->g.h - 2 * wc.border_width);
wc.x = win->g.x;
wc.y = win->g.y;
j++;
}
- notiles:
+notiles:
/* now, stack all the floaters and transients */
TAILQ_FOREACH(win, &ws->winlist, entry) {
if (win->transient == 0 && win->floating == 0)
continue;
- if (win->iconic == 0)
+ if (win->iconic == 1)
continue;
-
if (win->ewmh_flags & EWMH_F_FULLSCREEN) {
fs_win = win;
continue;