* DEALINGS IN THE SOFTWARE.
*/
-#define SWM_VERSION "0.5"
+#define SWM_VERSION "0.6"
#include <stdio.h>
#include <stdlib.h>
if (ws->cur_layout->l_stack == NULL)
ws->cur_layout = &layouts[0];
ignore_enter = 1;
-
stack();
}
unsigned char ws_idx_str[SWM_PROPLEN], *prop = NULL;
struct swm_region *r;
long mask;
+ int ws_idx;
+ const char *errstr;
if ((win = find_window(id)) != NULL)
return (win); /* already being managed */
r = root_to_region(win->wa.root);
/* If the window was managed before, put it in the same workspace */
if (prop) {
- int ws_idx;
- const char *errstr;
-
DNPRINTF(SWM_D_PROP, "got property _SWM_WS=%s\n", prop);
ws_idx = strtonum(prop, 0, 9, &errstr);
if (errstr)
ws->focus = TAILQ_PREV(win, ws_win_list, entry);
if (ws->focus == NULL)
ws->focus = TAILQ_FIRST(&ws->winlist);
- if (ws->focus == win)
+ if (ws->focus == NULL || ws->focus == win) {
ws->focus = NULL;
- if (cur_focus == win)
+ unfocus_all();
+ } else
focus_win(ws->focus);
-
TAILQ_REMOVE(&ws->winlist, win, entry);
set_win_state(win, WithdrawnState);
free(win);
+ stack();
}
- stack();
}
void