Would be nice to inform the pager when desks are getting added and removed, too.:)

SVN revision: 12974
This commit is contained in:
xcomputerman 2005-01-15 08:31:39 +00:00 committed by xcomputerman
parent 4544c3aea0
commit be8d8e19aa
4 changed files with 49 additions and 0 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;