Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_pointer.c e_widget.c e_widget.h e_widget_entry.c e_win.c 


Log Message:


fixingup of pointer code to fallback a bit simpler - on demand buffer canvas
creation now and deletion - and entry widget displays "entry" cursor :)

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_pointer.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- e_pointer.c 20 Aug 2006 04:48:27 -0000      1.26
+++ e_pointer.c 20 Aug 2006 06:42:20 -0000      1.27
@@ -15,7 +15,6 @@
 {
    void          *obj;
    const char    *type;
-   unsigned char  e_cursor : 1;
 };
 
 static Evas_List *_e_pointers = NULL;
@@ -66,7 +65,7 @@
        Evas_Engine_Info_Buffer *einfo;
 
        p = l->data;
-       if (p->e_cursor)
+       if (p->evas)
          {
             p->w = p->h = size;
             evas_output_size_set(p->evas, p->w, p->h);
@@ -88,12 +87,15 @@
        else
          {
             const char *type;
-
+            
             ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
             type = p->type;
-            p->type = NULL;
-            _e_pointer_type_set(p, type);
-            p->type = type;
+            if (type)
+              {
+                 p->type = NULL;
+                 _e_pointer_type_set(p, type);
+                 evas_stringshare_del(type);
+              }
          }
      }
 }
@@ -104,29 +106,19 @@
    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 (p->type) evas_stringshare_del(p->type);
-   p->type = evas_stringshare_add(type);
+   _e_pointer_type_set(p, type);
+   
    p->obj = obj;
 
    stack = E_NEW(E_Pointer_Stack, 1);
    if (stack)
      {
-       stack->obj = p->obj;
        stack->type = evas_stringshare_add(p->type);
-       stack->e_cursor = p->e_cursor;
+       stack->obj = p->obj;
        p->stack = evas_list_prepend(p->stack, stack);
      }
+
 }
 
 EAPI void
@@ -150,32 +142,15 @@
 
    if (!p->stack)
      {
-       if (p->e_cursor)
-         {  
-            if (p->evas) _e_pointer_canvas_del(p);
-         }
+       if (p->evas) _e_pointer_canvas_del(p);
        ecore_x_window_cursor_set(p->win, 0);
+       if (p->type) evas_stringshare_del(p->type);
+       p->type = NULL;
        return;
      }
 
    stack = p->stack->data;
-   if ((stack->obj == p->obj) &&
-       (!strcmp(stack->type, p->type)))
-     {
-       /* We already use the top pointer */
-       return;
-     }
-
-   p->e_cursor = stack->e_cursor;
-   if (!_e_pointer_type_set(p, stack->type))
-     {
-       p->e_cursor = !p->e_cursor;
-       if (!_e_pointer_type_set(p, stack->type))
-         {
-            printf("BUG: Can't set cursor!\n");
-            return;
-         }
-     }
+   _e_pointer_type_set(p, stack->type);
 
    if (p->type) evas_stringshare_del(p->type);
    p->type = evas_stringshare_add(stack->type);
@@ -335,31 +310,37 @@
    /* Check if this pointer is already set */
    if ((p->type) && (!strcmp(p->type, type))) return 1;
 
+   if (p->type) evas_stringshare_del(p->type);
+   p->type = evas_stringshare_add(type);
+   
    if (p->e_cursor)
      {
        Evas_Object *o;
        char cursor[1024];
 
+       if (!p->evas) _e_pointer_canvas_add(p);
        o = p->pointer_object;
        if (p->color)
          {
             snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/color", 
type);
             if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
-              return 0;
+              goto fallback;
          }
        else
          {
             snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/mono", 
type);
             if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
-              return 0;
+              goto fallback;
          }
        edje_object_part_swallow(p->pointer_object, "hotspot", p->hot_object);
        p->hot.update = 1;
+       return;
      }
