Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_actions.c e_border.c e_border.h e_config.c 
        e_container.c e_container.h e_includes.h e_init.c 
        e_int_config_cursor.c e_ipc_handlers.h e_main.c e_manager.c 
        e_maximize.c e_place.c e_pointer.c e_pointer.h e_resist.c 
        e_test.c e_win.c e_win.h 
Removed Files:
        e_gadman.c e_gadman.h 


Log Message:


jamse brown ... errr... gadman is dead.

basically if moduels wish to put objects on a desktop - they now will have to
DIY and look after themselves. until we have gadcons with "free" layout that
do similar stuff - but this simply means module authors need to d a bit more
work. gadman code is unmaintained and a burden - thus removed.

also borders and e_win's have their own pointers now - this should nuke the
stuck pointer bug... :)


===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -3 -r1.140 -r1.141
--- Makefile.am 20 Aug 2006 03:51:54 -0000      1.140
+++ Makefile.am 20 Aug 2006 04:48:27 -0000      1.141
@@ -54,7 +54,6 @@
 e_resist.h \
 e_startup.h \
 e_hints.h \
-e_gadman.h \
 e_signals.h \
 e_xinerama.h \
 e_table.h \
@@ -203,7 +202,6 @@
 e_resist.c \
 e_startup.c \
 e_hints.c \
-e_gadman.c \
 e_signals.c \
 e_xinerama.c \
 e_table.c \
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_actions.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -3 -r1.77 -r1.78
--- e_actions.c 14 Aug 2006 15:22:44 -0000      1.77
+++ e_actions.c 20 Aug 2006 04:48:27 -0000      1.78
@@ -1352,49 +1352,6 @@
 }
 
 /***************************************************************************/
-ACT_FN_GO(edit_mode)
-{
-   if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-   if (!obj) return;
-   if (obj->type != E_CONTAINER_TYPE)
-     {
-       obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-       if (!obj) return;
-     }
-   e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_EDIT);
-   e_gadcon_all_edit_begin();
-}
-ACT_FN_END(edit_mode)
-{
-   if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-   if (!obj) return;
-   if (obj->type != E_CONTAINER_TYPE)
-     {
-       obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-       if (!obj) return;
-     }
-   e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_NORMAL);
-   e_gadcon_all_edit_end();
-}
-
-/***************************************************************************/
-ACT_FN_GO(edit_mode_toggle)
-{
-   if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-   if (!obj) return;
-   if (obj->type != E_CONTAINER_TYPE)
-     {
-       obj = E_OBJECT(e_container_current_get(e_manager_current_get()));
-       if (!obj) return;
-     }
-   if (e_gadman_mode_get(((E_Container *)obj)->gadman) == E_GADMAN_MODE_NORMAL)
-     e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_EDIT);
-   else
-     e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_NORMAL);
-}
-/***************************************************************************/
-
-/***************************************************************************/
 ACT_FN_GO(desk_deskshow_toggle)
 {
    E_Zone *zone;
@@ -1476,10 +1433,8 @@
          return;
        if (bd->zone)
          man = bd->zone->container->manager;
+       e_pointer_type_push(bd->pointer, bd, params);
      }
-   if (!man) man = e_manager_current_get();
-   if (!man) return;
-   e_pointer_type_push(man->pointer, obj, params);
 }
 
 ACT_FN_GO(pointer_resize_pop)
@@ -1497,10 +1452,8 @@
          return;
        if (bd->zone)
          man = (E_Manager *)bd->zone->container->manager;
+       e_pointer_type_pop(bd->pointer, bd, params);
      }
-   if (!man) man = e_manager_current_get();
-   if (!man) return;
-   e_pointer_type_pop(man->pointer, obj, params);
 }
 
 /***************************************************************************/
@@ -1812,14 +1765,6 @@
    ACT_GO_MOUSE(winlist);
    ACT_GO_KEY(winlist);
    
-   ACT_GO(edit_mode);
-   ACT_END(edit_mode);
-   
-   /* edit_mode */
-   ACT_GO(edit_mode_toggle);
-   e_register_action_predef_name(_("Gadgets"), _("Toggle Edit Mode"), 
"edit_mode_toggle", NULL,
-                                EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 
0);
-
    /* restart */
    ACT_GO(restart);
    e_register_action_predef_name(_("Enlightenment"), _("Restart"), "restart", 
NULL,
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.526
retrieving revision 1.527
diff -u -3 -r1.526 -r1.527
--- e_border.c  16 Aug 2006 23:12:03 -0000      1.526
+++ e_border.c  20 Aug 2006 04:48:27 -0000      1.527
@@ -473,6 +473,7 @@
 
    focus_stack = evas_list_append(focus_stack, bd);
    
+   bd->pointer = e_pointer_window_new(bd->win, 0);
    return bd;
 }
 
