}
static void
-_e_client_event_desk_set_free(void *d EINA_UNUSED, E_Event_Client_Desk_Set *ev)
-{
- UNREFD(ev->ec, 4);
- e_object_unref(E_OBJECT(ev->ec));
- e_object_unref(E_OBJECT(ev->desk));
- free(ev);
-}
-
-static void
_e_client_event_zone_set_free(void *d EINA_UNUSED, E_Event_Client_Zone_Set *ev)
{
UNREFD(ev->ec, 5);
}
EINTERN void
-e_client_desk_set(E_Client *ec, E_Desk *desk)
-{
- E_Event_Client_Desk_Set *ev;
- E_Desk *old_desk;
- E_Zone *zone;
-
- E_OBJECT_CHECK(ec);
- E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
- E_OBJECT_CHECK(desk);
- E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
- if (ec->desk == desk) return;
-
- if (ec->fullscreen)
- {
- ec->desk->fullscreen_clients = eina_list_remove(ec->desk->fullscreen_clients, ec);
- desk->fullscreen_clients = eina_list_append(desk->fullscreen_clients, ec);
- }
- old_desk = ec->desk;
- if (old_desk)
- e_desk_client_del(old_desk, ec);
- ec->desk = desk;
- e_desk_client_add(desk, ec);
- if (!ec->new_client)
- {
- if (ec->frame)
- {
- e_comp_object_effect_unclip(ec->frame);
- e_comp_object_effect_set(ec->frame, NULL);
- }
- if (desk->visible || ec->sticky)
- {
- if ((!ec->hidden) && (!ec->iconic))
- evas_object_show(ec->frame);
- }
- else
- {
- ec->hidden = 1;
- evas_object_hide(ec->frame);
- }
- }
- e_client_comp_hidden_set(ec, (!desk->visible) && (!ec->sticky));
- e_client_zone_set(ec, desk->zone);
-
- if (old_desk)
- {
- ev = E_NEW(E_Event_Client_Desk_Set, 1);
- if (ev)
- {
- ev->ec = ec;
- UNREFD(ec, 4);
- e_object_ref(E_OBJECT(ec));
- ev->desk = old_desk;
- e_object_ref(E_OBJECT(old_desk));
- ecore_event_add(E_EVENT_CLIENT_DESK_SET, ev, (Ecore_End_Cb)_e_client_event_desk_set_free, NULL);
- }
-
- zone = e_comp_zone_find_by_ec(ec);
- if (old_desk->zone == zone)
- {
- e_client_res_change_geometry_save(ec);
- e_client_res_change_geometry_restore(ec);
- ec->pre_res_change.valid = 0;
- }
- }
-
- if (e_config->transient.desktop)
- {
- E_Client *child;
- const Eina_List *l;
-
- EINA_LIST_FOREACH(ec->transients, l, child)
- e_client_desk_set(child, ec->desk);
- }
-
- evas_object_smart_callback_call(ec->frame, "desk_change", ec);
-
- if (ec->desk->desk_area.enable)
- {
- if (!ec->desk_area.desk_area)
- {
- E_Desk_Area *eda;
- eda = e_desk_desk_area_base_get(ec->desk);
- e_client_desk_area_set(ec, eda);
- }
-
- e_client_desk_area_enable_set(ec, EINA_TRUE);
- }
-}
-
-EINTERN void
e_client_desk_iconify_skip_set(E_Client *ec, Eina_Bool skip)
{
if (!ec) return;
E_API E_Client *e_client_new(E_Pixmap *cp, int first_map, int internal);
E_API Eina_Bool e_client_is_internal(E_Client *ec);
E_API void e_client_unignore(E_Client *ec);
-EINTERN void e_client_desk_set(E_Client *ec, E_Desk *desk);
EINTERN void e_client_desk_iconify_skip_set(E_Client *ec, Eina_Bool skip);
EINTERN Eina_Bool e_client_desk_iconify_skip_get(E_Client *ec);
EINTERN Eina_Bool e_client_comp_grabbed_get(void);
EINA_SAFETY_ON_NULL_RETURN(desk);
if (!desk->visible && ec->sticky)
- e_client_desk_set(ec, e_desk_current_get(zone));
+ e_desk_client_add(e_desk_current_get(zone), ec);
}
static void
e_comp_wl_remote_surface_image_save_cancel(ec);
- e_client_desk_set(ec, desk);
+ e_desk_client_add(desk, ec);
not_raise = ec->exp_iconify.not_raise;
ec->exp_iconify.by_client = 0;
ec->sticky = 1;
ec->hidden = 0;
- e_client_desk_set(ec, desk);
+ e_desk_client_add(desk, ec);
evas_object_smart_callback_call(ec->frame, "stick", NULL);
ec->hidden = ec->sticky = 0;
curr_desk = e_desk_current_get(zone);
- e_client_desk_set(ec, curr_desk);
+ e_desk_client_add(curr_desk, ec);
evas_object_smart_callback_call(ec->frame, "unstick", NULL);
E_CLIENT_FOREACH(ec)
{
if (ec->desk == desk)
- e_client_desk_set(ec, new_desk);
+ e_desk_client_add(new_desk, ec);
}
e_object_del(E_OBJECT(desk));
}
E_CLIENT_FOREACH(ec)
{
if (ec->desk == desk)
- e_client_desk_set(ec, new_desk);
+ e_desk_client_add(new_desk, ec);
}
e_object_del(E_OBJECT(desk));
}
// inside e_client_desk_set(). It makes the infinite loop calls(circular calls).
// e_client_desk_set() -> e_client_zone_set() -> e_zone_client_add() -> e_client_desk_set() -> ... and so on.
if ((!ec->desk) || (ec->desk->zone != zone))
- e_client_desk_set(ec, e_desk_current_get(zone));
+ e_desk_client_add(e_desk_current_get(zone), ec);
e_client_res_change_geometry_save(ec);
e_client_res_change_geometry_restore(ec);