desk = e_desk_current_get(e_zone_current_get());
if (desk && desk->desk_area.enable)
- _e_mod_split_screen_manager_ec_assign_to_region_name(ec, "above");
+ _e_mod_split_screen_manager_ec_assign_to_region_name(ec, "SystemUI");
}
else
{
// launcher window must be above desk group to unobscured by other windows
launcher = _e_mod_split_screen_launcher_ec_get();
if (launcher)
- _e_mod_split_screen_manager_ec_assign_to_region_name(launcher, "above");
+ _e_mod_split_screen_manager_ec_assign_to_region_name(launcher, "SystemUI");
return ret;
}
if (_e_mod_split_screen_manager_util_client_special_check(ec))
{
// special prupose windows.
- _e_mod_split_screen_manager_ec_assign_to_region_name(ec, "above");
+ _e_mod_split_screen_manager_ec_assign_to_region_name(ec, "SystemUI");
return EINA_TRUE;
}
_e_mod_split_screen_manager_region_init(void)
{
E_Desk *desk;
- E_Mod_Split_Screen_Region *emssr_sub1, *emssr_sub2, *emssr_above;
+ E_Mod_Split_Screen_Region *emssr_sub1, *emssr_sub2, *emssr_system;
int desk_x, desk_y, desk_w, desk_h;
desk = e_desk_current_get(e_zone_current_get());
_e_mod_split_screen_region_list = eina_list_append(_e_mod_split_screen_region_list, emssr_sub2);
- emssr_above = e_mod_split_screen_region_new("above", desk_x, desk_y, desk_w, desk_h);
- if (!emssr_above) return EINA_FALSE;
+ emssr_system = e_mod_split_screen_region_new("SystemUI", desk_x, desk_y, desk_w, desk_h);
+ if (!emssr_system) return EINA_FALSE;
+ e_mod_split_screen_region_need_maximize_set(emssr_system, EINA_FALSE);
- _e_mod_split_screen_region_list = eina_list_append(_e_mod_split_screen_region_list, emssr_above);
+ _e_mod_split_screen_region_list = eina_list_append(_e_mod_split_screen_region_list, emssr_system);
return EINA_TRUE;
}
E_Desk_Area *eda;
Eina_Stringshare *name;
Eina_Bool is_del;
+
Eina_List *appid_list;
Eina_List *client_list;
+
+ Eina_Bool need_maximize : 1;
};
/* e_mod_split_screen_region internal functions */
/* internal functions */
+static Eina_Bool
+_e_mod_split_screen_region_util_client_special_check(E_Client *ec)
+{
+ if (!ec) return EINA_FALSE;
+
+ if ((e_policy_client_is_lockscreen(ec)) ||
+ (e_policy_client_is_keyboard(ec)) ||
+ (e_policy_client_is_keyboard_sub(ec)) ||
+ (e_policy_client_is_noti(ec)) ||
+ (e_policy_client_is_quickpanel(ec)) ||
+ (e_policy_client_is_volume(ec)) ||
+ (e_policy_client_is_cursor(ec)) ||
+ (!e_util_strcmp("wl_pointer-cursor", ec->icccm.window_role)))
+ return EINA_TRUE;
+
+ return EINA_FALSE;
+}
+
static E_Mod_Split_Screen_Region *
_e_mod_split_screen_region_new(const char *name, int x, int y, int w, int h)
{
eda->name = eina_stringshare_add(name);
emssr->eda = eda;
+ emssr->need_maximize = EINA_TRUE;
+
SSMINF("region added, desk_area:%p, name:%s, id:%d", NULL, emssr->eda, emssr->name, emssr->eda->id);
return emssr;
e_client_desk_area_set(ec, emssr->eda);
- if (ec->lock_client_size)
+ if (emssr->need_maximize && ec->lock_client_size)
{
ec->maximized = E_MAXIMIZE_NONE;
e_client_maximize(ec, E_MAXIMIZE_EXPAND | E_MAXIMIZE_BOTH);
{
E_Client *child_ec;
Eina_List *l;
+ Eina_Bool need_maximize = EINA_TRUE;
SSMINF("unset ec from regions", ec);
e_client_desk_area_set(ec, NULL);
- if (ec->lock_client_size)
+ need_maximize = !_e_mod_split_screen_region_util_client_special_check(ec);
+
+ if (need_maximize && ec->lock_client_size)
{
ec->maximized = E_MAXIMIZE_NONE;
e_client_maximize(ec, E_MAXIMIZE_EXPAND | E_MAXIMIZE_BOTH);
return _e_mod_split_screen_region_ec_dismiss(ec);
}
+
+EINTERN void
+e_mod_split_screen_region_need_maximize_set(E_Mod_Split_Screen_Region *emssr, Eina_Bool need_maximize)
+{
+ EINA_SAFETY_ON_NULL_RETURN(emssr);
+ emssr->need_maximize = need_maximize;
+}
+
+EINTERN Eina_Bool
+e_mod_split_screen_region_need_maximize_get(E_Mod_Split_Screen_Region *emssr)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(emssr, EINA_FALSE);
+ return emssr->need_maximize;
+}
\ No newline at end of file