@@ -2973,6 +2974,7 @@
 static void
 _e_border_free(E_Border *bd)
 {
+   e_object_del(E_OBJECT(bd->pointer));
    if (bd->focused)
      {
        if (e_config->focus_revert_on_hide_or_close)
@@ -3189,8 +3191,6 @@
        ecore_event_add(E_EVENT_BORDER_REMOVE, ev, 
_e_border_event_border_remove_free, NULL);
      }
 
-   /* remove all pointers for this win. */
-   e_pointer_type_pop(bd->zone->container->manager->pointer, bd, NULL);
    e_container_border_remove(bd);
    if (bd->parent)
      {
@@ -6981,28 +6981,28 @@
    switch (bd->resize_mode)
      {
       case RESIZE_TL:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_tl");
+        e_pointer_type_push(bd->pointer, bd, "resize_tl");
         break;
       case RESIZE_T:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_t");
+        e_pointer_type_push(bd->pointer, bd, "resize_t");
         break;
       case RESIZE_TR:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_tr");
+        e_pointer_type_push(bd->pointer, bd, "resize_tr");
         break;
       case RESIZE_R:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_r");
+        e_pointer_type_push(bd->pointer, bd, "resize_r");
         break;
       case RESIZE_BR:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_br");
+        e_pointer_type_push(bd->pointer, bd, "resize_br");
         break;
       case RESIZE_B:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_b");
+        e_pointer_type_push(bd->pointer, bd, "resize_b");
         break;
       case RESIZE_BL:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_bl");
+        e_pointer_type_push(bd->pointer, bd, "resize_bl");
         break;
       case RESIZE_L:
-        e_pointer_type_push(bd->zone->container->manager->pointer, bd, 
"resize_l");
+        e_pointer_type_push(bd->pointer, bd, "resize_l");
         break;
      }
 }
@@ -7013,28 +7013,28 @@
    switch (bd->resize_mode)
      {
       case RESIZE_TL:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_tl");
+        e_pointer_type_pop(bd->pointer, bd, "resize_tl");
         break;
       case RESIZE_T:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_t");
+        e_pointer_type_pop(bd->pointer, bd, "resize_t");
         break;
       case RESIZE_TR:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_tr");
+        e_pointer_type_pop(bd->pointer, bd, "resize_tr");
         break;
       case RESIZE_R:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_r");
+        e_pointer_type_pop(bd->pointer, bd, "resize_r");
         break;
       case RESIZE_BR:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_br");
+        e_pointer_type_pop(bd->pointer, bd, "resize_br");
         break;
       case RESIZE_B:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_b");
+        e_pointer_type_pop(bd->pointer, bd, "resize_b");
         break;
       case RESIZE_BL:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_bl");
+        e_pointer_type_pop(bd->pointer, bd, "resize_bl");
         break;
       case RESIZE_L:
-        e_pointer_type_pop(bd->zone->container->manager->pointer, bd, 
"resize_l");
+        e_pointer_type_pop(bd->pointer, bd, "resize_l");
         break;
      }
 }
@@ -7042,11 +7042,11 @@
 static void
 _e_border_pointer_move_begin(E_Border *bd)
 {
-   e_pointer_type_push(bd->zone->container->manager->pointer, bd, "move");
+   e_pointer_type_push(bd->pointer, bd, "move");
 }
 
 static void
 _e_border_pointer_move_end(E_Border *bd)
 {
-   e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "move");
+   e_pointer_type_pop(bd->pointer, bd, "move");
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.147
retrieving revision 1.148
diff -u -3 -r1.147 -r1.148
--- e_border.h  7 Aug 2006 20:25:34 -0000       1.147
+++ e_border.h  20 Aug 2006 04:48:27 -0000      1.148
@@ -444,6 +444,7 @@
    Evas_List *transients;
 
    E_App *app;
+   E_Pointer *pointer;
 };
 
 struct _E_Border_Pending_Move_Resize 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.191
retrieving revision 1.192
diff -u -3 -r1.191 -r1.192
--- e_config.c  15 Aug 2006 06:59:55 -0000      1.191
+++ e_config.c  20 Aug 2006 04:48:27 -0000      1.192
@@ -857,9 +857,6 @@
        CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "Tab",
                    E_BINDING_MODIFIER_SHIFT | E_BINDING_MODIFIER_ALT, 0,
                    "winlist", "prev");
