X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=2ff50af57625603435881c3a3625e1223662bdd2;hb=52e931e4986d7c3c91726d26ea5f21d8bff704e4;hp=bc3e1fd4f76ac2885f01ea4fcd8b4fc94c09c83a;hpb=3088ae3cd65be8b9a35ec1ff960e6221161be5dc;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index bc3e1fd..2ff50af 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -6211,9 +6211,10 @@ manage_window(Window id) TAILQ_INSERT_AFTER(&win->ws->winlist, ww, win, entry); else if ((ww = win->ws->focus) && spawn_position == SWM_STACK_ABOVE) - TAILQ_INSERT_AFTER(&win->ws->winlist, win->ws->focus, win, entry); + TAILQ_INSERT_AFTER(&win->ws->winlist, win->ws->focus, + win, entry); else if (ww && spawn_position == SWM_STACK_BELOW) - TAILQ_INSERT_AFTER(&win->ws->winlist, win->ws->focus, win, entry); + TAILQ_INSERT_BEFORE(win->ws->focus, win, entry); else switch (spawn_position) { default: case SWM_STACK_TOP: @@ -6312,10 +6313,21 @@ manage_window(Window id) win->s = r->s; /* this never changes */ if (trans && (ww = find_window(trans))) TAILQ_INSERT_AFTER(&ws->winlist, ww, win, entry); - else if (spawn_position == SWM_STACK_ABOVE && win->ws->focus) - TAILQ_INSERT_AFTER(&win->ws->winlist, win->ws->focus, win, entry); - else - TAILQ_INSERT_TAIL(&ws->winlist, win, entry); + else if (win->ws->focus && spawn_position == SWM_STACK_ABOVE) + TAILQ_INSERT_AFTER(&win->ws->winlist, win->ws->focus, win, + entry); + else if (win->ws->focus && spawn_position == SWM_STACK_BELOW) + TAILQ_INSERT_BEFORE(win->ws->focus, win, entry); + else switch (spawn_position) { + default: + case SWM_STACK_TOP: + case SWM_STACK_ABOVE: + TAILQ_INSERT_TAIL(&win->ws->winlist, win, entry); + break; + case SWM_STACK_BOTTOM: + case SWM_STACK_BELOW: + TAILQ_INSERT_HEAD(&win->ws->winlist, win, entry); + } /* ignore window border if there is one. */ WIDTH(win) = win->wa.width; @@ -7158,7 +7170,7 @@ scan_xrandr(int i) /* map virtual screens onto physical screens */ #ifdef SWM_XRR_HAS_CRTC if (xrandr_support) { - sr = XRRGetScreenResources(display, screens[i].root); + sr = XRRGetScreenResourcesCurrent(display, screens[i].root); if (sr == NULL) new_region(&screens[i], 0, 0, DisplayWidth(display, i),