Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_gadman.c e_gadman.h Log Message: some more gadman code and make shutdown of borders a little faster :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -3 -r1.72 -r1.73 --- e_border.c 15 Jan 2005 14:04:13 -0000 1.72 +++ e_border.c 15 Jan 2005 15:21:57 -0000 1.73 @@ -940,7 +940,7 @@ e = ev; bd = e_border_find_by_client_window(e->win); if (!bd) return 1; - + e_border_hide(bd); e_object_del(E_OBJECT(bd)); return 1; } @@ -950,6 +950,7 @@ { E_Border *bd; Ecore_X_Event_Window_Hide *e; + int was_iconic = 0, was_visible = 0; // printf("in hide cb\n"); bd = data; @@ -962,8 +963,10 @@ return 1; } /* Don't delete hidden or iconified windows */ - if (!(bd->iconic) && (bd->visible)) e_object_del(E_OBJECT(bd)); - + was_iconic = bd->iconic; + was_visible = bd->visible; + e_border_hide(bd); + if (!(was_iconic) && (was_visible)) e_object_del(E_OBJECT(bd)); return 1; } @@ -978,6 +981,7 @@ bd = e_border_find_by_client_window(e->win); if (!bd) return 1; if (e->parent == bd->client.shell_win) return 1; + e_border_hide(bd); e_object_del(E_OBJECT(bd)); return 1; } @@ -1485,6 +1489,7 @@ ecore_x_kill(bd->client.win); ecore_x_sync(); // ecore_x_window_del(bd->client.win); + e_border_hide(bd); e_object_del(E_OBJECT(bd)); } } @@ -2780,6 +2785,7 @@ ecore_x_kill(bd->client.win); ecore_x_sync(); // ecore_x_window_del(bd->client.win); + e_border_hide(bd); e_object_del(E_OBJECT(bd)); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadman.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_gadman.c 15 Jan 2005 09:50:26 -0000 1.1 +++ e_gadman.c 15 Jan 2005 15:21:57 -0000 1.2 @@ -5,6 +5,7 @@ /* local subsystem functions */ static void _e_gadman_free(E_Gadman *gm); +static void _e_gadman_client_free(E_Gadman_Client *gmc); /* externally accessible functions */ int @@ -30,9 +31,117 @@ return gm; } +E_Gadman_Client * +e_gadman_client_new(E_Gadman *gm) +{ + E_Gadman_Client *gmc; + E_OBJECT_CHECK_RETURN(gm, NULL); + + gmc = E_OBJECT_ALLOC(E_Gadman_Client, _e_gadman_client_free); + if (!gmc) return NULL; + gmc->gadman = gm; + gmc->policy = E_GADMAN_POLICY_ANYWHERE; + gmc->minw = 1; + gmc->minh = 1; + gmc->maxw = 0; + gmc->maxh = 0; + gmc->ax = 0.0; + gmc->ay = 1.0; + gmc->mina = 0.0; + gmc->maxa = 9999999.0; + gm->clients = evas_list_append(gm->clients, gmc); + return gmc; +} + +void +e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance) +{ + E_OBJECT_CHECK(gmc); + if (gmc->domain) free(gmc->domain); + gmc->domain = strdup(domain); + gmc->instance = instance; +} + +void +e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance) +{ + E_OBJECT_CHECK(gmc); +} + +void +e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance) +{ + E_OBJECT_CHECK(gmc); +} + +void +e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol) +{ + E_OBJECT_CHECK(gmc); + gmc->policy = pol; +} + +void +e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh) +{ + E_OBJECT_CHECK(gmc); + gmc->minw = minw; + gmc->minh = minh; +} + +void +e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh) +{ + E_OBJECT_CHECK(gmc); + gmc->maxw = maxw; + gmc->maxh = maxh; +} + +void +e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign) +{ + E_OBJECT_CHECK(gmc); + gmc->ax = xalign; + gmc->ay = yalign; +} + +void +e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa) +{ + E_OBJECT_CHECK(gmc); + gmc->mina = mina; + gmc->maxa = maxa; +} + +void +e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +{ + E_OBJECT_CHECK(gmc); + if (x) *x = gmc->x; + if (y) *y = gmc->y; + if (w) *w = gmc->w; + if (h) *h = gmc->h; +} + +void +e_gadman_client_change_func_set(E_Gadman_Client *gmc, void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change), void *data) +{ + E_OBJECT_CHECK(gmc); + gmc->func = func; + gmc->data = data; +} + /* local subsystem functions */ static void _e_gadman_free(E_Gadman *gm) { free(gm); } + +static void +_e_gadman_client_free(E_Gadman_Client *gmc) +{ + gmc->gadman->clients = evas_list_remove(gmc->gadman->clients, gmc); + if (gmc->domain) free(gmc->domain); + free(gmc); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadman.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_gadman.h 15 Jan 2005 09:50:26 -0000 1.1 +++ e_gadman.h 15 Jan 2005 15:21:57 -0000 1.2 @@ -3,20 +3,26 @@ typedef enum _E_Gadman_Policy { /* type */ - E_GADMAN_ANYWHERE = 0, - E_GADMAN_EDGES = 1, - E_GADMAN_LEFT_EDGE = 2, - E_GADMAN_RIGHT_EDGE = 3, - E_GADMAN_TOP_EDGE = 4, - E_GADMAN_BOTTOM_EDGE = 5, + E_GADMAN_POLICY_ANYWHERE = 0, + E_GADMAN_POLICY_EDGES = 1, + E_GADMAN_POLICY_LEFT_EDGE = 2, + E_GADMAN_POLICY_RIGHT_EDGE = 3, + E_GADMAN_POLICY_TOP_EDGE = 4, + E_GADMAN_POLICY_BOTTOM_EDGE = 5, /* extra flags */ - E_GADMAN_FIXED_ZONE = 1 << 8, - E_GADMAN_HSIZE = 1 << 9, - E_GADMAN_VSIZE = 1 << 10, - E_GADMAN_HMOVE = 1 << 11, - E_GADMAN_VMOVE = 1 << 12 + E_GADMAN_POLICY_FIXED_ZONE = 1 << 8, + E_GADMAN_POLICY_HSIZE = 1 << 9, + E_GADMAN_POLICY_VSIZE = 1 << 10, + E_GADMAN_POLICY_HMOVE = 1 << 11, + E_GADMAN_POLICY_VMOVE = 1 << 12 } E_Gadman_Policy; +typedef enum _E_Gadman_Change +{ + E_GADMAN_CHANGE_MOVE, + E_GADMAN_CHANGE_RESIZE, +} E_Gadman_Change; + typedef struct _E_Gadman E_Gadman; typedef struct _E_Gadman_Client E_Gadman_Client; @@ -27,7 +33,6 @@ struct _E_Gadman { E_Object e_obj_inherit; - E_Container *container; Evas_List *clients; }; @@ -35,18 +40,34 @@ struct _E_Gadman_Client { E_Object e_obj_inherit; - E_Gadman *gadman; + + Evas_Object *control_object; + char *domain; + int instance; + E_Gadman_Policy policy; + Evas_Coord x, y, w, h; + Evas_Coord minw, minh, maxw, maxh; + double ax, ay; + double mina, maxa; + void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change); + void *data; }; EAPI int e_gadman_init(void); EAPI int e_gadman_shutdown(void); EAPI E_Gadman *e_gadman_new(E_Container *con); EAPI E_Gadman_Client *e_gadman_client_new(E_Gadman *gm); +EAPI void e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance); +EAPI void e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance); +EAPI void e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance); EAPI void e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol); EAPI void e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh); -EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh); -EAPI void e_gadman_client_default_align_set(E_Gadman_Client *gmc, double xalign, double yalign); - +EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh); +EAPI void e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign); +EAPI void e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa); +EAPI void e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); +EAPI void e_gadman_client_change_func_set(E_Gadman_Client *gmc, void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change), void *data); + #endif #endif ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs