forked from enlightenment/enlightenment
Would be nice to inform the pager when desks are getting added and removed, too.:)
SVN revision: 12974
This commit is contained in:
parent
4544c3aea0
commit
be8d8e19aa
|
@ -12,13 +12,18 @@ static void _e_zone_cb_menu_end(void *data, E_Menu *m);
|
|||
static void _e_zone_cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_zone_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_zone_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||
static void _e_zone_event_zone_desk_count_set_free(void *data, void *ev);
|
||||
|
||||
static int zone_count;
|
||||
|
||||
int E_EVENT_ZONE_DESK_COUNT_SET = 0;
|
||||
|
||||
int
|
||||
e_zone_init(void)
|
||||
{
|
||||
zone_count = 0;
|
||||
E_EVENT_ZONE_DESK_COUNT_SET = ecore_event_type_new();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -284,6 +289,7 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
|
|||
int x, y, xx, yy, moved;
|
||||
Evas_List *client;
|
||||
E_Border *bd;
|
||||
E_Event_Zone_Desk_Count_Set *ev;
|
||||
|
||||
xx = x_count;
|
||||
if (xx < 1)
|
||||
|
@ -378,6 +384,12 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
|
|||
e_config->zone_desks_x_count = xx;
|
||||
e_config->zone_desks_y_count = yy;
|
||||
e_config_save_queue();
|
||||
|
||||
ev = E_NEW(E_Event_Zone_Desk_Count_Set, 1);
|
||||
if (!ev) return;
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(zone));
|
||||
ecore_event_add(E_EVENT_ZONE_DESK_COUNT_SET, ev, _e_zone_event_zone_desk_count_set_free, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -386,3 +398,14 @@ e_zone_desk_count_get(E_Zone *zone, int *x_count, int *y_count)
|
|||
*x_count = zone->desk_x_count;
|
||||
*y_count = zone->desk_y_count;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_zone_event_zone_desk_count_set_free(void *data, void *ev)
|
||||
{
|
||||
E_Event_Zone_Desk_Count_Set *e;
|
||||
|
||||
e = ev;
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
free(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
typedef struct _E_Zone E_Zone;
|
||||
|
||||
typedef struct _E_Event_Zone_Desk_Count_Set E_Event_Zone_Desk_Count_Set;
|
||||
|
||||
#else
|
||||
#ifndef E_ZONE_H
|
||||
#define E_ZONE_H
|
||||
|
@ -25,6 +27,11 @@ struct _E_Zone
|
|||
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Desk_Count_Set
|
||||
{
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
EAPI int e_zone_init(void);
|
||||
EAPI int e_zone_shutdown(void);
|
||||
EAPI E_Zone *e_zone_new(E_Container *con, int x, int y, int w, int h);
|
||||
|
@ -37,5 +44,7 @@ EAPI Evas_List *e_zone_clients_list_get(E_Zone *zone);
|
|||
EAPI void e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count);
|
||||
EAPI void e_zone_desk_count_get(E_Zone *zone, int *x_count, int *y_count);
|
||||
|
||||
extern EAPI int E_EVENT_ZONE_DESK_COUNT_SET;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -42,6 +42,7 @@ static int _pager_cb_event_border_remove(void *data, int type, void *eve
|
|||
static int _pager_cb_event_border_hide(void *data, int type, void *event);
|
||||
static int _pager_cb_event_border_show(void *data, int type, void *event);
|
||||
static int _pager_cb_event_border_desk_set(void *data, int type, void *event);
|
||||
static int _pager_cb_event_zone_desk_count_set(void *data, int type, void *event);
|
||||
|
||||
static void _pager_reconfigure(Pager *e);
|
||||
|
||||
|
@ -213,6 +214,9 @@ _pager_init(E_Module *m)
|
|||
e->ev_handler_border_desk_set =
|
||||
ecore_event_handler_add(E_EVENT_BORDER_DESK_SET,
|
||||
_pager_cb_event_border_desk_set, e);
|
||||
e->ev_handler_zone_desk_count_set =
|
||||
ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
|
||||
_pager_cb_event_zone_desk_count_set, e);
|
||||
|
||||
_pager_zone_set(e, e_zone_current_get(e->con));
|
||||
_pager_reconfigure(e);
|
||||
|
@ -248,6 +252,7 @@ _pager_shutdown(Pager *e)
|
|||
ecore_event_handler_del(e->ev_handler_border_hide);
|
||||
ecore_event_handler_del(e->ev_handler_border_show);
|
||||
ecore_event_handler_del(e->ev_handler_border_desk_set);
|
||||
ecore_event_handler_del(e->ev_handler_zone_desk_count_set);
|
||||
|
||||
free(e);
|
||||
}
|
||||
|
@ -875,3 +880,14 @@ _pager_cb_event_border_desk_set(void *data, int type, void *event)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_pager_cb_event_zone_desk_count_set(void *data, int type, void *event)
|
||||
{
|
||||
Pager *e;
|
||||
E_Event_Zone_Desk_Count_Set *ev;
|
||||
|
||||
e = data;
|
||||
_pager_reconfigure(e);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ struct _Pager
|
|||
Ecore_Event_Handler *ev_handler_border_hide;
|
||||
Ecore_Event_Handler *ev_handler_border_show;
|
||||
Ecore_Event_Handler *ev_handler_border_desk_set;
|
||||
Ecore_Event_Handler *ev_handler_zone_desk_count_set;
|
||||
|
||||
Evas_Coord fx, fy, fw, fh, tw, th;
|
||||
Evas_Coord xx, yy;
|
||||
|
|
Loading…
Reference in New Issue