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

Reply via email to