return wl_container_of(listener, eda_client, client_destroy);
}
+static E_Policy_Desk_Area_Private_Client *
+_e_policy_desk_area_private_client_new(E_Client *ec)
+{
+ E_Policy_Desk_Area_Private_Client *eda_client;
+
+ eda_client = E_NEW(E_Policy_Desk_Area_Private_Client, 1);
+ if (!eda_client)
+ {
+ ERR("POLICY_DESK_AREA:: Failed to alloc private client, ec(%p):%s", ec, e_client_icccm_title_get(ec));
+ return NULL;
+ }
+
+ eda_client->ec = ec;
+
+ // e_client listeners
+ eda_client->client_destroy.notify = _desk_area_cb_client_destroy;
+ e_client_destroy_listener_add(ec, &eda_client->client_destroy);
+ eda_client->client_subsurface_stack_update.notify = _desk_area_cb_client_subsurface_stack_update;
+ e_client_subsurface_stack_update_listener_add(ec, &eda_client->client_subsurface_stack_update);
+ eda_client->client_fullscreen.notify = _desk_area_cb_client_fullscreen;
+ e_client_fullscreen_listener_add(ec, &eda_client->client_fullscreen);
+ eda_client->client_unfullscreen.notify = _desk_area_cb_client_unfullscreen;
+ e_client_unfullscreen_listener_add(ec, &eda_client->client_unfullscreen);
+ eda_client->client_focus_set.notify = _desk_area_cb_client_focus_set;
+ e_client_focus_set_listener_add(ec, &eda_client->client_focus_set);
+ eda_client->client_iconify.notify = _desk_area_cb_client_iconify;
+ e_client_iconify_listener_add(ec, &eda_client->client_iconify);
+ eda_client->client_uniconify.notify = _desk_area_cb_client_uniconify;
+ e_client_uniconify_listener_add(ec, &eda_client->client_uniconify);
+ eda_client->client_stick.notify = _desk_area_cb_client_stick;
+ e_client_stick_listener_add(ec, &eda_client->client_stick);
+ eda_client->client_unstick.notify = _desk_area_cb_client_unstick;
+ e_client_unstick_listener_add(ec, &eda_client->client_unstick);
+ eda_client->client_maximize.notify = _desk_area_cb_client_maximize;
+ e_client_maximize_listener_add(ec, &eda_client->client_maximize);
+ eda_client->client_maximize_done.notify = _desk_area_cb_client_maximize_done;
+ e_client_maximize_done_listener_add(ec, &eda_client->client_maximize_done);
+ eda_client->client_unmaximize.notify = _desk_area_cb_client_unmaximize;
+ e_client_unmaximize_listener_add(ec, &eda_client->client_unmaximize);
+ eda_client->client_unmaximize_done.notify = _desk_area_cb_client_unmaximize_done;
+ e_client_unmaximize_done_listener_add(ec, &eda_client->client_unmaximize_done);
+ eda_client->client_activate_done.notify = _desk_area_cb_client_activate_done;
+ e_client_activate_done_listener_add(ec, &eda_client->client_activate_done);
+ eda_client->client_stay_within_margin.notify = _desk_area_cb_client_stay_within_margin;
+ e_client_stay_within_margin_listener_add(ec, &eda_client->client_stay_within_margin);
+ eda_client->client_mouse_move.notify = _desk_area_cb_client_mouse_move;
+ e_client_mouse_move_listener_add(ec, &eda_client->client_mouse_move);
+ eda_client->client_move_end.notify = _desk_area_cb_client_move_end;
+ e_client_move_end_listener_add(ec, &eda_client->client_move_end);
+ eda_client->client_resize_end.notify = _desk_area_cb_client_resize_end;
+ e_client_resize_end_listener_add(ec, &eda_client->client_resize_end);
+ eda_client->client_layer_set.notify = _desk_area_cb_client_layer_set;
+ e_client_set_layer_listener_add(ec, &eda_client->client_layer_set);
+ eda_client->client_layer_get.notify = _desk_area_cb_client_layer_get;
+ e_client_get_layer_listener_add(ec, &eda_client->client_layer_get);
+
+ // e_comp_object listeners
+ eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
+ e_comp_object_lower_listener_add(ec->frame, &eda_client->comp_object_lower);
+ eda_client->comp_object_raise.notify = _desk_area_cb_comp_object_raise;
+ e_comp_object_raise_listener_add(ec->frame, &eda_client->comp_object_raise);
+ eda_client->comp_object_set_layer.notify = _desk_area_cb_comp_object_set_layer;
+ e_comp_object_set_layer_listener_add(ec->frame, &eda_client->comp_object_set_layer);
+ eda_client->comp_object_stack_above.notify = _desk_area_cb_comp_object_stack_above;
+ e_comp_object_stack_above_listener_add(ec->frame, &eda_client->comp_object_stack_above);
+ eda_client->comp_object_stack_below.notify = _desk_area_cb_comp_object_stack_below;
+ e_comp_object_stack_below_listener_add(ec->frame, &eda_client->comp_object_stack_below);
+
+ // needs ec->comp_data listeners
+ if (ec->comp_data)
+ {
+ eda_client->redirect.notify = _desk_area_cb_client_redirect;
+ e_client_redirect_listener_add(ec, &eda_client->redirect);
+ eda_client->kill_request.notify = _desk_area_cb_client_kill_request;
+ e_client_kill_request_listener_add(ec, &eda_client->kill_request);
+ eda_client->comp_object_resize.notify = _desk_area_cb_comp_object_resize;
+ e_comp_object_resize_listener_add(ec->frame, &eda_client->comp_object_resize);
+ eda_client->comp_object_color_set.notify = _desk_area_cb_comp_object_color_set;
+ e_comp_object_color_set_listener_add(ec->frame, &eda_client->comp_object_color_set);
+ }
+
+ return eda_client;
+}
+
static void
_e_policy_desk_area_private_client_del(E_Policy_Desk_Area_Private_Client *eda_client)
{
pda = wl_container_of(listener, pda, client_add);
eda = pda->desk_area;
-
-
- eda_client = E_NEW(E_Policy_Desk_Area_Private_Client, 1);
- EINA_SAFETY_ON_NULL_RETURN(eda_client);
-
ec = (E_Client *) data;
- eda_client->eda = eda;
- eda_client->ec = ec;
+ eda_client = _e_policy_desk_area_private_client_new(ec);
- // e_client listeners
- eda_client->client_destroy.notify = _desk_area_cb_client_destroy;
- e_client_destroy_listener_add(ec, &eda_client->client_destroy);
- eda_client->client_subsurface_stack_update.notify = _desk_area_cb_client_subsurface_stack_update;
- e_client_subsurface_stack_update_listener_add(ec, &eda_client->client_subsurface_stack_update);
- eda_client->client_fullscreen.notify = _desk_area_cb_client_fullscreen;
- e_client_fullscreen_listener_add(ec, &eda_client->client_fullscreen);
- eda_client->client_unfullscreen.notify = _desk_area_cb_client_unfullscreen;
- e_client_unfullscreen_listener_add(ec, &eda_client->client_unfullscreen);
- eda_client->client_focus_set.notify = _desk_area_cb_client_focus_set;
- e_client_focus_set_listener_add(ec, &eda_client->client_focus_set);
- eda_client->client_iconify.notify = _desk_area_cb_client_iconify;
- e_client_iconify_listener_add(ec, &eda_client->client_iconify);
- eda_client->client_uniconify.notify = _desk_area_cb_client_uniconify;
- e_client_uniconify_listener_add(ec, &eda_client->client_uniconify);
- eda_client->client_stick.notify = _desk_area_cb_client_stick;
- e_client_stick_listener_add(ec, &eda_client->client_stick);
- eda_client->client_unstick.notify = _desk_area_cb_client_unstick;
- e_client_unstick_listener_add(ec, &eda_client->client_unstick);
- eda_client->client_maximize.notify = _desk_area_cb_client_maximize;
- e_client_maximize_listener_add(ec, &eda_client->client_maximize);
- eda_client->client_maximize_done.notify = _desk_area_cb_client_maximize_done;
- e_client_maximize_done_listener_add(ec, &eda_client->client_maximize_done);
- eda_client->client_unmaximize.notify = _desk_area_cb_client_unmaximize;
- e_client_unmaximize_listener_add(ec, &eda_client->client_unmaximize);
- eda_client->client_unmaximize_done.notify = _desk_area_cb_client_unmaximize_done;
- e_client_unmaximize_done_listener_add(ec, &eda_client->client_unmaximize_done);
- eda_client->client_activate_done.notify = _desk_area_cb_client_activate_done;
- e_client_activate_done_listener_add(ec, &eda_client->client_activate_done);
- eda_client->client_stay_within_margin.notify = _desk_area_cb_client_stay_within_margin;
- e_client_stay_within_margin_listener_add(ec, &eda_client->client_stay_within_margin);
- eda_client->client_mouse_move.notify = _desk_area_cb_client_mouse_move;
- e_client_mouse_move_listener_add(ec, &eda_client->client_mouse_move);
- eda_client->client_move_end.notify = _desk_area_cb_client_move_end;
- e_client_move_end_listener_add(ec, &eda_client->client_move_end);
- eda_client->client_resize_end.notify = _desk_area_cb_client_resize_end;
- e_client_resize_end_listener_add(ec, &eda_client->client_resize_end);
- eda_client->client_layer_set.notify = _desk_area_cb_client_layer_set;
- e_client_set_layer_listener_add(ec, &eda_client->client_layer_set);
- eda_client->client_layer_get.notify = _desk_area_cb_client_layer_get;
- e_client_get_layer_listener_add(ec, &eda_client->client_layer_get);
-
- // e_comp_object listeners
- eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
- e_comp_object_lower_listener_add(ec->frame, &eda_client->comp_object_lower);
- eda_client->comp_object_raise.notify = _desk_area_cb_comp_object_raise;
- e_comp_object_raise_listener_add(ec->frame, &eda_client->comp_object_raise);
- eda_client->comp_object_set_layer.notify = _desk_area_cb_comp_object_set_layer;
- e_comp_object_set_layer_listener_add(ec->frame, &eda_client->comp_object_set_layer);
- eda_client->comp_object_stack_above.notify = _desk_area_cb_comp_object_stack_above;
- e_comp_object_stack_above_listener_add(ec->frame, &eda_client->comp_object_stack_above);
- eda_client->comp_object_stack_below.notify = _desk_area_cb_comp_object_stack_below;
- e_comp_object_stack_below_listener_add(ec->frame, &eda_client->comp_object_stack_below);
-
- // needs ec->comp_data listeners
- if (ec->comp_data)
- {
- eda_client->redirect.notify = _desk_area_cb_client_redirect;
- e_client_redirect_listener_add(ec, &eda_client->redirect);
- eda_client->kill_request.notify = _desk_area_cb_client_kill_request;
- e_client_kill_request_listener_add(ec, &eda_client->kill_request);
- eda_client->comp_object_resize.notify = _desk_area_cb_comp_object_resize;
- e_comp_object_resize_listener_add(ec->frame, &eda_client->comp_object_resize);
- eda_client->comp_object_color_set.notify = _desk_area_cb_comp_object_color_set;
- e_comp_object_color_set_listener_add(ec->frame, &eda_client->comp_object_color_set);
- }
+ eda_client->eda = eda;
}
static void