EINTERN E_Client *e_desk_client_below_get(E_Desk *desk, E_Client *ec);
EINTERN E_Client *e_desk_client_visible_above_get(E_Desk *desk, E_Client *ec);
EINTERN E_Client *e_desk_client_visible_below_get(E_Desk *desk, E_Client *ec);
-EINTERN unsigned int e_desks_count(void);
EINTERN Eina_Bool e_desk_zoom_get_center_coordinate(E_Desk *desk, double zoomx, double zoomy, int rectx, int recty, int *cx, int *cy);
EINTERN Eina_Bool e_desk_zoom_is_animating(E_Desk *desk);
struct wl_signal obstacle_update;
struct wl_signal obstacle_remove;
struct wl_signal useful_geometry_get;
- struct wl_signal desk_row_add;
- struct wl_signal desk_row_remove;
- struct wl_signal desk_col_add;
- struct wl_signal desk_col_remove;
struct wl_signal desk_current_get;
struct wl_signal desk_at_xy_get;
- struct wl_signal desk_at_pos_get;
- struct wl_signal desk_next;
- struct wl_signal desk_prev;
- struct wl_signal desk_count;
struct wl_signal client_add;
struct wl_signal has_ec;
struct wl_signal focused_client_get;
wl_signal_init(&priv->events.obstacle_update);
wl_signal_init(&priv->events.obstacle_remove);
wl_signal_init(&priv->events.useful_geometry_get);
- wl_signal_init(&priv->events.desk_row_add);
- wl_signal_init(&priv->events.desk_row_remove);
- wl_signal_init(&priv->events.desk_col_add);
- wl_signal_init(&priv->events.desk_col_remove);
wl_signal_init(&priv->events.desk_current_get);
wl_signal_init(&priv->events.desk_at_xy_get);
- wl_signal_init(&priv->events.desk_at_pos_get);
- wl_signal_init(&priv->events.desk_next);
- wl_signal_init(&priv->events.desk_prev);
- wl_signal_init(&priv->events.desk_count);
wl_signal_init(&priv->events.client_add);
wl_signal_init(&priv->events.has_ec);
wl_signal_init(&priv->events.focused_client_get);
return NULL;
}
-EINTERN E_Zone *
-e_zone_get_by_position(int x, int y)
-{
- Eina_List *l = NULL, *comp_zone_list;
- E_Zone *zone;
-
- comp_zone_list = e_comp_zone_list_get();
- EINA_LIST_FOREACH(comp_zone_list, l, zone)
- {
- if (E_INSIDE(x, y, zone->x, zone->y, zone->w, zone->h))
- {
- return zone;
- }
- }
-
- ELOGF("E_ZONE", "No zone under position(%d,%d)", NULL, x, y);
- return NULL;
-}
-
EINTERN void
e_zone_desk_count_set(E_Zone *zone,
int x_count,
{
E_Event_Zone_Desk_Count_Set *ev;
E_Zone_Data_Desk_Count_Set desk_count_data = {0,};
+
desk_count_data.x_count = x_count;
desk_count_data.y_count = y_count;
+
wl_signal_emit(&PRI(zone)->events.desk_count_set, &desk_count_data);
ev = E_NEW(E_Event_Zone_Desk_Count_Set, 1);
_e_zone_event_generic_free, NULL);
}
-EINTERN void
-e_zone_desk_count_get(E_Zone *zone,
- int *x_count,
- int *y_count)
-{
- E_OBJECT_CHECK(zone);
- E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
-
- if (x_count) *x_count = zone->desk_x_count;
- if (y_count) *y_count = zone->desk_y_count;
-}
-
EINTERN Eina_Bool
e_zone_obstacle_add(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bool vertical)
{
_e_zone_event_generic_free(void *data EINA_UNUSED, void *ev)
{
struct _E_Event_Zone_Generic *e;
- // also handes E_Event_Zone_Add, E_Event_Zone_Del, E_Event_Zone_Stow,
- // E_Event_Zone_Unstow, E_Event_Zone_Desk_Count_Set due to them all
+ // also handes E_Event_Zone_Add, E_Event_Zone_Del
+ // E_Event_Zone_Desk_Count_Set due to them all
// having the same content
e = ev;
wl_signal_add(&priv->events.zone_client_visible_below_get, listener);
}
-EINTERN void
-e_desk_row_add(E_Zone *zone)
-{
- E_Desk_Data_Desk_Control data = {0,};
-
- data.zone = zone;
- wl_signal_emit(&PRI(zone)->events.desk_row_add, &data);
-}
-
-EINTERN void
-e_desk_row_remove(E_Zone *zone)
-{
- E_Desk_Data_Desk_Control data = {0,};
-
- data.zone = zone;
- wl_signal_emit(&PRI(zone)->events.desk_row_remove, &data);
-}
-
-EINTERN void
-e_desk_col_add(E_Zone *zone)
-{
- E_Desk_Data_Desk_Control data = {0,};
-
- data.zone = zone;
- wl_signal_emit(&PRI(zone)->events.desk_col_add, &data);
-}
-
-EINTERN void
-e_desk_col_remove(E_Zone *zone)
-{
- E_Desk_Data_Desk_Control data = {0,};
-
- data.zone = zone;
- wl_signal_emit(&PRI(zone)->events.desk_col_remove, &data);
-}
-
E_API E_Desk *
e_desk_current_get(E_Zone *zone)
{
return data.desk;
}
-EINTERN E_Desk *
-e_desk_at_pos_get(E_Zone *zone, int pos)
-{
- E_Zone_Data_Desk_Get data = {0,};
-
- E_OBJECT_CHECK_RETURN(zone, NULL);
- E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
-
- data.zone = zone;
- data.pos = pos;
-
- wl_signal_emit(&PRI(zone)->events.desk_at_pos_get, &data);
-
- return data.desk;
-}
-
-EINTERN void
-e_desk_next(E_Zone *zone)
-{
- E_OBJECT_CHECK(zone);
- E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
-
- wl_signal_emit(&PRI(zone)->events.desk_next, NULL);
-}
-
-EINTERN void
-e_desk_prev(E_Zone *zone)
-{
- E_OBJECT_CHECK(zone);
- E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
-
- wl_signal_emit(&PRI(zone)->events.desk_prev, NULL);
-}
-
-EINTERN unsigned int
-e_desks_count(void)
-{
- Eina_List *l, *comp_zone_list;
- E_Zone *zone;
- unsigned int count = 0;
-
- if (!(comp_zone_list = e_comp_zone_list_get())) return 0;
-
- EINA_LIST_FOREACH(comp_zone_list, l, zone)
- {
- E_Zone_Data_Desk_Count data = {0,};
- wl_signal_emit(&PRI(zone)->events.desk_count, &data);
- count += data.count;
- }
-
- return count;
-}
-
-EINTERN void
-e_zone_desk_row_add_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_row_add, listener);
-}
-
-EINTERN void
-e_zone_desk_row_remove_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_row_remove, listener);
-}
-
-EINTERN void
-e_zone_desk_col_add_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_col_add, listener);
-}
-
-EINTERN void
-e_zone_desk_col_remove_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_col_remove, listener);
-}
EINTERN void
e_zone_desk_current_get_listener_add(E_Zone *zone, struct wl_listener *listener)
API_ENTRY;
wl_signal_add(&priv->events.desk_at_xy_get, listener);
}
-
-EINTERN void
-e_zone_desk_at_pos_get_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_at_pos_get, listener);
-}
-
-EINTERN void
-e_zone_desk_next_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_next, listener);
-}
-
-EINTERN void
-e_zone_desk_prev_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_prev, listener);
-}
-
-EINTERN void
-e_zone_desk_count_listener_add(E_Zone *zone, struct wl_listener *listener)
-{
- API_ENTRY;
- wl_signal_add(&priv->events.desk_count, listener);
-}
typedef struct _E_Event_Zone_Generic E_Event_Zone_Del;
typedef struct _E_Event_Pointer_Warp E_Event_Pointer_Warp;
-typedef struct _E_Event_Zone_Generic E_Event_Zone_Stow;
-typedef struct _E_Event_Zone_Generic E_Event_Zone_Unstow;
extern EINTERN int E_EVENT_ZONE_DESK_COUNT_SET;
extern EINTERN int E_EVENT_ZONE_ADD;
E_Desk *desk;
}E_Zone_Data_Desk_Get;
-typedef struct _E_Zone_Data_Desk_Count
-{
- unsigned int count;
-} E_Zone_Data_Desk_Count;
-
typedef struct _E_Zone_Data_Client_Get
{
E_Client *criterion_ec;
EINTERN Eina_Bool e_zone_move_resize(E_Zone *zone, int x, int y, int w, int h);
EINTERN void e_zone_resize(E_Zone *zone, int w, int h);
EINTERN E_Zone *e_zone_get_by_id(int id);
-EINTERN E_Zone *e_zone_get_by_position(int x, int y);
EINTERN void e_zone_useful_geometry_dirty(E_Zone *zone);
EINTERN void e_zone_client_add(E_Zone *zone, E_Client *ec);
EINTERN Eina_Bool e_zone_has_ec(E_Zone *zone, E_Client *ec);
EINTERN void e_zone_focused_client_set(E_Zone *zone, E_Client *ec);
EINTERN void e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count);
-EINTERN void e_zone_desk_count_get(E_Zone *zone, int *x_count, int *y_count);
EINTERN void e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area);
EINTERN Eina_Bool e_zone_obstacle_add(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bool vertical);
EINTERN void e_zone_client_visible_above_get_listener_add(E_Zone *zone, struct wl_listener *listener);
EINTERN void e_zone_client_visible_below_get_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_desk_row_add(E_Zone *zone);
-EINTERN void e_desk_row_remove(E_Zone *zone);
-EINTERN void e_desk_col_add(E_Zone *zone);
-EINTERN void e_desk_col_remove(E_Zone *zone);
EINTERN E_Desk *e_desk_at_xy_get(E_Zone *zone, int x, int y);
-EINTERN E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
-EINTERN void e_desk_next(E_Zone *zone);
-EINTERN void e_desk_prev(E_Zone *zone);
-
-EINTERN void e_zone_desk_row_add_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_row_remove_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_col_add_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_col_remove_listener_add(E_Zone *zone, struct wl_listener *listener);
+
EINTERN void e_zone_desk_current_get_listener_add(E_Zone *zone, struct wl_listener *listener);
EINTERN void e_zone_desk_at_xy_get_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_at_pos_get_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_next_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_prev_listener_add(E_Zone *zone, struct wl_listener *listener);
-EINTERN void e_zone_desk_count_listener_add(E_Zone *zone, struct wl_listener *listener);
#endif
struct wl_listener obstacle_remove;
struct wl_listener useful_geometry_get;
struct wl_listener focus_focused_ec_changed;
- struct wl_listener desk_row_add;
- struct wl_listener desk_row_remove;
- struct wl_listener desk_col_add;
- struct wl_listener desk_col_remove;
struct wl_listener desk_current_get;
struct wl_listener desk_at_xy_get;
- struct wl_listener desk_at_pos_get;
- struct wl_listener desk_next;
- struct wl_listener desk_prev;
- struct wl_listener desk_count;
struct wl_listener focused_client_get;
struct wl_listener focused_client_set;
}
-static void
-_e_policy_zone_cb_desk_row_add(struct wl_listener *listener, void *data)
-{
- E_Desk_Data_Desk_Control *desk_control_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_row_add);
- desk_control_data = (E_Desk_Data_Desk_Control *) data;
- zone = desk_control_data->zone;
-
- e_zone_desk_count_set(zone, zone->desk_x_count, zone->desk_y_count + 1);
-}
-
-static void
-_e_policy_zone_cb_desk_row_remove(struct wl_listener *listener, void *data)
-{
- E_Desk_Data_Desk_Control *desk_control_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_row_remove);
- desk_control_data = (E_Desk_Data_Desk_Control *) data;
- zone = desk_control_data->zone;
-
- e_zone_desk_count_set(zone, zone->desk_x_count, zone->desk_y_count - 1);
-}
-
-static void
-_e_policy_zone_cb_desk_col_add(struct wl_listener *listener, void *data)
-{
- E_Desk_Data_Desk_Control *desk_control_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_col_add);
- desk_control_data = (E_Desk_Data_Desk_Control *) data;
- zone = desk_control_data->zone;
-
- e_zone_desk_count_set(zone, zone->desk_x_count + 1, zone->desk_y_count);
-}
-
-static void
-_e_policy_zone_cb_desk_col_remove(struct wl_listener *listener, void *data)
-{
- E_Desk_Data_Desk_Control *desk_control_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_col_remove);
- desk_control_data = (E_Desk_Data_Desk_Control *) data;
- zone = desk_control_data->zone;
-
- e_zone_desk_count_set(zone, zone->desk_x_count - 1, zone->desk_y_count);
-}
-
static void
_e_policy_zone_cb_desk_current_get(struct wl_listener *listener, void *data)
{
desk_get_data->desk = zone->desks[x + (y * zone->desk_x_count)];
}
-static void
-_e_policy_zone_cb_desk_at_pos_get(struct wl_listener *listener, void *data)
-{
- E_Zone_Data_Desk_Get *desk_get_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
- int x, y, pos;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_at_pos_get);
- desk_get_data = (E_Zone_Data_Desk_Get *) data;
- zone = desk_get_data->zone;
- pos = desk_get_data->pos;
-
- y = pos / zone->desk_x_count;
- x = pos - (y * zone->desk_x_count);
-
- if ((x >= zone->desk_x_count) || (y >= zone->desk_y_count))
- {
- desk_get_data->desk = NULL;
- return;
- }
-
- desk_get_data->desk = zone->desks[x + (y * zone->desk_x_count)];
-}
-
-static void
-_e_policy_zone_cb_desk_next(struct wl_listener *listener, void *data)
-{
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
- int x, y;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_next);
- zone = policy_zone->zone;
-
- if ((zone->desk_x_count < 2) && (zone->desk_y_count < 2))
- return;
-
- x = zone->desk_x_current;
- y = zone->desk_y_current;
-
- x++;
- if (x >= zone->desk_x_count)
- {
- x = 0;
- y++;
- if (y >= zone->desk_y_count) y = 0;
- }
-
- e_desk_show(e_desk_at_xy_get(zone, x, y));
-}
-
-static void
-_e_policy_zone_cb_desk_prev(struct wl_listener *listener, void *data)
-{
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
- int x, y;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_prev);
- zone = policy_zone->zone;
-
- if ((zone->desk_x_count < 2) && (zone->desk_y_count < 2))
- return;
-
- x = zone->desk_x_current;
- y = zone->desk_y_current;
-
- x--;
- if (x < 0)
- {
- x = zone->desk_x_count - 1;
- y--;
- if (y < 0) y = zone->desk_y_count - 1;
- }
- e_desk_show(e_desk_at_xy_get(zone, x, y));
-}
-
-static void
-_e_policy_zone_cb_desk_count(struct wl_listener *listener, void *data)
-{
- E_Zone_Data_Desk_Count *count_data;
- E_Policy_Zone *policy_zone;
- E_Zone *zone;
- int cx, cy;
-
- policy_zone = wl_container_of(listener, policy_zone, desk_count);
- count_data = data;
- zone = policy_zone->zone;
-
- e_zone_desk_count_get(zone, &cx, &cy);
- count_data->count = cx * cy;
-}
-
#ifdef EC_IS_NOT_VISIBLE
# undef EC_IS_NOT_VISIBLE
policy_zone->focused_client_set.notify = _e_policy_zone_cb_focused_client_set;
e_zone_focused_client_set_listener_add(zone, &policy_zone->focused_client_set);
- policy_zone->desk_row_add.notify = _e_policy_zone_cb_desk_row_add;
- e_zone_desk_row_add_listener_add(zone, &policy_zone->desk_row_add);
- policy_zone->desk_row_remove.notify = _e_policy_zone_cb_desk_row_remove;
- e_zone_desk_row_remove_listener_add(zone, &policy_zone->desk_row_remove);
- policy_zone->desk_col_add.notify = _e_policy_zone_cb_desk_col_add;
- e_zone_desk_col_add_listener_add(zone, &policy_zone->desk_col_add);
- policy_zone->desk_col_remove.notify = _e_policy_zone_cb_desk_col_remove;
- e_zone_desk_col_remove_listener_add(zone, &policy_zone->desk_col_remove);
policy_zone->desk_current_get.notify = _e_policy_zone_cb_desk_current_get;
e_zone_desk_current_get_listener_add(zone, &policy_zone->desk_current_get);
policy_zone->desk_at_xy_get.notify = _e_policy_zone_cb_desk_at_xy_get;
e_zone_desk_at_xy_get_listener_add(zone, &policy_zone->desk_at_xy_get);
- policy_zone->desk_at_pos_get.notify = _e_policy_zone_cb_desk_at_pos_get;
- e_zone_desk_at_pos_get_listener_add(zone, &policy_zone->desk_at_pos_get);
- policy_zone->desk_next.notify = _e_policy_zone_cb_desk_next;
- e_zone_desk_next_listener_add(zone, &policy_zone->desk_next);
- policy_zone->desk_prev.notify = _e_policy_zone_cb_desk_prev;
- e_zone_desk_prev_listener_add(zone, &policy_zone->desk_prev);
- policy_zone->desk_count.notify = _e_policy_zone_cb_desk_count;
- e_zone_desk_count_listener_add(zone, &policy_zone->desk_count);
policy_zone->focus_focused_ec_changed.notify = _policy_zone_cb_focus_focused_ec_changed;
e_focus_focused_ec_changed_listener_add(zone->focus, &policy_zone->focus_focused_ec_changed);
wl_list_remove(&policy_zone->focused_client_get.link);
wl_list_remove(&policy_zone->focused_client_set.link);
- wl_list_remove(&policy_zone->desk_row_add.link);
- wl_list_remove(&policy_zone->desk_row_remove.link);
- wl_list_remove(&policy_zone->desk_col_add.link);
- wl_list_remove(&policy_zone->desk_col_remove.link);
wl_list_remove(&policy_zone->desk_current_get.link);
wl_list_remove(&policy_zone->desk_at_xy_get.link);
- wl_list_remove(&policy_zone->desk_at_pos_get.link);
- wl_list_remove(&policy_zone->desk_next.link);
- wl_list_remove(&policy_zone->desk_prev.link);
- wl_list_remove(&policy_zone->desk_count.link);
wl_list_remove(&policy_zone->focus_focused_ec_changed.link);