-       CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "g",
-                   E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
-                   "edit_mode_toggle", NULL);
        CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "End",
                    E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
                    "restart", NULL);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -3 -r1.105 -r1.106
--- e_container.c       18 Aug 2006 14:48:22 -0000      1.105
+++ e_container.c       20 Aug 2006 04:48:27 -0000      1.106
@@ -174,8 +174,6 @@
      {
        zone = e_zone_new(con, 0, 0, 0, con->w, con->h);
      }
-   con->gadman = e_gadman_new(con);
-   
    return con;
 }
         
@@ -965,7 +963,6 @@
        l = l->next;
        e_object_del(E_OBJECT(tmp->data));
      }
-   if (con->gadman) e_object_del(E_OBJECT(con->gadman));
    con->manager->containers = evas_list_remove(con->manager->containers, con);
    e_canvas_del(con->bg_ecore_evas);
    ecore_evas_free(con->bg_ecore_evas);
@@ -1150,7 +1147,6 @@
    ev->container = con;
    e_object_ref(E_OBJECT(con));
    
-   e_gadman_all_save(con->gadman);
    e_xinerama_update();
    screens = (Evas_List *)e_xinerama_screens_get();
    if (screens)
@@ -1185,8 +1181,6 @@
        e_zone_move_resize(zone, 0, 0, con->w, con->h);
        e_shelf_zone_move_resize_handle(zone);  
      }
-   
-   e_gadman_container_resize(con->gadman);
    
    ecore_event_add(E_EVENT_CONTAINER_RESIZE, ev, 
_e_container_event_container_resize_free, NULL);
    
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_container.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- e_container.h       8 Aug 2006 01:34:49 -0000       1.34
+++ e_container.h       20 Aug 2006 04:48:27 -0000      1.35
@@ -35,7 +35,6 @@
    int                  x, y, w, h;
    char                 visible : 1;
    E_Manager           *manager;
-   E_Gadman            *gadman;
    
    unsigned int         num;
    const char         *name;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_includes.h,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -3 -r1.118 -r1.119
--- e_includes.h        20 Aug 2006 03:51:54 -0000      1.118
+++ e_includes.h        20 Aug 2006 04:48:27 -0000      1.119
@@ -31,7 +31,6 @@
 #include "e_resist.h"
 #include "e_startup.h"
 #include "e_hints.h"
-#include "e_gadman.h"
 #include "e_signals.h"
 #include "e_xinerama.h"
 #include "e_table.h"
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_init.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- e_init.c    5 Jun 2006 03:16:16 -0000       1.35
+++ e_init.c    20 Aug 2006 04:48:27 -0000      1.36
@@ -50,7 +50,7 @@
    ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window");
    ecore_evas_title_set(_e_init_ecore_evas, "Enlightenment Init");
 
-   _e_init_pointer = e_pointer_window_new(_e_init_win);
+   _e_init_pointer = e_pointer_window_new(_e_init_win, 1);
 
    ecore_evas_raise(_e_init_ecore_evas);
    ecore_evas_show(_e_init_ecore_evas);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_cursor.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_int_config_cursor.c       14 Aug 2006 15:22:45 -0000      1.9
+++ e_int_config_cursor.c       20 Aug 2006 04:48:27 -0000      1.10
@@ -79,7 +79,7 @@
             E_Manager *man;
             man = l->data;
             if (man->pointer) e_object_del(E_OBJECT(man->pointer));
-            man->pointer = e_pointer_window_new(man->root);
+            man->pointer = e_pointer_window_new(man->root, 1);
          }
      }   
    return 1;
@@ -128,7 +128,7 @@
             E_Manager *man;
             man = l->data;
             if (man->pointer) e_object_del(E_OBJECT(man->pointer));
-            man->pointer = e_pointer_window_new(man->root);
+            man->pointer = e_pointer_window_new(man->root, 1);
          }     
      }   
    return 1;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -3 -r1.133 -r1.134
--- e_ipc_handlers.h    10 Aug 2006 05:01:07 -0000      1.133
+++ e_ipc_handlers.h    20 Aug 2006 04:48:27 -0000      1.134
@@ -5354,7 +5354,7 @@
        E_Manager *man;
        man = ml->data;
        if (man->pointer) e_object_del(E_OBJECT(man->pointer));
