tiling: dont use floating state when toggling
when someone toggles a client he usally doesnt want to have it again in toggle state, so make sure its vertical or horizontal.
This commit is contained in:
parent
4510e474f6
commit
4937897c0b
|
@ -51,7 +51,7 @@ struct tiling_g tiling_g = {
|
||||||
|
|
||||||
static void _client_track(E_Client *ec);
|
static void _client_track(E_Client *ec);
|
||||||
static void _client_untrack(E_Client *ec);
|
static void _client_untrack(E_Client *ec);
|
||||||
static Eina_Bool _add_client(E_Client *ec);
|
static Eina_Bool _add_client(E_Client *ec, Tiling_Split_Type type);
|
||||||
static void _remove_client(E_Client *ec);
|
static void _remove_client(E_Client *ec);
|
||||||
static void _client_apply_settings(E_Client *ec, Client_Extra *extra);
|
static void _client_apply_settings(E_Client *ec, Client_Extra *extra);
|
||||||
static void _foreach_desk(void (*func)(E_Desk *desk));
|
static void _foreach_desk(void (*func)(E_Desk *desk));
|
||||||
|
@ -124,6 +124,16 @@ get_current_desk(void)
|
||||||
return e_desk_current_get(z);
|
return e_desk_current_get(z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Tiling_Split_Type
|
||||||
|
_current_tiled_state(void)
|
||||||
|
{
|
||||||
|
Tiling_Split_Type type = _G.split_type;
|
||||||
|
|
||||||
|
if (type == TILING_SPLIT_FLOAT)
|
||||||
|
return TILING_SPLIT_HORIZONTAL;
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
static Tiling_Info *
|
static Tiling_Info *
|
||||||
_initialize_tinfo(const E_Desk *desk)
|
_initialize_tinfo(const E_Desk *desk)
|
||||||
{
|
{
|
||||||
|
@ -509,7 +519,7 @@ _desk_config_apply(E_Desk *d, int old_nb_stacks, int new_nb_stacks)
|
||||||
|
|
||||||
E_CLIENT_FOREACH(ec)
|
E_CLIENT_FOREACH(ec)
|
||||||
{
|
{
|
||||||
_add_client(ec);
|
_add_client(ec, _G.split_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
_reapply_tree();
|
_reapply_tree();
|
||||||
|
@ -551,7 +561,7 @@ _e_client_check_based_on_state_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_add_client(E_Client *ec)
|
_add_client(E_Client *ec, Tiling_Split_Type type)
|
||||||
{
|
{
|
||||||
/* Should I need to check that the client is not already added? */
|
/* Should I need to check that the client is not already added? */
|
||||||
if (!ec)
|
if (!ec)
|
||||||
|
@ -573,7 +583,7 @@ _add_client(E_Client *ec)
|
||||||
if (is_ignored_window(extra))
|
if (is_ignored_window(extra))
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
if (_G.split_type == TILING_SPLIT_FLOAT)
|
if (type == TILING_SPLIT_FLOAT)
|
||||||
{
|
{
|
||||||
extra->floating = EINA_TRUE;
|
extra->floating = EINA_TRUE;
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
@ -607,7 +617,7 @@ _add_client(E_Client *ec)
|
||||||
}
|
}
|
||||||
|
|
||||||
_G.tinfo->tree =
|
_G.tinfo->tree =
|
||||||
tiling_window_tree_add(_G.tinfo->tree, parent, ec, _G.split_type);
|
tiling_window_tree_add(_G.tinfo->tree, parent, ec, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (started)
|
if (started)
|
||||||
|
@ -690,7 +700,7 @@ toggle_floating(E_Client *ec)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_add_client(ec);
|
_add_client(ec, _current_tiled_state());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1234,7 +1244,7 @@ _add_hook(void *data EINA_UNUSED, E_Client *ec)
|
||||||
if (e_object_is_del(E_OBJECT(ec)))
|
if (e_object_is_del(E_OBJECT(ec)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_add_client(ec);
|
_add_client(ec, _G.split_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -1263,7 +1273,7 @@ _toggle_tiling_based_on_state(E_Client *ec, Eina_Bool restore)
|
||||||
}
|
}
|
||||||
else if (!extra->tiled && is_tilable(ec))
|
else if (!extra->tiled && is_tilable(ec))
|
||||||
{
|
{
|
||||||
_add_client(ec);
|
_add_client(ec, _current_tiled_state());
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1304,7 +1314,7 @@ _desk_set_hook(void *data EINA_UNUSED, int type EINA_UNUSED,
|
||||||
if (!desk_should_tile_check(ev->ec->desk))
|
if (!desk_should_tile_check(ev->ec->desk))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
_add_client(ev->ec);
|
_add_client(ev->ec, _current_tiled_state());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1527,7 +1537,7 @@ e_modapi_init(E_Module *m)
|
||||||
|
|
||||||
E_CLIENT_FOREACH(ec)
|
E_CLIENT_FOREACH(ec)
|
||||||
{
|
{
|
||||||
_add_client(ec);
|
_add_client(ec, _G.split_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
started = EINA_TRUE;
|
started = EINA_TRUE;
|
||||||
|
|
Loading…
Reference in New Issue