From 792022196f709e952018d4f5ab9f99e22a8ffa5b Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 21 Jan 2014 14:53:35 +0000 Subject: [PATCH] Tiling2: Add "floating" as a split mode. This lets people just create floating windows, without the need to toggle. --- src/modules/tiling/e_mod_tiling.c | 9 +++++++-- src/modules/tiling/window_tree.c | 6 +++++- src/modules/tiling/window_tree.h | 6 ++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/modules/tiling/e_mod_tiling.c b/src/modules/tiling/e_mod_tiling.c index 81d16cc71..2fb4d45bd 100644 --- a/src/modules/tiling/e_mod_tiling.c +++ b/src/modules/tiling/e_mod_tiling.c @@ -444,6 +444,12 @@ _add_client(E_Client *ec) if (is_ignored_window(extra)) return; + if (_G.split_type == TILING_SPLIT_FLOAT) + { + extra->floating = EINA_TRUE; + return; + } + if (extra->tiled) return; @@ -631,8 +637,7 @@ _e_mod_action_toggle_split_mode(E_Object *obj __UNUSED__, if (!desk_should_tile_check(desk)) return; - _G.split_type = (_G.split_type == TILING_SPLIT_VERTICAL) ? - TILING_SPLIT_HORIZONTAL : TILING_SPLIT_VERTICAL; + _G.split_type = (_G.split_type + 1) % TILING_SPLIT_LAST; } /* }}} */ diff --git a/src/modules/tiling/window_tree.c b/src/modules/tiling/window_tree.c index e1efc2288..191059bfb 100644 --- a/src/modules/tiling/window_tree.c +++ b/src/modules/tiling/window_tree.c @@ -83,7 +83,11 @@ tiling_window_tree_add(Window_Tree *root, Window_Tree *parent, E_Client *client, new_node->client = client; Tiling_Split_Type parent_split_type; - if (!root) + if (split_type > TILING_SPLIT_VERTICAL) + { + return root; + } + else if (!root) { new_node->weight = 1.0; return new_node; diff --git a/src/modules/tiling/window_tree.h b/src/modules/tiling/window_tree.h index 0078ee5f0..cd960e85b 100644 --- a/src/modules/tiling/window_tree.h +++ b/src/modules/tiling/window_tree.h @@ -2,10 +2,12 @@ #define WINDOW_TREE_H #include -/* XXX: Gotta be 0 and 1 because it's calculated using level % 2. */ +/* XXX: First two have to be 0 and 1 because I use them with modulo. */ typedef enum { TILING_SPLIT_HORIZONTAL = 0, - TILING_SPLIT_VERTICAL = 1 + TILING_SPLIT_VERTICAL = 1, + TILING_SPLIT_FLOAT, + TILING_SPLIT_LAST } Tiling_Split_Type; typedef struct _Window_Tree Window_Tree;