-       man->pointer = e_pointer_window_new(man->root);
+       man->pointer = e_pointer_window_new(man->root, 1);
      }
    SAVE;
    END_INT;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_main.c,v
retrieving revision 1.175
retrieving revision 1.176
diff -u -3 -r1.175 -r1.176
--- e_main.c    14 Aug 2006 21:56:13 -0000      1.175
+++ e_main.c    20 Aug 2006 04:48:27 -0000      1.176
@@ -907,7 +907,6 @@
    if (!e_container_init()) return 0;
    if (!e_zone_init()) return 0;
    if (!e_desk_init()) return 0;
-   if (!e_gadman_init()) return 0;
    if (!e_menu_init()) return 0;
    if (!e_exehist_init()) return 0;
    
@@ -971,7 +970,6 @@
    e_focus_shutdown();
    e_exehist_shutdown();
    e_menu_shutdown();
-   e_gadman_shutdown();
    e_desk_shutdown();
    e_zone_shutdown();
    e_container_shutdown();
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -3 -r1.53 -r1.54
--- e_manager.c 12 May 2006 15:07:39 -0000      1.53
+++ e_manager.c 20 Aug 2006 04:48:27 -0000      1.54
@@ -148,7 +148,7 @@
    h = ecore_event_handler_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, 
_e_manager_cb_screensaver_notify, man);
    if (h) man->handlers = evas_list_append(man->handlers, h);
 
-   man->pointer = e_pointer_window_new(man->root);
+   man->pointer = e_pointer_window_new(man->root, 1);
 
    return man;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_maximize.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_maximize.c        8 Aug 2006 00:00:41 -0000       1.14
+++ e_maximize.c        20 Aug 2006 04:48:27 -0000      1.15
@@ -130,14 +130,6 @@
    Evas_List *l, *rects = NULL;
    E_Maximize_Rect *r;
 
