mode { return TOK_MODE; }
tiling { return TOK_TILING; }
floating { return TOK_FLOATING; }
+toggle { return TOK_TOGGLE; }
workspace { BEGIN(WANT_WS_STRING); return TOK_WORKSPACE; }
focus { return TOK_FOCUS; }
move { return TOK_MOVE; }
%token TOK_TILING "tiling"
%token TOK_FLOATING "floating"
%token TOK_WORKSPACE "workspace"
+%token TOK_TOGGLE "toggle"
%token TOK_FOCUS "focus"
%token TOK_MOVE "move"
%token TOK_OPEN "open"
mode:
TOK_MODE WHITESPACE window_mode
{
- printf("should switch mode to %s\n", ($<number>3 == TOK_FLOATING ? "floating" : "tiling"));
- /* TODO: actually switch mode (not toggle) */
+ if ($<number>3 == TOK_TOGGLE) {
+ printf("should toggle mode\n");
+ toggle_floating_mode(focused, false);
+ } else {
+ printf("should switch mode to %s\n", ($<number>3 == TOK_FLOATING ? "floating" : "tiling"));
+ /* TODO: actually switch mode (not toggle) */
+ }
}
;
window_mode:
TOK_FLOATING { $<number>$ = TOK_FLOATING; }
| TOK_TILING { $<number>$ = TOK_TILING; }
+ | TOK_TOGGLE { $<number>$ = TOK_TOGGLE; }
;
level:
/* 2: kill parent container */
TAILQ_REMOVE(&(con->parent->parent->floating_head), con->parent, floating_windows);
+ TAILQ_REMOVE(&(con->parent->parent->focus_head), con->parent, focused);
tree_close(con->parent, false);
/* 3: re-attach to previous parent */
TAILQ_INSERT_TAIL(&(con->parent->nodes_head), con, nodes);
TAILQ_INSERT_TAIL(&(con->parent->focus_head), con, focused);
+ con->floating = FLOATING_USER_OFF;
+
return;
}
nc->orientation = NO_ORIENTATION;
nc->type = CT_FLOATING_CON;
TAILQ_INSERT_TAIL(&(nc->parent->floating_head), nc, floating_windows);
+ TAILQ_INSERT_TAIL(&(nc->parent->focus_head), nc, focused);
/* 3: attach the child to the new parent container */
con->old_parent = con->parent;