From: Enlightenment S. <no-...@en...> - 2009-10-08 03:45:04
|
Log: if a swallowed object shanges size hints.. re-fetch and calc! Author: raster Date: 2009-10-07 20:44:53 -0700 (Wed, 07 Oct 2009) New Revision: 42949 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-10-08 03:16:48 UTC (rev 42948) +++ trunk/edje/src/lib/edje_util.c 2009-10-08 03:44:53 UTC (rev 42949) @@ -3772,7 +3772,7 @@ { if (ed->block > 0) ed->block_break = 1; } - + void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { @@ -3785,37 +3785,13 @@ event_info = NULL; } -void -_edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow) +static void +_edje_real_part_swallow_hints_update(Edje_Real_Part *rp) { char *type; - if (rp->swallowed_object) - { - evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb); - evas_object_clip_unset(rp->swallowed_object); - evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); - if (rp->part->mouse_events) - _edje_callbacks_del(rp->swallowed_object); - rp->swallowed_object = NULL; - } -#ifdef EDJE_CALC_CACHE - rp->invalidate = 1; -#endif - if (!obj_swallow) return; - rp->swallowed_object = obj_swallow; - evas_object_smart_member_add(rp->swallowed_object, rp->edje->obj); - if (rp->clip_to) - evas_object_clip_set(rp->swallowed_object, rp->clip_to->object); - else evas_object_clip_set(rp->swallowed_object, rp->edje->clipper); - evas_object_stack_above(rp->swallowed_object, rp->object); - evas_object_event_callback_add(rp->swallowed_object, EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb, - rp->edje->obj); - type = (char *)evas_object_type_get(obj_swallow); + type = (char *)evas_object_type_get(rp->swallowed_object); + rp->swallow_params.min.w = 0; rp->swallow_params.min.h = 0; rp->swallow_params.max.w = -1; @@ -3824,10 +3800,10 @@ { Evas_Coord w, h; - edje_object_size_min_get(obj_swallow, &w, &h); + edje_object_size_min_get(rp->swallowed_object, &w, &h); rp->swallow_params.min.w = w; rp->swallow_params.min.h = h; - edje_object_size_max_get(obj_swallow, &w, &h); + edje_object_size_max_get(rp->swallowed_object, &w, &h); rp->swallow_params.max.w = w; rp->swallow_params.max.h = h; } @@ -3836,7 +3812,7 @@ { Evas_Coord w, h; - evas_object_geometry_get(obj_swallow, NULL, NULL, &w, &h); + evas_object_geometry_get(rp->swallowed_object, NULL, NULL, &w, &h); rp->swallow_params.min.w = w; rp->swallow_params.min.h = h; rp->swallow_params.max.w = w; @@ -3846,9 +3822,9 @@ Evas_Coord w1, h1, w2, h2, aw, ah; Evas_Aspect_Control am; - evas_object_size_hint_min_get(obj_swallow, &w1, &h1); - evas_object_size_hint_max_get(obj_swallow, &w2, &h2); - evas_object_size_hint_aspect_get(obj_swallow, &am, &aw, &ah); + evas_object_size_hint_min_get(rp->swallowed_object, &w1, &h1); + evas_object_size_hint_max_get(rp->swallowed_object, &w2, &h2); + evas_object_size_hint_aspect_get(rp->swallowed_object, &am, &aw, &ah); rp->swallow_params.min.w = w1; rp->swallow_params.min.h = h1; if (w2 > 0) rp->swallow_params.max.w = w2; @@ -3877,7 +3853,61 @@ rp->swallow_params.aspect.h = ah; evas_object_data_set(rp->swallowed_object, "\377 edje.swallowing_part", rp); } +} +void +_edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Edje_Real_Part *rp; + + rp = data; + _edje_real_part_swallow_hints_update(rp); + rp->edje->dirty = 1; + _edje_recalc(rp->edje); + return; + e = NULL; + event_info = NULL; +} + +void +_edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow) +{ + if (rp->swallowed_object) + { + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb); + evas_object_event_callback_del(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object); + rp->swallowed_object = NULL; + } +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + if (!obj_swallow) return; + rp->swallowed_object = obj_swallow; + evas_object_smart_member_add(rp->swallowed_object, rp->edje->obj); + if (rp->clip_to) + evas_object_clip_set(rp->swallowed_object, rp->clip_to->object); + else evas_object_clip_set(rp->swallowed_object, rp->edje->clipper); + evas_object_stack_above(rp->swallowed_object, rp->object); + evas_object_event_callback_add(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_add(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp); + + _edje_real_part_swallow_hints_update(rp); + if (rp->part->mouse_events) { _edje_callbacks_add(obj_swallow, rp->edje, rp); |
From: Enlightenment S. <no-...@en...> - 2009-10-08 03:50:09
|
Log: and delete size change hints cb if unswallowed Author: raster Date: 2009-10-07 20:49:51 -0700 (Wed, 07 Oct 2009) New Revision: 42951 Modified: trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2009-10-08 03:47:32 UTC (rev 42950) +++ trunk/edje/src/lib/edje_private.h 2009-10-08 03:49:51 UTC (rev 42951) @@ -1144,6 +1144,7 @@ int _edje_block_break(Edje *ed); void _edje_block_violate(Edje *ed); void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +void _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); void _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow); void _edje_box_init(void); void _edje_box_shutdown(void); Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-10-08 03:47:32 UTC (rev 42950) +++ trunk/edje/src/lib/edje_util.c 2009-10-08 03:49:51 UTC (rev 42951) @@ -2140,6 +2140,9 @@ evas_object_event_callback_del(rp->swallowed_object, EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb); + evas_object_event_callback_del(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb); evas_object_clip_unset(rp->swallowed_object); evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); |
From: Enlightenment S. <no-...@en...> - 2009-10-26 07:29:07
|
Log: change to del fulls just to be consistent Author: raster Date: 2009-10-26 00:28:51 -0700 (Mon, 26 Oct 2009) New Revision: 43291 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-10-26 05:54:22 UTC (rev 43290) +++ trunk/edje/src/lib/edje_util.c 2009-10-26 07:28:51 UTC (rev 43291) @@ -2137,12 +2137,14 @@ if (rp && rp->swallowed_object == obj_swallow) { evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _edje_object_part_swallow_changed_hints_cb); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp->edje->obj); evas_object_clip_unset(rp->swallowed_object); evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); @@ -3878,12 +3880,14 @@ if (rp->swallowed_object) { evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _edje_object_part_swallow_changed_hints_cb); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp->edje->obj); evas_object_clip_unset(rp->swallowed_object); evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); if (rp->part->mouse_events) |
From: Enlightenment S. <no-...@en...> - 2009-10-26 08:26:23
|
Log: provide fast-path for re-swallow Author: raster Date: 2009-10-26 01:26:10 -0700 (Mon, 26 Oct 2009) New Revision: 43292 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-10-26 07:28:51 UTC (rev 43291) +++ trunk/edje/src/lib/edje_util.c 2009-10-26 08:26:10 UTC (rev 43292) @@ -3879,20 +3879,33 @@ { if (rp->swallowed_object) { - evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb, - rp->edje->obj); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _edje_object_part_swallow_changed_hints_cb, - rp->edje->obj); - evas_object_clip_unset(rp->swallowed_object); - evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); - if (rp->part->mouse_events) - _edje_callbacks_del(rp->swallowed_object); - rp->swallowed_object = NULL; + if (rp->swallowed_object != obj_swallow) + { + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp->edje->obj); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object); + rp->swallowed_object = NULL; + } + else + { +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_real_part_swallow_hints_update(rp); + rp->edje->dirty = 1; + _edje_recalc(rp->edje); + return; + } } #ifdef EDJE_CALC_CACHE rp->invalidate = 1; |
From: Enlightenment S. <no-...@en...> - 2009-11-09 23:47:55
|
Log: fix segv on obj del - didnt remove callbacks! Author: raster Date: 2009-11-09 15:47:42 -0800 (Mon, 09 Nov 2009) New Revision: 43596 Modified: trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2009-11-09 23:19:58 UTC (rev 43595) +++ trunk/edje/src/lib/edje_load.c 2009-11-09 23:47:42 UTC (rev 43596) @@ -840,15 +840,7 @@ } if (rp->swallowed_object) { - evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb); - evas_object_clip_unset(rp->swallowed_object); - evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); - if (rp->part->mouse_events) - _edje_callbacks_del(rp->swallowed_object); - + _edje_real_part_swallow_clear(rp); /* Objects swallowed by the app do not get deleted, but those internally swallowed (GROUP type) do. */ switch (rp->part->type) @@ -862,7 +854,6 @@ default: break; } - rp->swallowed_object = NULL; } if (rp->items) Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2009-11-09 23:19:58 UTC (rev 43595) +++ trunk/edje/src/lib/edje_private.h 2009-11-09 23:47:42 UTC (rev 43596) @@ -1148,6 +1148,7 @@ void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); void _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); void _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow); +void _edje_real_part_swallow_clear(Edje_Real_Part *rp); void _edje_box_init(void); void _edje_box_shutdown(void); Eina_Bool _edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)); Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-11-09 23:19:58 UTC (rev 43595) +++ trunk/edje/src/lib/edje_util.c 2009-11-09 23:47:42 UTC (rev 43596) @@ -3887,19 +3887,7 @@ { if (rp->swallowed_object != obj_swallow) { - evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb, - rp->edje->obj); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _edje_object_part_swallow_changed_hints_cb, - rp); - evas_object_clip_unset(rp->swallowed_object); - evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); - if (rp->part->mouse_events) - _edje_callbacks_del(rp->swallowed_object); + _edje_real_part_swallow_clear(rp); rp->swallowed_object = NULL; } else @@ -3949,3 +3937,21 @@ rp->edje->dirty = 1; _edje_recalc(rp->edje); } + +void +_edje_real_part_swallow_clear(Edje_Real_Part *rp) +{ + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object); +} |
From: Enlightenment S. <no-...@en...> - 2009-11-22 01:49:56
|
Log: patch from tasn: rtl fit. Author: raster Date: 2009-11-21 17:49:44 -0800 (Sat, 21 Nov 2009) New Revision: 43886 Modified: trunk/edje/src/lib/edje_text.c Modified: trunk/edje/src/lib/edje_text.c =================================================================== --- trunk/edje/src/lib/edje_text.c 2009-11-22 00:58:27 UTC (rev 43885) +++ trunk/edje/src/lib/edje_text.c 2009-11-22 01:49:44 UTC (rev 43886) @@ -135,13 +135,13 @@ if (tw > sw) { if (params->type.text.elipsis != 0.0) - c1 = evas_object_text_char_coords_get(ep->object, - -p + l, th / 2, - NULL, NULL, NULL, NULL); + /* should be the last in text! not the rightmost */ + c1 = evas_object_text_last_up_to_pos(ep->object, + -p + l, th / 2); if (params->type.text.elipsis != 1.0) - c2 = evas_object_text_char_coords_get(ep->object, - -p + sw - r, th / 2, - NULL, NULL, NULL, NULL); + /* should be the last in text! not the rightmost */ + c2 = evas_object_text_last_up_to_pos(ep->object, + -p + sw - r, th / 2); if ((c1 < 0) && (c2 < 0)) { c1 = 0; |
From: Enlightenment S. <no-...@en...> - 2009-12-01 11:03:00
|
Log: add lots of cursor con trol api's Author: raster Date: 2009-12-01 03:02:46 -0800 (Tue, 01 Dec 2009) New Revision: 44087 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_entry.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2009-12-01 10:07:24 UTC (rev 44086) +++ trunk/edje/src/lib/Edje.h 2009-12-01 11:02:46 UTC (rev 44087) @@ -138,6 +138,15 @@ EDJE_TWEEN_MODE_LAST = 5 } Edje_Tween_Mode; +enum _Edje_Cursor +{ + EDJE_CURSOR_MAIN, + EDJE_CURSOR_SELECTION_BEGIN, + EDJE_CURSOR_SELECTION_END + // more later +}; +typedef enum _Edje_Cursor Edje_Cursor; + typedef struct _Edje_Message_String Edje_Message_String; typedef struct _Edje_Message_Int Edje_Message_Int; typedef struct _Edje_Message_Float Edje_Message_Float; @@ -413,17 +422,29 @@ EAPI void edje_object_part_text_unescaped_set(Evas_Object *obj, const char *part, const char *text_to_escape); EAPI char *edje_object_part_text_unescaped_get(const Evas_Object *obj, const char *part); - EAPI const char *edje_object_part_text_selection_get(const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_none(const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_all(const Evas_Object *obj, const char *part); + EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); + EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part); + EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor); + EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow); + EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part); + + EAPI Eina_Bool edje_object_part_text_cursor_next(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_prev(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_up(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_down(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_copy(const Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); + EAPI void edje_object_part_text_cursor_line_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_line_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI const char *edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); - EAPI const Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part); - EAPI const Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor); - EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); - EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow); - EAPI void edje_object_part_text_select_abort(const Evas_Object *obj, const char *part); - EAPI void edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow); EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow); EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part); Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2009-12-01 10:07:24 UTC (rev 44086) +++ trunk/edje/src/lib/edje_entry.c 2009-12-01 11:02:46 UTC (rev 44087) @@ -179,6 +179,7 @@ _curs_update_from_curs(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entry *en) { Evas_Coord cx, cy, cw, ch; + if (c != en->cursor) return; evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); en->cx = cx + (cw / 2); en->cy = cy + (ch / 2); @@ -1632,8 +1633,7 @@ #endif } done: - en->cursor = evas_object_textblock_cursor_get(rp->object); - + en->cursor = (Evas_Textblock_Cursor *)evas_object_textblock_cursor_get(rp->object); } void @@ -1882,6 +1882,208 @@ } } +static Evas_Textblock_Cursor * +_cursor_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + switch (cur) + { + case EDJE_CURSOR_MAIN: + return en->cursor; + break; + case EDJE_CURSOR_SELECTION_BEGIN: + return en->sel_start; + break; + case EDJE_CURSOR_SELECTION_END: + return en->sel_end; + break; + default: + break; + } + return NULL; +} + +Eina_Bool +_edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return 0; + if (!evas_textblock_cursor_char_next(c)) + { + evas_textblock_cursor_eol_set(c, 0); + if (evas_textblock_cursor_node_next(c)) goto ok; + else return 0; + } + ok: + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); + return 1; +} + +Eina_Bool +_edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return 0; + if (!evas_textblock_cursor_char_prev(c)) + { + if (evas_textblock_cursor_node_prev(c)) goto ok; + else return 0; + } + ok: + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); + return 1; +} + +Eina_Bool +_edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; + int ln; + if (!c) return 0; + ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); + ln--; + if (ln < 0) return 0; + if (!evas_object_textblock_line_number_geometry_get(rp->object, ln, + &lx, &ly, &lw, &lh)) + return 0; + evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); + if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) + { + if (cx < (lx +(lw / 2))) + evas_textblock_cursor_line_first(c); + else + evas_textblock_cursor_line_last(c); + } + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); + return 1; +} + +Eina_Bool +_edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; + int ln, ll; + if (!c) return 0; + ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); + ln++; + if (!evas_object_textblock_line_number_geometry_get(rp->object, ln, + &lx, &ly, &lw, &lh)) + return 0; + evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); + if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) + { + if (cx < (lx +(lw / 2))) + evas_textblock_cursor_line_first(c); + else + evas_textblock_cursor_line_last(c); + } + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); + return 1; +} + +void +_edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + evas_textblock_cursor_node_first(c); + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + evas_textblock_cursor_node_last(c); + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + Evas_Textblock_Cursor *d = _cursor_get(rp, dst); + if (!d) return; + evas_textblock_cursor_copy(c, d); + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + evas_textblock_cursor_line_first(c); + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + evas_textblock_cursor_line_last(c); + _curs_update_from_curs(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_real_part_configure(rp); +} + +Eina_Bool +_edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return 0; + return evas_textblock_cursor_node_format_get(c); +} + +Eina_Bool +_edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return 0; + return evas_textblock_cursor_node_format_is_visible_get(c); +} + +const char * +_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + const char *s; + static buf[16]; + int pos, pos2, ch; + if (!c) return NULL; + s = evas_textblock_cursor_node_format_get(c); + if (s) return s; + s = evas_textblock_cursor_node_text_get(c); + if (!s) return NULL; + pos = evas_textblock_cursor_pos_get(c); + pos2 = evas_string_char_next_get(s, pos, &ch); + strncpy(buf, s + pos, pos2 - pos); + buf[pos2 - pos] = 0; + return buf; +} + #ifdef HAVE_ECORE_IMF static int _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, char **text, int *cursor_pos) Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2009-12-01 10:07:24 UTC (rev 44086) +++ trunk/edje/src/lib/edje_private.h 2009-12-01 11:02:46 UTC (rev 44087) @@ -584,7 +584,19 @@ int x, y; } padding; } table; - + +#if 0 + // // // // // + struct { + struct { + double ax, ay, az; + } rot; + // FIXME: center point is another part id + // FIXME: perspective should other part or global value/obj + } map; + // // // // // +#endif + Edje_Color color, color2, color3; /* color for rect or text, shadow etc. */ Eina_List *external_params; /* parameters for external objects */ @@ -1360,6 +1372,18 @@ void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow); void _edje_entry_select_abort(Edje_Real_Part *rp); +Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur); +const char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur); + void _edje_external_init(); void _edje_external_shutdown(); Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params); Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2009-12-01 10:07:24 UTC (rev 44086) +++ trunk/edje/src/lib/edje_util.c 2009-12-01 11:02:46 UTC (rev 44087) @@ -1762,6 +1762,277 @@ } /** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_next(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_next(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_prev(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_prev(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_up(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_up(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_down(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_down(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_cursor_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_begin(rp, cur); + } +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_cursor_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_end(rp, cur); + } +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_cursor_copy(const Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_copy(rp, src, dst); + } +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_cursor_line_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_line_begin(rp, cur); + } +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_cursor_line_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_line_end(rp, cur); + } +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_is_format_get(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI Eina_Bool +edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_is_visible_format_get(rp, cur); + } + return 0; +} + +/** + * @brief XX + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI const char * +edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_content_get(rp, cur); + } + return NULL; +} + +/** * @brief Swallows an object into the edje. * * @param obj A valid Evas_Object handle |
From: Enlightenment S. <no-...@en...> - 2009-12-09 05:30:59
|
Log: much better nan! Author: raster Date: 2009-12-08 21:30:43 -0800 (Tue, 08 Dec 2009) New Revision: 44305 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_main.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2009-12-09 05:22:38 UTC (rev 44304) +++ trunk/edje/src/lib/Edje.h 2009-12-09 05:30:43 UTC (rev 44305) @@ -260,14 +260,8 @@ typedef struct _Edje_External_Param Edje_External_Param; #ifndef NAN -# include <endian.h> -# if __BYTE_ORDER == __BIG_ENDIAN -# define __nan_bytes { 0x7f, 0xc0, 0, 0 } -# elif __BYTE_ORDER == __LITLE_ENDIAN -# define __nan_bytes { 0, 0, 0xc0, 0x7f } -# endif -static union { unsigned char __c[4]; float __d; } __nan_union = { __nan_bytes }; -# define NAN (__nan_union.d) +extern float *_edje_const_nan; +#define NAN (*_edje_const_nan) #endif #define EDJE_EXTERNAL_INT_UNSET INT32_MAX Modified: trunk/edje/src/lib/edje_main.c =================================================================== --- trunk/edje/src/lib/edje_main.c 2009-12-09 05:22:38 UTC (rev 44304) +++ trunk/edje/src/lib/edje_main.c 2009-12-09 05:30:43 UTC (rev 44305) @@ -6,6 +6,9 @@ #include "edje_private.h" +static const unsigned int _edje_conte_nan_int = 0x7fc00000; +float *_edje_const_nan = (float *)(&(_edje_conte_nan_int)); + static int _edje_init_count = 0; static int _edje_log_dom_global = -1; Eina_Mempool *_edje_real_part_mp = NULL; |
From: Enlightenment S. <no-...@en...> - 2009-12-09 06:27:13
|
Log: make nan const... cosnt! Author: raster Date: 2009-12-08 22:26:59 -0800 (Tue, 08 Dec 2009) New Revision: 44307 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_main.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2009-12-09 05:46:02 UTC (rev 44306) +++ trunk/edje/src/lib/Edje.h 2009-12-09 06:26:59 UTC (rev 44307) @@ -260,7 +260,7 @@ typedef struct _Edje_External_Param Edje_External_Param; #ifndef NAN -extern float *_edje_const_nan; +extern const float *_edje_const_nan; #define NAN (*_edje_const_nan) #endif Modified: trunk/edje/src/lib/edje_main.c =================================================================== --- trunk/edje/src/lib/edje_main.c 2009-12-09 05:46:02 UTC (rev 44306) +++ trunk/edje/src/lib/edje_main.c 2009-12-09 06:26:59 UTC (rev 44307) @@ -7,7 +7,7 @@ #include "edje_private.h" static const unsigned int _edje_const_nan_int = 0x7fc00000; -float *_edje_const_nan = (float *)(&(_edje_const_nan_int)); +const float *_edje_const_nan = (float *)(&(_edje_const_nan_int)); static int _edje_init_count = 0; static int _edje_log_dom_global = -1; |
From: Enlightenment S. <no-...@en...> - 2009-12-09 07:54:57
|
Log: fmting Author: raster Date: 2009-12-08 23:54:43 -0800 (Tue, 08 Dec 2009) New Revision: 44313 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_main.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2009-12-09 07:25:41 UTC (rev 44312) +++ trunk/edje/src/lib/Edje.h 2009-12-09 07:54:43 UTC (rev 44313) @@ -251,50 +251,45 @@ struct _Edje_External_Param { - const char *name; - Edje_External_Param_Type type; - // XXX these could be in a union, but eet doesn't support them (or does it?) - int i; - double d; - const char *s; + const char *name; + Edje_External_Param_Type type; + // XXX these could be in a union, but eet doesn't support them (or does it?) + int i; + double d; + const char *s; }; typedef struct _Edje_External_Param Edje_External_Param; -#ifndef NAN -extern const float *_edje_const_nan; -#define NAN (*_edje_const_nan) -#endif +#define EDJE_EXTERNAL_INT_UNSET 0xffffffff +#define EDJE_EXTERNAL_DOUBLE_UNSET 0x1.0p255f -#define EDJE_EXTERNAL_INT_UNSET INT32_MAX -#define EDJE_EXTERNAL_DOUBLE_UNSET NAN - struct _Edje_External_Param_Info { const char *name; Edje_External_Param_Type type; union - { - struct - { - int def, min, max, step; - } i; - struct - { - double def, min, max, step; - } d; - struct - { - const char *def; - const char *accept_fmt; - const char *deny_fmt; - } s; - struct - { - int def; - const char *false_str; - const char *true_str; - } b; - } info; + { + struct + { + int def, min, max, step; + } i; + struct + { + double def, min, max, step; + } d; + struct + { + const char *def; + const char *accept_fmt; + const char *deny_fmt; + } s; + struct + { + int def; + const char *false_str; + const char *true_str; + } b; + } info; }; typedef struct _Edje_External_Param_Info Edje_External_Param_Info; Modified: trunk/edje/src/lib/edje_main.c =================================================================== --- trunk/edje/src/lib/edje_main.c 2009-12-09 07:25:41 UTC (rev 44312) +++ trunk/edje/src/lib/edje_main.c 2009-12-09 07:54:43 UTC (rev 44313) @@ -6,9 +6,6 @@ #include "edje_private.h" -static const unsigned int _edje_const_nan_int = 0x7fc00000; -const float *_edje_const_nan = (float *)(&(_edje_const_nan_int)); - static int _edje_init_count = 0; static int _edje_log_dom_global = -1; Eina_Mempool *_edje_real_part_mp = NULL; |
From: Enlightenment S. <no-...@en...> - 2010-01-12 02:09:50
|
Log: patch from se...@sa... for small issues in evas/edje Author: raster Date: 2010-01-11 17:50:00 -0800 (Mon, 11 Jan 2010) New Revision: 45056 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-01-12 01:45:10 UTC (rev 45055) +++ trunk/edje/src/lib/edje_entry.c 2010-01-12 01:50:00 UTC (rev 45056) @@ -901,6 +901,7 @@ c1 = evas_object_textblock_cursor_new(o); if (!evas_textblock_cursor_char_prev(c)) { + evas_textblock_cursor_node_prev(c); if (!evas_textblock_cursor_node_prev(c)) nodel = 1; else @@ -2195,8 +2196,8 @@ en->have_composition = EINA_TRUE; - evas_textblock_cursor_text_prepend(en->cursor, preedit_string); - + evas_object_textblock_text_markup_prepend (en->cursor, preedit_string); + _sel_extend(en->cursor, rp->object, en); _curs_update_from_curs(en->cursor, rp->object, en); |
From: Enlightenment S. <no-...@en...> - 2010-01-22 04:39:57
|
Log: fix from jihoon! Author: raster Date: 2010-01-21 20:39:50 -0800 (Thu, 21 Jan 2010) New Revision: 45425 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-01-22 02:09:09 UTC (rev 45424) +++ trunk/edje/src/lib/edje_entry.c 2010-01-22 04:39:50 UTC (rev 45425) @@ -901,7 +901,6 @@ c1 = evas_object_textblock_cursor_new(o); if (!evas_textblock_cursor_char_prev(c)) { - evas_textblock_cursor_node_prev(c); if (!evas_textblock_cursor_node_prev(c)) nodel = 1; else |
From: Enlightenment S. <no-...@en...> - 2010-02-10 15:12:41
|
Log: From: ?\234?\185?\128?\236?\167?\128?\237?\155?\136 <jih...@sa...> This is edje_entry.c patch for supporting to switch the focus of ecore_imf when the other window is clicked. Author: raster Date: 2010-02-10 07:12:35 -0800 (Wed, 10 Feb 2010) New Revision: 46050 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-02-10 15:11:16 UTC (rev 46049) +++ trunk/edje/src/lib/edje_entry.c 2010-02-10 15:12:35 UTC (rev 46050) @@ -1508,6 +1508,26 @@ } } +static void +_evas_focus_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Edje *ed = (Edje *)data; + + if (evas_focus_get(e) == ed->obj) { + _edje_focus_in_cb(data, NULL, NULL, NULL); + } +} + +static void +_evas_focus_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Edje *ed = (Edje *)data; + + if (evas_focus_get(e) == ed->obj) { + _edje_focus_out_cb(data, NULL, NULL, NULL); + } +} + /***************************************************************/ void _edje_entry_init(Edje *ed) @@ -1516,6 +1536,8 @@ evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_FOCUS_OUT, _edje_focus_out_cb, ed); evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_KEY_DOWN, _edje_key_down_cb, ed); evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_KEY_UP, _edje_key_up_cb, ed); + evas_event_callback_add(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _evas_focus_in_cb, ed); + evas_event_callback_add(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _evas_focus_out_cb, ed); } void @@ -1525,6 +1547,8 @@ evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_FOCUS_OUT, _edje_focus_out_cb); evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_KEY_DOWN, _edje_key_down_cb); evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_KEY_UP, _edje_key_up_cb); + evas_event_callback_del_full(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _evas_focus_in_cb, ed); + evas_event_callback_del_full(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _evas_focus_out_cb, ed); } void |
From: Enlightenment S. <no-...@en...> - 2010-02-15 06:41:05
|
Log: fix freeze/thaw to use less ... cpu. Author: raster Date: 2010-02-14 22:40:58 -0800 (Sun, 14 Feb 2010) New Revision: 46181 Modified: trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2010-02-15 06:36:04 UTC (rev 46180) +++ trunk/edje/src/lib/edje_calc.c 2010-02-15 06:40:58 UTC (rev 46181) @@ -197,7 +197,15 @@ ed->recalc = 1; if (!ed->calc_only) { - if (_edje_freeze_val > 0) _edje_freeze_calc_count++; + if (_edje_freeze_val > 0) + { + if (!ed->freeze_calc) + { + _edje_freeze_calc_count++; + _edje_freeze_calc_list = eina_list_append(_edje_freeze_calc_list, ed); + ed->freeze_calc = 1; + } + } return; } } Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-02-15 06:36:04 UTC (rev 46180) +++ trunk/edje/src/lib/edje_load.c 2010-02-15 06:40:58 UTC (rev 46181) @@ -828,6 +828,12 @@ void _edje_file_del(Edje *ed) { + if (ed->freeze_calc) + { + _edje_freeze_calc_list = eina_list_remove(_edje_freeze_calc_list, ed); + ed->freeze_calc = 0; + _edje_freeze_calc_count--; + } _edje_message_del(ed); _edje_block_violate(ed); _edje_var_shutdown(ed); Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-02-15 06:36:04 UTC (rev 46180) +++ trunk/edje/src/lib/edje_private.h 2010-02-15 06:40:58 UTC (rev 46181) @@ -778,22 +778,23 @@ int preload_count; - unsigned short dirty : 1; - unsigned short recalc : 1; - unsigned short walking_callbacks : 1; - unsigned short delete_callbacks : 1; - unsigned short just_added_callbacks : 1; - unsigned short have_objects : 1; - unsigned short paused : 1; - unsigned short no_anim : 1; - unsigned short calc_only : 1; - unsigned short walking_actions : 1; - unsigned short block_break : 1; - unsigned short delete_me : 1; - unsigned short postponed : 1; + unsigned int dirty : 1; + unsigned int recalc : 1; + unsigned int walking_callbacks : 1; + unsigned int delete_callbacks : 1; + unsigned int just_added_callbacks : 1; + unsigned int have_objects : 1; + unsigned int paused : 1; + unsigned int no_anim : 1; + unsigned int calc_only : 1; + unsigned int walking_actions : 1; + unsigned int block_break : 1; + unsigned int delete_me : 1; + unsigned int postponed : 1; + unsigned int freeze_calc : 1; #ifdef EDJE_CALC_CACHE - unsigned short text_part_change : 1; - unsigned short all_part_change : 1; + unsigned int text_part_change : 1; + unsigned int all_part_change : 1; #endif lua_State *L; }; @@ -1169,6 +1170,7 @@ extern FLOAT_T _edje_scale; extern int _edje_freeze_val; extern int _edje_freeze_calc_count; +extern Eina_List *_edje_freeze_calc_list; extern Eina_Mempool *_edje_real_part_mp; extern Eina_Mempool *_edje_real_part_state_mp; Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2010-02-15 06:36:04 UTC (rev 46180) +++ trunk/edje/src/lib/edje_util.c 2010-02-15 06:40:58 UTC (rev 46181) @@ -30,6 +30,7 @@ FLOAT_T _edje_scale = ZERO; int _edje_freeze_val = 0; int _edje_freeze_calc_count = 0; +Eina_List *_edje_freeze_calc_list = NULL; typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; struct _Edje_List_Foreach_Data @@ -46,7 +47,7 @@ /************************** API Routines **************************/ -//#define FASTFREEZE 1 +#define FASTFREEZE 1 /** * @brief Freeze Edje objects. @@ -114,15 +115,13 @@ INF("fr -- ->%i", _edje_freeze_val); if ((_edje_freeze_val <= 0) && (_edje_freeze_calc_count > 0)) { - Eina_List *l; + Edje *ed; _edje_freeze_calc_count = 0; - EINA_LIST_FOREACH(_edje_edjes, l, data) + EINA_LIST_FREE(_edje_freeze_calc_list, ed) { - Edje *ed; - - ed = _edje_fetch(data); - if (ed) _edje_thaw_edje(ed); + _edje_thaw_edje(ed); + ed->freeze_calc = 0; } } #else |
From: Enlightenment S. <no-...@en...> - 2010-02-23 07:57:09
|
Log: ahhh and if parts are images.. use the right uv coords. Author: raster Date: 2010-02-22 23:56:59 -0800 (Mon, 22 Feb 2010) New Revision: 46384 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2010-02-23 05:45:24 UTC (rev 46383) +++ trunk/edje/src/lib/edje_calc.c 2010-02-23 07:56:59 UTC (rev 46384) @@ -2036,6 +2036,16 @@ map = evas_map_new(4); evas_map_util_points_populate_from_geometry (map, ed->x + pf->x, ed->y + pf->y, pf->w, pf->h, 0); + if (ep->part->type == EDJE_PART_TYPE_IMAGE) + { + int iw = 1, ih = 1; + + evas_object_image_size_get(mo, &iw, &ih); + evas_map_point_image_uv_set(map, 0, 0.0, 0.0); + evas_map_point_image_uv_set(map, 1, iw , 0.0); + evas_map_point_image_uv_set(map, 2, iw , ih ); + evas_map_point_image_uv_set(map, 3, 0.0, ih ); + } // default center - center of part cx = ed->x + pf->x + (pf->w / 2); |
From: Enlightenment S. <no-...@en...> - 2010-02-23 08:37:38
|
Log: fix moving edje obj aroudn with maps in it. Author: raster Date: 2010-02-23 00:37:30 -0800 (Tue, 23 Feb 2010) New Revision: 46385 Modified: trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_smart.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2010-02-23 07:56:59 UTC (rev 46384) +++ trunk/edje/src/lib/edje_calc.c 2010-02-23 08:37:30 UTC (rev 46385) @@ -221,10 +221,8 @@ ed->postponed = 0; evas_object_smart_need_recalculate_set(ed->obj, 0); - if (!ed->dirty) - { - return; - } + if (!ed->dirty) return; + ed->have_mapped_part = 0; ed->dirty = 0; ed->state++; for (i = 0; i < ed->table_parts_size; i++) @@ -250,6 +248,12 @@ #endif } +void +_edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep) +{ + _edje_part_recalc(ed, ep, FLAG_XY); +} + int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y) { @@ -2032,6 +2036,7 @@ if (ep->param2) desc2 = ep->param2->description; pos = ep->description_pos; + ed->have_mapped_part = 1; // create map and populate with part geometry map = evas_map_new(4); evas_map_util_points_populate_from_geometry Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-02-23 07:56:59 UTC (rev 46384) +++ trunk/edje/src/lib/edje_private.h 2010-02-23 08:37:30 UTC (rev 46385) @@ -832,6 +832,7 @@ unsigned int text_part_change : 1; unsigned int all_part_change : 1; #endif + unsigned int have_mapped_part : 1; lua_State *L; }; @@ -1215,6 +1216,7 @@ void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2); void _edje_recalc(Edje *ed); void _edje_recalc_do(Edje *ed); +void _edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep); int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y); void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y); Modified: trunk/edje/src/lib/edje_smart.c =================================================================== --- trunk/edje/src/lib/edje_smart.c 2010-02-23 07:56:59 UTC (rev 46384) +++ trunk/edje/src/lib/edje_smart.c 2010-02-23 08:37:30 UTC (rev 46385) @@ -122,27 +122,35 @@ return; } if (_edje_lua_script_only(ed)) - { - _edje_lua_script_only_move(ed); - return; - } - - for (i = 0; i < ed->table_parts_size; i++) { - Edje_Real_Part *ep; - Evas_Coord ox, oy; + _edje_lua_script_only_move(ed); + return; + } - ep = ed->table_parts[i]; - evas_object_geometry_get(ep->object, &ox, &oy, NULL, NULL); - evas_object_move(ep->object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); - if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) - _edje_entry_real_part_configure(ep); - if (ep->swallowed_object) - { - evas_object_geometry_get(ep->swallowed_object, &ox, &oy, NULL, NULL); - evas_object_move(ep->swallowed_object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); - } + if (ed->have_mapped_part) + { + ed->dirty = 1; + _edje_recalc_do(ed); } + else + { + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *ep; + Evas_Coord ox, oy; + + ep = ed->table_parts[i]; + evas_object_geometry_get(ep->object, &ox, &oy, NULL, NULL); + evas_object_move(ep->object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); + if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_real_part_configure(ep); + if (ep->swallowed_object) + { + evas_object_geometry_get(ep->swallowed_object, &ox, &oy, NULL, NULL); + evas_object_move(ep->swallowed_object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); + } + } + } // _edje_emit(ed, "move", NULL); } @@ -191,10 +199,10 @@ return; } if (_edje_lua_script_only(ed)) - { - _edje_lua_script_only_show(ed); - return; - } + { + _edje_lua_script_only_show(ed); + return; + } _edje_emit(ed, "show", NULL); } @@ -214,10 +222,10 @@ return; } if (_edje_lua_script_only(ed)) - { - _edje_lua_script_only_hide(ed); - return; - } + { + _edje_lua_script_only_hide(ed); + return; + } _edje_emit(ed, "hide", NULL); } |
From: Enlightenment S. <no-...@en...> - 2010-02-24 05:47:31
|
Log: oooh that was bad! oops. fix! Author: raster Date: 2010-02-23 21:47:23 -0800 (Tue, 23 Feb 2010) New Revision: 46423 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2010-02-24 05:28:57 UTC (rev 46422) +++ trunk/edje/src/lib/edje_calc.c 2010-02-24 05:47:23 UTC (rev 46423) @@ -1512,7 +1512,10 @@ evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y, p3->type.common.fill.w, p3->type.common.fill.h); evas_object_image_smooth_scale_set(ep->object, p3->smooth); - evas_object_image_border_scale_set(ep->object, TO_DOUBLE(sc)); + if (chosen_desc->border.scale) + evas_object_image_border_scale_set(ep->object, TO_DOUBLE(sc)); + else + evas_object_image_border_scale_set(ep->object, 1.0); evas_object_image_border_set(ep->object, p3->type.common.spec.image.l, p3->type.common.spec.image.r, p3->type.common.spec.image.t, p3->type.common.spec.image.b); if (chosen_desc->border.no_fill == 0) |
From: Enlightenment S. <no-...@en...> - 2010-03-10 13:32:57
|
Log: aaaah there it is! fix 1 small bug - sel all in edje entry - more there. will fix. Author: raster Date: 2010-03-10 05:32:49 -0800 (Wed, 10 Mar 2010) New Revision: 47103 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-10 13:24:38 UTC (rev 47102) +++ trunk/edje/src/lib/edje_entry.c 2010-03-10 13:32:49 UTC (rev 47103) @@ -1828,6 +1828,7 @@ _sel_start(en->cursor, rp->object, en); _curs_end(en->cursor, rp->object, en); _sel_extend(en->cursor, rp->object, en); + _edje_entry_real_part_configure(rp); } const Eina_List * |
From: Enlightenment S. <no-...@en...> - 2010-03-11 06:34:28
|
Log: calls for entry users to use. Author: raster Date: 2010-03-10 22:34:20 -0800 (Wed, 10 Mar 2010) New Revision: 47126 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_entry.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2010-03-11 04:20:14 UTC (rev 47125) +++ trunk/edje/src/lib/Edje.h 2010-03-11 06:34:20 UTC (rev 47126) @@ -469,7 +469,9 @@ EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow); EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part); - + EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part); + EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part); + EAPI Eina_Bool edje_object_part_text_cursor_next(const Evas_Object *obj, const char *part, Edje_Cursor cur); EAPI Eina_Bool edje_object_part_text_cursor_prev(const Evas_Object *obj, const char *part, Edje_Cursor cur); EAPI Eina_Bool edje_object_part_text_cursor_up(const Evas_Object *obj, const char *part, Edje_Cursor cur); Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-11 04:20:14 UTC (rev 47125) +++ trunk/edje/src/lib/edje_entry.c 2010-03-11 06:34:20 UTC (rev 47126) @@ -1831,6 +1831,27 @@ _edje_entry_real_part_configure(rp); } +void +_edje_entry_select_begin(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _sel_clear(en->cursor, rp->object, en); + _sel_enable(en->cursor, rp->object, en); + _sel_start(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_select_extend(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _sel_extend(en->cursor, rp->object, en); + _edje_entry_real_part_configure(rp); +} + const Eina_List * _edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor) { @@ -2044,6 +2065,7 @@ if (!c) return; Evas_Textblock_Cursor *d = _cursor_get(rp, dst); if (!d) return; + printf("copy %p to %p\n", c, d); evas_textblock_cursor_copy(c, d); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-03-11 04:20:14 UTC (rev 47125) +++ trunk/edje/src/lib/edje_private.h 2010-03-11 06:34:20 UTC (rev 47126) @@ -1501,6 +1501,8 @@ void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst); void _edje_entry_select_none(Edje_Real_Part *rp); void _edje_entry_select_all(Edje_Real_Part *rp); +void _edje_entry_select_begin(Edje_Real_Part *rp); +void _edje_entry_select_extend(Edje_Real_Part *rp); const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor); const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp); void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2010-03-11 04:20:14 UTC (rev 47125) +++ trunk/edje/src/lib/edje_util.c 2010-03-11 06:34:20 UTC (rev 47126) @@ -1736,6 +1736,46 @@ } /** + * @brief Starts selecting at current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_select_begin(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_begin(rp); +} + +/** + * @brief Extends the current selection to the current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void +edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_extend(rp); +} + +/** * @brief XX * * @param obj A valid Evas_Object handle |
From: Enlightenment S. <no-...@en...> - 2010-03-11 08:08:05
|
Log: disable the extar newline stuff... seems to be ok without. i'm sure i put it in for a reason... hrrrm.. Author: raster Date: 2010-03-11 00:07:55 -0800 (Thu, 11 Mar 2010) New Revision: 47129 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-11 06:53:46 UTC (rev 47128) +++ trunk/edje/src/lib/edje_entry.c 2010-03-11 08:07:55 UTC (rev 47129) @@ -1763,6 +1763,7 @@ // set text as markup _sel_clear(en->cursor, rp->object, en); evas_object_textblock_text_markup_set(rp->object, text); +/* evas_textblock_cursor_node_last(en->cursor); if (!evas_textblock_cursor_node_format_get(en->cursor)) { @@ -1773,6 +1774,7 @@ { evas_textblock_cursor_format_append(en->cursor, "\n"); } + */ _anchors_get(en->cursor, rp->object, en); _edje_emit(rp->edje, "entry,changed", rp->part->name); _edje_entry_set_cursor_start(rp); |
From: Enlightenment S. <no-...@en...> - 2010-03-11 10:16:40
|
Log: also do imf stuff on cursor fiddling api's Author: raster Date: 2010-03-11 02:16:32 -0800 (Thu, 11 Mar 2010) New Revision: 47132 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-11 08:13:20 UTC (rev 47131) +++ trunk/edje/src/lib/edje_entry.c 2010-03-11 10:16:32 UTC (rev 47132) @@ -1444,6 +1444,16 @@ if (evas_textblock_cursor_compare(tc, en->cursor)) _edje_emit(rp->edje, "cursor,changed", rp->part->name); evas_textblock_cursor_free(tc); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } @@ -1504,6 +1514,16 @@ if (evas_textblock_cursor_compare(tc, en->cursor)) _edje_emit(rp->edje, "cursor,changed", rp->part->name); evas_textblock_cursor_free(tc); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } } @@ -1830,6 +1850,16 @@ _sel_start(en->cursor, rp->object, en); _curs_end(en->cursor, rp->object, en); _sel_extend(en->cursor, rp->object, en); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } @@ -1842,6 +1872,16 @@ _sel_enable(en->cursor, rp->object, en); _sel_start(en->cursor, rp->object, en); _sel_extend(en->cursor, rp->object, en); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } @@ -1851,6 +1891,16 @@ Entry *en = rp->entry_data; if (!en) return; _sel_extend(en->cursor, rp->object, en); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } @@ -1924,6 +1974,16 @@ if (en->selecting) { en->selecting = EINA_FALSE; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } } @@ -1953,6 +2013,7 @@ Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return 0; if (!evas_textblock_cursor_char_next(c)) @@ -1964,6 +2025,16 @@ ok: _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); return 1; } @@ -1971,6 +2042,7 @@ Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return 0; if (!evas_textblock_cursor_char_prev(c)) @@ -1981,6 +2053,16 @@ ok: _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); return 1; } @@ -1988,6 +2070,7 @@ Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; int ln; @@ -2008,6 +2091,16 @@ } _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); return 1; } @@ -2015,6 +2108,7 @@ Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; int ln; @@ -2034,6 +2128,16 @@ } _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); return 1; } @@ -2041,58 +2145,112 @@ void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; evas_textblock_cursor_node_first(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; evas_textblock_cursor_node_last(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; Evas_Textblock_Cursor *d = _cursor_get(rp, dst); if (!d) return; - printf("copy %p to %p\n", c, d); evas_textblock_cursor_copy(c, d); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; evas_textblock_cursor_line_first(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur) { + Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; evas_textblock_cursor_line_last(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + } +#endif + _edje_entry_real_part_configure(rp); } |
From: Enlightenment S. <no-...@en...> - 2010-03-11 14:28:55
|
Log: we have printf debugging right now - in the middle of chasing entry issues, so keeep this in. Author: raster Date: 2010-03-11 06:28:44 -0800 (Thu, 11 Mar 2010) New Revision: 47133 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-11 10:16:32 UTC (rev 47132) +++ trunk/edje/src/lib/edje_entry.c 2010-03-11 14:28:44 UTC (rev 47133) @@ -1195,7 +1195,8 @@ if (ev->string) { if (en->have_selection) - _range_del(en->cursor, rp->object, en); + _range_del(en->cursor, rp->object, en); + printf("add '%s'\n", ev->string); evas_textblock_cursor_text_prepend(en->cursor, ev->string); _sel_clear(en->cursor, rp->object, en); _curs_update_from_curs(en->cursor, rp->object, en); @@ -1305,7 +1306,10 @@ if (en->cx <= lx) _curs_lin_start(en->cursor, rp->object, en); else - _curs_lin_end(en->cursor, rp->object, en); + { + printf("linend down\n"); + _curs_lin_end(en->cursor, rp->object, en); + } } line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); } |
From: Enlightenment S. <no-...@en...> - 2010-03-13 13:25:46
|
Log: one more end of line cursor issue fixed. Author: raster Date: 2010-03-13 05:25:40 -0800 (Sat, 13 Mar 2010) New Revision: 47175 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-13 13:25:01 UTC (rev 47174) +++ trunk/edje/src/lib/edje_entry.c 2010-03-13 13:25:40 UTC (rev 47175) @@ -219,8 +219,15 @@ { evas_textblock_cursor_char_prev(c); evas_textblock_cursor_eol_set(c, 1); + _curs_update_from_curs(c, o, en); return; } + if (!evas_textblock_cursor_node_next(c)) + { + evas_textblock_cursor_line_last(c); + _curs_update_from_curs(c, o, en); + return; + } } evas_textblock_cursor_eol_set(c, 0); if (evas_textblock_cursor_node_next(c)) @@ -250,6 +257,7 @@ { evas_textblock_cursor_node_prev(c); evas_textblock_cursor_line_last(c); + _curs_update_from_curs(c, o, en); return; } } @@ -263,6 +271,7 @@ { evas_textblock_cursor_char_prev(c); evas_textblock_cursor_eol_set(c, 1); + _curs_update_from_curs(c, o, en); return; } } @@ -912,14 +921,27 @@ } } else - evas_textblock_cursor_copy(c, c1); + { + evas_textblock_cursor_copy(c, c1); + } c2 = evas_object_textblock_cursor_new(o); evas_textblock_cursor_copy(c, c2); - if (!nodel) evas_textblock_cursor_range_delete(c1, c2); + if (!nodel) + { + evas_textblock_cursor_range_delete(c1, c2); + } evas_textblock_cursor_copy(c, c1); _curs_back(c, o, en); - if (evas_textblock_cursor_compare(c, c1)) - _curs_next(c, o, en); + evas_textblock_cursor_copy(c, c2); + if ((!evas_textblock_cursor_char_next(c2)) && + (!evas_textblock_cursor_node_next(c2))) + { + _curs_end(c, o, en); + } + else if (evas_textblock_cursor_compare(c, c1)) + { + _curs_next(c, o, en); + } evas_textblock_cursor_free(c1); evas_textblock_cursor_free(c2); @@ -1196,7 +1218,6 @@ { if (en->have_selection) _range_del(en->cursor, rp->object, en); - printf("add '%s'\n", ev->string); evas_textblock_cursor_text_prepend(en->cursor, ev->string); _sel_clear(en->cursor, rp->object, en); _curs_update_from_curs(en->cursor, rp->object, en); @@ -1306,10 +1327,7 @@ if (en->cx <= lx) _curs_lin_start(en->cursor, rp->object, en); else - { - printf("linend down\n"); - _curs_lin_end(en->cursor, rp->object, en); - } + _curs_lin_end(en->cursor, rp->object, en); } line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); } |
From: Enlightenment S. <no-...@en...> - 2010-03-14 12:26:17
|
Log: more bug -- Author: raster Date: 2010-03-14 05:24:54 -0700 (Sun, 14 Mar 2010) New Revision: 47202 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-14 12:24:42 UTC (rev 47201) +++ trunk/edje/src/lib/edje_entry.c 2010-03-14 12:24:54 UTC (rev 47202) @@ -1202,6 +1202,9 @@ { if (multiline) { + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); evas_textblock_cursor_format_prepend(en->cursor, "\n"); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); @@ -1218,8 +1221,8 @@ { if (en->have_selection) _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); evas_textblock_cursor_text_prepend(en->cursor, ev->string); - _sel_clear(en->cursor, rp->object, en); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); @@ -1323,11 +1326,20 @@ _curs_end(en->cursor, rp->object, en); else { - evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); - if (en->cx <= lx) - _curs_lin_start(en->cursor, rp->object, en); + int lnum; + + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (lnum < 0) + { + _curs_lin_start(en->cursor, rp->object, en); + } else - _curs_lin_end(en->cursor, rp->object, en); + { + if (en->cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } } line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); } |
From: Enlightenment S. <no-...@en...> - 2010-03-15 03:02:22
|
Log: and emit signals on cursor changes etc. Author: raster Date: 2010-03-14 20:02:14 -0700 (Sun, 14 Mar 2010) New Revision: 47231 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-03-15 02:34:27 UTC (rev 47230) +++ trunk/edje/src/lib/edje_entry.c 2010-03-15 03:02:14 UTC (rev 47231) @@ -1847,6 +1847,7 @@ _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(rp->edje, "entry,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); } void @@ -2069,6 +2070,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); return 1; } @@ -2097,6 +2099,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); return 1; } @@ -2135,6 +2138,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); return 1; } @@ -2172,6 +2176,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); return 1; } @@ -2195,6 +2200,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); } @@ -2217,6 +2223,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); } @@ -2241,6 +2248,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); } @@ -2263,6 +2271,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); } @@ -2285,6 +2294,7 @@ } #endif + _edje_emit(rp->edje, "cursor,changed", rp->part->name); _edje_entry_real_part_configure(rp); } |