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