-   for (l = bd->zone->container->gadman->clients; l; l = l->next)
-     {
-       E_Gadman_Client *gmc;
-
-       gmc = l->data;
-       if ((gmc->zone != bd->zone)) continue;
-       OBSTACLE(gmc->x, gmc->y, gmc->x + gmc->w, gmc->y + gmc->h);
-     }
    for (l = e_shelf_list(); l; l = l->next)
      {
        E_Shelf *es;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_place.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_place.c   8 Jun 2006 19:05:41 -0000       1.22
+++ e_place.c   20 Aug 2006 04:48:27 -0000      1.23
@@ -189,66 +189,6 @@
      {
        Evas_List *l;
        
-       for (l = zone->container->gadman->clients; l; l = l->next)
-         {
-            E_Gadman_Client *gmc;
-            int bx, by, bw, bh;
-            
-            gmc = l->data;
-            if ((gmc->zone != zone)) continue;
-            
-            bx = gmc->x;
-            by = gmc->y;
-            bw = gmc->w;
-            bh = gmc->h;
-            if (E_INTERSECTS(bx, by, bw, bh, 0, 0, zw, zh))
-              {
-                 if ((bx > 0) && (bx <= zw) && (!u_x[bx]))
-                   {
-                      a_w++;
-                      if (a_w > a_alloc_w)
-                        {
-                           a_alloc_w += 32;
-                           E_REALLOC(a_x, int, a_alloc_w);
-                        }
-                      a_x[a_w - 1] = bx;
-                      u_x[bx] = 1;
-                   }
-                 if (((bx + bw) > 0) && ((bx + bw) <= zw) && (!u_x[bx + bw]))
-                   {
-                      a_w++;
-                      if (a_w > a_alloc_w)
-                        {
-                           a_alloc_w += 32;
-                           E_REALLOC(a_x, int, a_alloc_w);
-                        }
-                      a_x[a_w - 1] = bx + bw;
-                      u_x[bx + bw] = 1;
-                   }
-                 if ((by > 0) && (by <= zh) && (!u_y[by]))
-                   {
-                      a_h++;
-                      if (a_h > a_alloc_h)
-                        {
-                           a_alloc_h += 32;
-                           E_REALLOC(a_y, int, a_alloc_h);
-                        }
-                      a_y[a_h - 1] = by;
-                      u_y[by] = 1;
-                   }
-                 if (((by + bh) > 0) && ((by + bh) <= zh) && (!u_y[by + bh]))
-                   {
-                      a_h++;
-                      if (a_h > a_alloc_h)
-                        {
-                           a_alloc_h += 32;
-                           E_REALLOC(a_y, int, a_alloc_h);
-                        }
-                      a_y[a_h - 1] = by + bh;
-                      u_y[by + bh] = 1;
-                   }
-              }
-         }
        for (l = e_shelf_list(); l; l = l->next)
          {
             E_Shelf *es;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_pointer.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_pointer.c 2 Mar 2006 12:03:48 -0000       1.25
+++ e_pointer.c 20 Aug 2006 04:48:27 -0000      1.26
@@ -20,6 +20,8 @@
 
 static Evas_List *_e_pointers = NULL;
 
+static void _e_pointer_canvas_add(E_Pointer *p);
+static void _e_pointer_canvas_del(E_Pointer *p);
 static void _e_pointer_cb_move(void *data, Evas *e __UNUSED__, Evas_Object 
*obj __UNUSED__, void *event_info);
 static void _e_pointer_free(E_Pointer *p);
 static void _e_pointer_stack_free(E_Pointer_Stack *elem);
@@ -27,109 +29,29 @@
 
 /* externally accessible functions */
 EAPI E_Pointer *
-e_pointer_window_new(Ecore_X_Window win)
+e_pointer_window_new(Ecore_X_Window win, int filled)
 {
    E_Pointer *p = NULL;
 
+   p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free);
+   if (!p) return NULL;
+   
    if (e_config->use_e_cursor)
      {
-       Evas_Engine_Info_Buffer *einfo;
-       Evas_Object *o;
-       int rmethod;
-
-       rmethod = evas_render_method_lookup("buffer");
-       if (!rmethod) return NULL;
-
-       p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free);
-       if (!p) return NULL;
        p->e_cursor = 1;
        p->win = win;
-
-       p->w = e_config->cursor_size;
-       p->h = e_config->cursor_size;
-
-       /* create evas */
-       p->evas = evas_new();
-       if (!p->evas)
-         {
-            e_object_del(E_OBJECT(p));
-            return NULL;
-         }
-       evas_output_method_set(p->evas, rmethod);
-       evas_output_size_set(p->evas, p->w, p->h);
-       evas_output_viewport_set(p->evas, 0, 0, p->w, p->h);
-
-       p->pixels = malloc(p->w * p->h * sizeof(int));
-       if (!p->pixels)
-         {
-            e_object_del(E_OBJECT(p));
-            return NULL;
-         }
-
-       einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas);
-       if (!einfo)
-         {
-            e_object_del(E_OBJECT(p));
-            return NULL;
-         }
-       einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
-       einfo->info.dest_buffer = p->pixels;
-       einfo->info.dest_buffer_row_bytes = p->w * sizeof(int);
-       einfo->info.use_color_key = 0;
-       einfo->info.alpha_threshold = 0;
-       einfo->info.func.new_update_region = NULL;
-       einfo->info.func.free_update_region = NULL;
-       evas_engine_info_set(p->evas, (Evas_Engine_Info *)einfo);
-
-       /* set the pointer edje */
-       o = edje_object_add(p->evas);
-       if (!o)
-         {
-            e_object_del(E_OBJECT(p));
-            return NULL;
-         }
-       p->pointer_object = o;
-
-       /* Create the hotspot object */
-       o = evas_object_rectangle_add(p->evas);
-       if (!o)
-         {
-            e_object_del(E_OBJECT(p));
-            return NULL;
-         }
-       p->hot_object = o;
-       evas_object_event_callback_add(o,
-                                      EVAS_CALLBACK_MOVE,
-                                      _e_pointer_cb_move, p);
-
        /* Init the cursor object */
-       if (ecore_x_cursor_color_supported_get())
-         p->color = 1;
-       else
-         p->color = 0;
-
-       /* init edje */
-       evas_object_move(p->pointer_object, 0, 0);
-       evas_object_resize(p->pointer_object, p->w, p->h);
-       evas_object_show(p->pointer_object);
-
-       ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
-       e_pointer_type_push(p, p, "default");
-
-       _e_pointers = evas_list_append(_e_pointers, p);
+       if (ecore_x_cursor_color_supported_get()) p->color = 1;
+       else p->color = 0;
      }
    else
      {
-       p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free);
-       if (!p) return NULL;
        p->e_cursor = 0;
        p->win = win;
-
-       ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
-       e_pointer_type_push(p, p, "default");
-
-       _e_pointers = evas_list_append(_e_pointers, p);
      }
+   ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
+   if (filled) e_pointer_type_push(p, p, "default");
+   _e_pointers = evas_list_append(_e_pointers, p); 
    return p;
 }
 