-   else
+   fallback:
      {
        Ecore_X_Cursor cursor = 0;
        
+       if (p->evas) _e_pointer_canvas_del(p);
        if (!strcmp(type, "move"))
          {
             cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_FLEUR);
@@ -419,6 +400,12 @@
        else if (!strcmp(type, "resize_l"))
          {
             cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_LEFT_SIDE);
+            if (!cursor) printf("X Cursor for %s is missing\n", type);
+            ecore_x_window_cursor_set(p->win, cursor);
+         }
+       else if (!strcmp(type, "entry"))
+         {
+            cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_XTERM);
             if (!cursor) printf("X Cursor for %s is missing\n", type);
             ecore_x_window_cursor_set(p->win, cursor);
          }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_widget.c  7 Jan 2006 10:39:45 -0000       1.9
+++ e_widget.c  20 Aug 2006 06:42:20 -0000      1.10
@@ -442,6 +442,17 @@
    return sd->disabled;
 }
 
+EAPI E_Pointer *
+e_widget_pointer_get(Evas_Object *obj)
+{
+   E_Win *win;
+   API_ENTRY return NULL;
+   
+   win = e_win_evas_object_win_get(obj);
+   if (win) return win->pointer;
+   return NULL;
+}
+
 /* local subsystem functions */
 static void
 _e_smart_reconfigure(E_Smart_Data *sd)
@@ -450,7 +461,7 @@
      {
        evas_object_move(sd->resize_obj, sd->x, sd->y);
        evas_object_resize(sd->resize_obj, sd->w, sd->h);
-     }
+    }
 }
 
 static void
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_widget.h  26 Oct 2005 00:19:52 -0000      1.4
+++ e_widget.h  20 Aug 2006 06:42:20 -0000      1.5
@@ -33,6 +33,7 @@
 EAPI void e_widget_change(Evas_Object *obj);
 EAPI void e_widget_disabled_set(Evas_Object *obj, int disabled);
 EAPI int  e_widget_disabled_get(Evas_Object *obj);
-    
+EAPI E_Pointer *e_widget_pointer_get(Evas_Object *obj);
+
 #endif
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_entry.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_widget_entry.c    12 Aug 2006 12:21:32 -0000      1.15
+++ e_widget_entry.c    20 Aug 2006 06:42:20 -0000      1.16
@@ -15,6 +15,8 @@
 static void _e_wid_focus_hook(Evas_Object *obj);
 static void _e_wid_disable_hook(Evas_Object *obj);
 static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+static void _e_wid_in(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _e_wid_out(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _e_wid_changed_cb(void *data, Evas_Object *obj, void *event_info);
 
 
@@ -51,6 +53,8 @@
    e_widget_sub_object_add(obj, o);
    e_widget_resize_object_set(obj, o);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_e_wid_focus_steal, obj);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, _e_wid_in, obj);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_OUT, _e_wid_out, obj);
    
    if ((text_location) && (*text_location))
      e_entry_text_set(o, *text_location);
@@ -175,6 +179,24 @@
 _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
    e_widget_focus_steal(data);
+}
+
+static void
+_e_wid_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Pointer *p;
+   
+   p = e_widget_pointer_get(data);
+   if (p) e_pointer_type_push(p, data, "entry");
+}
+
+static void
+_e_wid_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Pointer *p;
+   
+   p = e_widget_pointer_get(data);
+   if (p) e_pointer_type_pop(p, data, "entry");
 }
 
 static void
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_win.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- e_win.c     20 Aug 2006 04:48:27 -0000      1.20
+++ e_win.c     20 Aug 2006 06:42:20 -0000      1.21
@@ -58,7 +58,7 @@
    ecore_evas_title_set(win->ecore_evas, "E");
    obj = evas_object_rectangle_add(win->evas);
    evas_object_name_set(obj, "E_Win");
-   evas_object_data_set(obj, "E_Win", obj);
+   evas_object_data_set(obj, "E_Win", win);
    win->x = 0;
    win->y = 0;
    win->w = 1;



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