@@ -182,11 +104,15 @@
    E_Pointer_Stack *stack;
 
    p->e_cursor = e_config->use_e_cursor;
+   if (p->e_cursor)
+     {
+       if (!p->evas) _e_pointer_canvas_add(p);
+     }
+   
    if (!_e_pointer_type_set(p, type))
      {
        p->e_cursor = 0;
-       if (!_e_pointer_type_set(p, type))
-         return;
+       if (!_e_pointer_type_set(p, type)) return;
      }
 
    if (p->type) evas_stringshare_del(p->type);
@@ -224,7 +150,11 @@
 
    if (!p->stack)
      {
-       printf("BUG: No pointer on the stack!\n");
+       if (p->e_cursor)
+         {  
+            if (p->evas) _e_pointer_canvas_del(p);
+         }
+       ecore_x_window_cursor_set(p->win, 0);
        return;
      }
 
@@ -267,6 +197,7 @@
 
        p = l->data;
        if (!p->e_cursor) continue;
+       if (!p->evas) continue;
 
        updates = evas_render_updates(p->evas);
        if ((updates) || (p->hot.update))
@@ -284,6 +215,80 @@
 
 /* local subsystem functions */
 static void
+_e_pointer_canvas_add(E_Pointer *p)
+{
+   Evas_Engine_Info_Buffer *einfo;
+   Evas_Object *o;
+   int rmethod;
+   
+   p->w = e_config->cursor_size;
+   p->h = e_config->cursor_size;
+   
+   /* create evas */
+   p->evas = evas_new();
+   if (!p->evas)
+     {
+       e_object_del(E_OBJECT(p));
+       return;
+     }
+   rmethod = evas_render_method_lookup("buffer");
+   evas_output_method_set(p->evas, rmethod);
+   evas_output_size_set(p->evas, p->w, p->h);
+   evas_output_viewport_set(p->evas, 0, 0, p->w, p->h);
+   
+   p->pixels = malloc(p->w * p->h * sizeof(int));
+   if (!p->pixels)
+     {
+       evas_free(p->evas);
+       p->evas = NULL;
+       return;
+     }
+   einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas);
+   if (!einfo)
+     {
+       free(p->pixels);
+       p->pixels = NULL;
+       evas_free(p->evas);
+       p->evas = NULL;
+       return;
+     }
+   einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+   einfo->info.dest_buffer = p->pixels;
+   einfo->info.dest_buffer_row_bytes = p->w * sizeof(int);
+   einfo->info.use_color_key = 0;
+   einfo->info.alpha_threshold = 0;
+   einfo->info.func.new_update_region = NULL;
+   einfo->info.func.free_update_region = NULL;
+   evas_engine_info_set(p->evas, (Evas_Engine_Info *)einfo);
+   
+   /* set the pointer edje */
+   o = edje_object_add(p->evas);
+   p->pointer_object = o;
+   /* Create the hotspot object */
+   o = evas_object_rectangle_add(p->evas);
+   p->hot_object = o;
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE,
+                                 _e_pointer_cb_move, p);
+   /* init edje */
+   evas_object_move(p->pointer_object, 0, 0);
+   evas_object_resize(p->pointer_object, p->w, p->h);
+   evas_object_show(p->pointer_object);
+}
+
+static void
+_e_pointer_canvas_del(E_Pointer *p)
+{
+   if (p->pointer_object) evas_object_del(p->pointer_object);
+   if (p->hot_object) evas_object_del(p->hot_object);
+   if (p->evas) evas_free(p->evas);
+   if (p->pixels) free(p->pixels);
+   p->pointer_object = NULL;
+   p->hot_object = NULL;
+   p->evas = NULL;
+   p->pixels = NULL;
+}
+
+static void
 _e_pointer_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void 
*event_info)
 {
    E_Pointer *p;
@@ -305,12 +310,8 @@
 {
    _e_pointers = evas_list_remove(_e_pointers, p);
 
-   /* free evas */
-   if (p->pointer_object) evas_object_del(p->pointer_object);
-   if (p->hot_object) evas_object_del(p->hot_object);
-   if (p->evas) evas_free(p->evas);
-   if (p->pixels) free(p->pixels);
-
+   _e_pointer_canvas_del(p);
+   
    while (p->stack)
      {
        _e_pointer_stack_free(p->stack->data);
@@ -324,8 +325,7 @@
 static void
 _e_pointer_stack_free(E_Pointer_Stack *elem)
 {
-   if (elem->type) 
-     evas_stringshare_del(elem->type);
+   if (elem->type) evas_stringshare_del(elem->type);
    free(elem);
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_pointer.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- e_pointer.h 2 Mar 2006 12:03:48 -0000       1.13
+++ e_pointer.h 20 Aug 2006 04:48:27 -0000      1.14
@@ -35,7 +35,7 @@
    } hot;
 };
 
-EAPI E_Pointer *e_pointer_window_new(Ecore_X_Window win);
+EAPI E_Pointer *e_pointer_window_new(Ecore_X_Window win, int filled);
 EAPI void       e_pointer_type_push(E_Pointer *p, void *obj, const char *type);
 EAPI void       e_pointer_type_pop(E_Pointer *p, void *obj, const char *type);
 EAPI void       e_pointers_size_set(int size);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_resist.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_resist.c  20 Apr 2006 11:30:24 -0000      1.14
+++ e_resist.c  20 Aug 2006 04:48:27 -0000      1.15
@@ -85,13 +85,6 @@
      }
    e_container_border_list_free(bl);
 
-   for (l = con->gadman->clients; l; l = l->next)
-     {
-        E_Gadman_Client *gmc;
-
-       gmc = l->data;
-       OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist);
-     }
    for (l = e_shelf_list(); l; l = l->next)
      {
        E_Shelf *es;
@@ -133,27 +126,6 @@
        *rx = x;
        *ry = y;
        return 0;
-     }
-
-   for (l = con->gadman->clients; l; l = l->next)
-     {
-        E_Gadman_Client *gmc;
-       int ok;
-
-       gmc = l->data;
-       ok = 1;
-       for (ll = skiplist; ll; ll = ll->next)
-         {
-            if (ll->data == gmc)
-              {
-                 ok = 0;
-                 break;
-              }
-         }
-       if (ok)
-         {
-            OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist);
-         }
      }
 
    for (l = e_shelf_list(); l; l = l->next)
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- e_test.c    15 Aug 2006 00:54:32 -0000      1.67
+++ e_test.c    20 Aug 2006 04:48:27 -0000      1.68
@@ -4,7 +4,6 @@
 #include "e.h"
 
 static void _e_test_internal(E_Container *con);
-static void _cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change 
change);
 
 EAPI void
 e_test(void)
@@ -28,149 +27,6 @@
 }
 
 #if 0
-/* local subsystem functions */
-typedef struct _Dat Dat;
-struct _Dat
-{
-   Evas_Object *table;
-   Evas_List *items;
-};
-
-static void
-_e_test_internal(E_Container *con)
-{
-   E_Gadman_Client *gmc;
-   Dat *dat;
-   Evas_Object *o;
-   int i, j;
-   
-   dat = calloc(1, sizeof(Dat));
-   dat->table = e_table_add(con->bg_evas);
-   e_table_freeze(dat->table);
-   e_table_homogenous_set(dat->table, 1);
-   for (j = 0; j < 5; j++)
-     {
-       for (i = 0; i < 5; i++)
-         {
-            o = evas_object_rectangle_add(con->bg_evas);
-            dat->items = evas_list_append(dat->items, o);
-            evas_object_color_set(o, i * 50, j * 50, 100, 100);
-            e_table_pack(dat->table, o, i, j, 1, 1);
-            e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1);
-            evas_object_show(o);
-         }
-     }
-   e_table_thaw(dat->table);
-   evas_object_show(dat->table);
-   
-   gmc = e_gadman_client_new(con->gadman);
-   e_gadman_client_domain_set(gmc, "TEST", 0);
-   e_gadman_client_policy_set(gmc,
-                             E_GADMAN_POLICY_ANYWHERE |
-                             E_GADMAN_POLICY_HMOVE |
-                             E_GADMAN_POLICY_VMOVE |
-                             E_GADMAN_POLICY_HSIZE |
-                             E_GADMAN_POLICY_VSIZE);
-   e_gadman_client_min_size_set(gmc, 10, 10);
-   e_gadman_client_auto_size_set(gmc, 128, 128);
-   e_gadman_client_align_set(gmc, 0.5, 0.5);
-   e_gadman_client_resize(gmc, 128, 128);
-   e_gadman_client_change_func_set(gmc, _cb_change, dat);
-   e_gadman_client_load(gmc);
-}
-
-static void
-_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
-{
-   Dat *dat;
-   Evas_Coord x, y, w, h;
-   
-   dat = data;
-   switch (change)
-     {
-      case E_GADMAN_CHANGE_MOVE_RESIZE:
-       e_gadman_client_geometry_get(gmc, &x, &y, &w, &h);
-       evas_object_move(dat->table, x, y);
-       evas_object_resize(dat->table, w, h);
-       break;
-      default:
-       break;
-     }
-}
-#elif 0
-typedef struct _Dat Dat;
-struct _Dat
-{
-   Evas_Object *layout;
-   Evas_List *items;
-};
-
-static void
-_e_test_internal(E_Container *con)
-{
-   E_Gadman_Client *gmc;
-   Dat *dat;
-   Evas_Object *o;
-   int i;
-   
-   dat = calloc(1, sizeof(Dat));
-   dat->layout = e_layout_add(con->bg_evas);
-   e_layout_freeze(dat->layout);
-   e_layout_virtual_size_set(dat->layout, 800, 600);
-   for (i = 0; i < 10; i++)
-     {
-       Evas_Coord x, y, w, h;
-       
-       o = evas_object_rectangle_add(con->bg_evas);
-       dat->items = evas_list_append(dat->items, o);
-       evas_object_color_set(o, i * 25, 255 - (i * 25), 100, 100);
-       e_layout_pack(dat->layout, o);
-       w = rand() % 800;
-       h = rand() % 600;
-       x = rand() % (800 - w);
-       y = rand() % (600 - h);
-       e_layout_child_move(o, x, y);
-       e_layout_child_resize(o, w, h);
-       evas_object_show(o);
-     }
-   e_layout_thaw(dat->layout);
-   evas_object_show(dat->layout);
-   
-   gmc = e_gadman_client_new(con->gadman);
-   e_gadman_client_domain_set(gmc, "TEST", 0);
-   e_gadman_client_policy_set(gmc,
-                             E_GADMAN_POLICY_ANYWHERE |
-                             E_GADMAN_POLICY_HMOVE |
-                             E_GADMAN_POLICY_VMOVE |
-                             E_GADMAN_POLICY_HSIZE |
-                             E_GADMAN_POLICY_VSIZE);
-   e_gadman_client_min_size_set(gmc, 10, 10);
-   e_gadman_client_auto_size_set(gmc, 128, 128);
-   e_gadman_client_align_set(gmc, 0.5, 0.5);
-   e_gadman_client_resize(gmc, 128, 128);
-   e_gadman_client_change_func_set(gmc, _cb_change, dat);
-   e_gadman_client_load(gmc);
-}
-
-static void
-_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
-{
-   Dat *dat;
-   Evas_Coord x, y, w, h;
-   
-   dat = data;
-   switch (change)
-     {
-      case E_GADMAN_CHANGE_MOVE_RESIZE:
-       e_gadman_client_geometry_get(gmc, &x, &y, &w, &h);
-       evas_object_move(dat->layout, x, y);
-       evas_object_resize(dat->layout, w, h);
-       break;
-      default:
-       break;
-     }
-}
-#elif 0
 static int
 _e_test_timer(void *data)
 {
@@ -835,10 +691,5 @@
 static void
 _e_test_internal(E_Container *con)
 {    
-}
-
-static void
-_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
-{
 }
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_win.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_win.c     20 Aug 2006 03:39:48 -0000      1.19
+++ e_win.c     20 Aug 2006 04:48:27 -0000      1.20
@@ -75,6 +75,8 @@
    win->min_aspect = 0.0;
    win->max_aspect = 0.0;
    wins = evas_list_append(wins, win);
+   
+   win->pointer = e_pointer_window_new(win->evas_win, 0);
    return win;
 }
 
@@ -104,7 +106,6 @@
    E_OBJECT_CHECK(win);
    E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    if (win->border) e_border_hide(win->border, 1);
-   e_pointer_type_pop(win->container->manager->pointer, win, NULL);
 }
 
 EAPI void
@@ -368,6 +369,7 @@
 static void
 _e_win_free(E_Win *win)
 {
+   e_object_del(E_OBJECT(win->pointer));
    e_canvas_del(win->ecore_evas);
    ecore_evas_free(win->ecore_evas);
    if (win->border)
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_win.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_win.h     20 Aug 2006 03:39:48 -0000      1.8
+++ e_win.h     20 Aug 2006 04:48:27 -0000      1.9
@@ -35,6 +35,8 @@
       unsigned char     centered : 1;
       unsigned char     dialog : 1;
    } state;
+   
+   E_Pointer           *pointer;
 };
 
 EAPI int    e_win_init               (void);



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to