From: Enlightenment S. <no-...@en...> - 2010-08-09 16:25:52
|
Log: edje: Updated edje to conform with recent textblock changes. 'Return' now inserts a Paragraph Separator. 'Shift + Return' now inserts a New Line. Author: tasn Date: 2010-08-09 09:25:45 -0700 (Mon, 09 Aug 2010) New Revision: 50931 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-08-09 16:24:17 UTC (rev 50930) +++ trunk/edje/src/lib/edje_entry.c 2010-08-09 16:25:45 UTC (rev 50931) @@ -81,12 +81,12 @@ }; #ifdef HAVE_ECORE_IMF -static void + static void _edje_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Edje_Real_Part *rp; Entry *en; - + rp = data; if (!rp || !rp->entry_data || !rp->edje || !rp->edje->obj) return; @@ -95,12 +95,12 @@ if (evas_object_focus_get(rp->edje->obj)) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_focus_in(en->imf_context); + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_focus_in(en->imf_context); } } -static void + static void _edje_entry_focus_out_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Edje_Real_Part *rp; @@ -118,7 +118,7 @@ } #endif -static void + static void _edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Edje *ed = data; @@ -126,26 +126,26 @@ Edje_Real_Part *rp; Entry *en; #endif - + _edje_emit(ed, "focus,in", ""); #ifdef HAVE_ECORE_IMF rp = ed->focused_part; if (rp == NULL) return; - + en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || - (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) return; - + if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_focus_in(en->imf_context); + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_focus_in(en->imf_context); } #endif } - -static void + + static void _edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Edje *ed = data; @@ -153,34 +153,34 @@ Edje_Real_Part *rp = ed->focused_part; Entry *en; #endif - + _edje_emit(ed, "focus,out", ""); #ifdef HAVE_ECORE_IMF if (!rp) return; en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || - (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) return; 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)); + evas_textblock_cursor_pos_get(en->cursor)); ecore_imf_context_focus_out(en->imf_context); } #endif } // need one for markup and format too - how to do it? extra type param? -static void + static void _text_filter_prepend(Entry *en, const char *text) { char *text2; Edje_Text_Insert_Filter_Callback *cb; Eina_List *l; - + text2 = strdup(text); EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) { @@ -193,8 +193,6 @@ if (text2) { evas_textblock_cursor_text_prepend(en->cursor, text2); -// evas_textblock_cursor_format_prepend(en->cursor, text2); -// evas_object_textblock_text_markup_prepend(en->cursor, text2); free(text2); } } @@ -212,105 +210,14 @@ static void _curs_back(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - if (!evas_textblock_cursor_char_prev(c)) - { - if (evas_textblock_cursor_node_prev(c)) - { - while (evas_textblock_cursor_node_format_get(c)) - { - if (evas_textblock_cursor_node_format_is_visible_get(c)) break; - if (!evas_textblock_cursor_node_prev(c)) break; - } - } - } + evas_textblock_cursor_char_prev(c); _curs_update_from_curs(c, o, en); } static void _curs_next(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - int ln, ln2, ok; - Eina_Bool eol; - - ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); - eol = evas_textblock_cursor_eol_get(c); - if (!evas_textblock_cursor_char_next(c)) - { - if (!eol) - { - ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); - if (ln2 != ln) - { - evas_textblock_cursor_char_prev(c); - evas_textblock_cursor_eol_set(c, 1); - _curs_update_from_curs(c, o, en); - return; - } - ok = evas_textblock_cursor_node_next(c); - if (!ok) - { - evas_textblock_cursor_line_last(c); - _curs_update_from_curs(c, o, en); - return; - } - while (evas_textblock_cursor_node_format_get(c)) - { - if (evas_textblock_cursor_node_format_is_visible_get(c)) - break; - if (!evas_textblock_cursor_node_next(c)) - break; - } - return; - } - evas_textblock_cursor_eol_set(c, 0); - if (evas_textblock_cursor_node_next(c)) - { - while (evas_textblock_cursor_node_format_get(c)) - { - if (evas_textblock_cursor_node_format_is_visible_get(c)) - break; - if (!evas_textblock_cursor_node_next(c)) - break; - } - } - } - else - { - int len, pos; - - len = evas_textblock_cursor_node_text_length_get(c); - pos = evas_textblock_cursor_pos_get(c); - if (pos == len) - { - evas_textblock_cursor_node_next(c); - if (!eol) - { - ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); - if (ln2 != ln) - { - evas_textblock_cursor_node_prev(c); - evas_textblock_cursor_line_last(c); - _curs_update_from_curs(c, o, en); - return; - } - } - } - else - { - if (!eol) - { - ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); - if (ln2 != ln) - { - evas_textblock_cursor_char_prev(c); - evas_textblock_cursor_eol_set(c, 1); - _curs_update_from_curs(c, o, en); - return; - } - } - } - evas_textblock_cursor_eol_set(c, 0); - } + evas_textblock_cursor_char_next(c); _curs_update_from_curs(c, o, en); } @@ -319,9 +226,9 @@ { Evas_Textblock_Cursor *cc; int ln; - + cc = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_node_last(cc); + evas_textblock_cursor_paragraph_last(cc); ln = evas_textblock_cursor_line_geometry_get(cc, NULL, NULL, NULL, NULL); evas_textblock_cursor_free(cc); return ln; @@ -330,34 +237,29 @@ static void _curs_lin_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - evas_textblock_cursor_line_first(c); + evas_textblock_cursor_line_char_first(c); _curs_update_from_curs(c, o, en); } static void _curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - evas_textblock_cursor_line_last(c); -// if (!evas_textblock_cursor_node_format_get(c)) -// _curs_next(c, o, en); + evas_textblock_cursor_line_char_last(c); _curs_update_from_curs(c, o, en); } static void _curs_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - evas_textblock_cursor_line_set(c, 0); - evas_textblock_cursor_line_first(c); + evas_textblock_cursor_paragraph_first(c); _curs_update_from_curs(c, o, en); } static void _curs_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - evas_textblock_cursor_node_last(c); + evas_textblock_cursor_paragraph_last(c); _curs_lin_end(c, o, en); -// evas_textblock_cursor_line_set(c, _curs_line_last_get(c, o, en)); -// _curs_lin_end(c, o, en); _curs_update_from_curs(c, o, en); } @@ -380,7 +282,7 @@ if (en->cx < (lx + (lw / 2))) { if (ln == last) _curs_end(c, o, en); -// evas_textblock_cursor_line_first(c); +// evas_textblock_cursor_line_char_last(c); _curs_lin_start(c, o, en); } else @@ -389,7 +291,7 @@ _curs_end(c, o, en); else _curs_lin_end(c, o, en); -// evas_textblock_cursor_line_last(c); +// evas_textblock_cursor_line_char_last(c); } } @@ -923,17 +825,18 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { Evas_Textblock_Cursor *c1; + const Evas_Object_Textblock_Node_Format *node; Anchor *an = NULL; - int firsttext = 0; _anchors_clear(c, o, en); c1 = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_node_first(c1); - do + node = evas_textblock_node_format_first_get(o); + for (; node ; node = evas_textblock_node_format_next_get(node)) { const char *s; - - s = evas_textblock_cursor_node_format_get(c1); + + evas_textblock_cursor_at_format_set(c1, node); + s = evas_textblock_node_format_text_get(node); if (s) { if ((!strncmp(s, "+ a ", 4)) || (!strncmp(s, "+a ", 3))) @@ -942,7 +845,7 @@ if (an) { char *p; - + an->en = en; p = strstr(s, "href="); if (p) @@ -958,9 +861,11 @@ } else if ((!strcmp(s, "- a")) || (!strcmp(s, "-a"))) { + /* Close the anchor, if the anchor was without text, free it as well */ if (an) { - if (!firsttext) + evas_textblock_cursor_at_format_set(an->end, node); + if (!evas_textblock_cursor_compare(an->start, an->end)) { if (an->name) free(an->name); evas_textblock_cursor_free(an->start); @@ -968,7 +873,6 @@ en->anchors = eina_list_remove(en->anchors, an); free(an); } - firsttext = 0; an = NULL; } } @@ -978,7 +882,7 @@ if (an) { char *p; - + an->en = en; an->item = 1; p = strstr(s, "href="); @@ -997,7 +901,7 @@ { if (an) { -/* +/* if (!firsttext) { if (an->name) free(an->name); @@ -1007,30 +911,11 @@ free(an); } */ - firsttext = 0; an = NULL; } } } - else - { - s = evas_textblock_cursor_node_text_get(c1); - if (an) - { - if (!an->item) - { - if (!firsttext) - { - evas_textblock_cursor_copy(c1, an->start); - firsttext = 1; - } - } - evas_textblock_cursor_char_last(c1); - evas_textblock_cursor_copy(c1, an->end); - } - } - } - while (evas_textblock_cursor_node_next(c1)); + } evas_textblock_cursor_free(c1); } @@ -1038,111 +923,22 @@ static void _range_del(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *en) { - Evas_Textblock_Cursor *c1; - - c1 = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_node_last(c1); - if (!evas_textblock_cursor_compare(en->sel_end, c1)) - evas_textblock_cursor_node_prev(en->sel_end); - if (!evas_textblock_cursor_compare(en->sel_start, c1)) - evas_textblock_cursor_node_prev(en->sel_start); - evas_textblock_cursor_free(c1); evas_textblock_cursor_range_delete(en->sel_start, en->sel_end); } static void _backspace(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - Evas_Textblock_Cursor *c1, *c2; - int nodel = 0; - - c1 = evas_object_textblock_cursor_new(o); - if (!evas_textblock_cursor_char_prev(c)) + if (evas_textblock_cursor_char_prev(c)) { - if (!evas_textblock_cursor_node_prev(c)) - nodel = 1; - else - { - evas_textblock_cursor_copy(c, c1); - if (evas_textblock_cursor_node_format_get(c) && - (!evas_textblock_cursor_node_format_is_visible_get(c))) - _curs_back(c, o, en); - } + evas_textblock_cursor_char_delete(c); } - else - { - 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); - } - evas_textblock_cursor_copy(c, c1); - _curs_back(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); } static void _delete(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) { - Evas_Textblock_Cursor *c1, *c2; - - c1 = evas_object_textblock_cursor_new(o); - c2 = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_copy(c, c1); - evas_textblock_cursor_copy(c, c2); - evas_textblock_cursor_char_last(c2); - if (evas_textblock_cursor_node_format_get(c1) && - (!evas_textblock_cursor_node_format_is_visible_get(c1))) - { - // non-visible format-node - evas_textblock_cursor_copy(c1, c2); - while (evas_textblock_cursor_node_next(c2)) - { - if ((!evas_textblock_cursor_node_format_get(c2)) || - (evas_textblock_cursor_node_format_is_visible_get(c2))) - { - evas_textblock_cursor_node_prev(c2); - break; - } - } - } - else - { - if (evas_textblock_cursor_node_format_is_visible_get(c1)) - { - // visible format node - // do nothing just copy c to c1/c2 and range del - } - else - { - // if it's a text node - if (!evas_textblock_cursor_char_next(c1)) - { - if (evas_textblock_cursor_compare(c1, c2) > 0) - _curs_next(c, o, en); - } - } - evas_textblock_cursor_copy(c, c1); - evas_textblock_cursor_copy(c, c2); - } - evas_textblock_cursor_range_delete(c1, c2); - evas_textblock_cursor_free(c1); - evas_textblock_cursor_free(c2); + evas_textblock_cursor_char_delete(c); } static void @@ -1444,8 +1240,14 @@ if (en->have_selection) _range_del(en->cursor, rp->object, en); _sel_clear(en->cursor, rp->object, en); - //yy - evas_textblock_cursor_format_prepend(en->cursor, "\n"); + if (shift) + { + evas_textblock_cursor_format_prepend(en->cursor, "\n"); + } + else + { + evas_textblock_cursor_format_prepend(en->cursor, "ps"); + } _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); @@ -2072,7 +1874,7 @@ _sel_clear(en->cursor, rp->object, en); evas_object_textblock_text_markup_set(rp->object, text); /* - evas_textblock_cursor_node_last(en->cursor); + evas_textblock_cursor_paragraph_last(en->cursor); if (!evas_textblock_cursor_node_format_get(en->cursor)) { evas_textblock_cursor_format_append(en->cursor, "\n"); @@ -2371,11 +2173,8 @@ if (!c) return EINA_FALSE; 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 EINA_FALSE; + return EINA_FALSE; } - ok: _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2401,7 +2200,7 @@ if (!c) return EINA_FALSE; if (!evas_textblock_cursor_char_prev(c)) { - if (evas_textblock_cursor_node_prev(c)) goto ok; + if (evas_textblock_cursor_paragraph_prev(c)) goto ok; else return EINA_FALSE; } ok: @@ -2440,9 +2239,9 @@ if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) { if (cx < (lx +(lw / 2))) - evas_textblock_cursor_line_first(c); + evas_textblock_cursor_line_char_last(c); else - evas_textblock_cursor_line_last(c); + evas_textblock_cursor_line_char_last(c); } _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2478,9 +2277,9 @@ if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) { if (cx < (lx +(lw / 2))) - evas_textblock_cursor_line_first(c); + evas_textblock_cursor_line_char_last(c); else - evas_textblock_cursor_line_last(c); + evas_textblock_cursor_line_char_last(c); } _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2505,7 +2304,7 @@ Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; - evas_textblock_cursor_node_first(c); + evas_textblock_cursor_paragraph_first(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2575,7 +2374,7 @@ Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; - evas_textblock_cursor_line_first(c); + evas_textblock_cursor_line_char_last(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2598,7 +2397,7 @@ Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; - evas_textblock_cursor_line_last(c); + evas_textblock_cursor_line_char_last(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); @@ -2620,7 +2419,7 @@ { Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return EINA_FALSE; - if (evas_textblock_cursor_node_format_get(c)) return EINA_TRUE; + if (evas_textblock_cursor_is_format(c)) return EINA_TRUE; return EINA_FALSE; } @@ -2629,7 +2428,7 @@ { Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return EINA_FALSE; - return evas_textblock_cursor_node_format_is_visible_get(c); + return evas_textblock_cursor_format_is_visible_get(c); } const char * @@ -2640,9 +2439,9 @@ static char buf[16]; int pos, pos2, ch; if (!c) return NULL; - s = evas_textblock_cursor_node_format_get(c); + s = evas_textblock_node_format_text_get(evas_textblock_cursor_format_get(c)); if (s) return s; - s = evas_textblock_cursor_node_text_get(c); + s = evas_textblock_cursor_paragraph_text_get(c); if (!s) return NULL; pos = evas_textblock_cursor_pos_get(c); pos2 = evas_string_char_next_get(s, pos, &ch); |
From: Enlightenment S. <no-...@en...> - 2010-08-10 07:16:52
|
Log: Edje: Fixed edje_object_part_text_cursor_content_get to handle non-english. Thanks to Brian Wang for reporting. Author: tasn Date: 2010-08-10 00:16:45 -0700 (Tue, 10 Aug 2010) New Revision: 50953 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-08-10 03:37:21 UTC (rev 50952) +++ trunk/edje/src/lib/edje_entry.c 2010-08-10 07:16:45 UTC (rev 50953) @@ -2437,16 +2437,21 @@ Evas_Textblock_Cursor *c = _cursor_get(rp, cur); const char *s; static char buf[16]; - int pos, pos2, ch; + int pos, pos2, i; if (!c) return NULL; s = evas_textblock_node_format_text_get(evas_textblock_cursor_format_get(c)); if (s) return s; s = evas_textblock_cursor_paragraph_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; + /* Get the actual utf8 pos */ + for (i = 0 ; pos > 0 ; pos--) + { + i = evas_string_char_next_get(s, i, NULL); + } + pos2 = evas_string_char_next_get(s, i, NULL); + strncpy(buf, s + i, pos2 - i); + buf[pos2 - i] = 0; return buf; } |
From: Enlightenment S. <no-...@en...> - 2010-08-11 09:40:29
|
Log: Edje: Fixed going to the start of the line. Author: tasn Date: 2010-08-11 02:40:21 -0700 (Wed, 11 Aug 2010) New Revision: 50989 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-08-11 08:33:22 UTC (rev 50988) +++ trunk/edje/src/lib/edje_entry.c 2010-08-11 09:40:21 UTC (rev 50989) @@ -2374,7 +2374,7 @@ Entry *en = rp->entry_data; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); if (!c) return; - evas_textblock_cursor_line_char_last(c); + evas_textblock_cursor_line_char_first(c); _curs_update_from_curs(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data); |
From: Enlightenment S. <no-...@en...> - 2010-08-25 14:54:17
|
Log: Edje entry: Fixed drawing of anchors. Author: tasn Date: 2010-08-25 07:54:08 -0700 (Wed, 25 Aug 2010) New Revision: 51647 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-08-25 14:37:52 UTC (rev 51646) +++ trunk/edje/src/lib/edje_entry.c 2010-08-25 14:54:08 UTC (rev 51647) @@ -865,6 +865,8 @@ if (an) { evas_textblock_cursor_at_format_set(an->end, node); + /* Go before the format */ + evas_textblock_cursor_char_prev(an->end); if (!evas_textblock_cursor_compare(an->start, an->end)) { if (an->name) free(an->name); |
From: Enlightenment S. <no-...@en...> - 2010-09-02 11:50:59
|
Log: Edje entry: Started using evas_textblock_cursor_geometry_get for cursor position instead of char_geometry_get. Author: tasn Date: 2010-09-02 04:50:52 -0700 (Thu, 02 Sep 2010) New Revision: 51835 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-02 11:49:00 UTC (rev 51834) +++ trunk/edje/src/lib/edje_entry.c 2010-09-02 11:50:52 UTC (rev 51835) @@ -202,7 +202,7 @@ { Evas_Coord cx, cy, cw, ch; if (c != en->cursor) return; - evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); + evas_textblock_cursor_geometry_get(c, &cx, &cy, &cw, &ch, EVAS_TEXTBLOCK_CURSOR_UNDER); en->cx = cx + (cw / 2); en->cy = cy + (ch / 2); } @@ -1829,7 +1829,7 @@ x = y = w = h = -1; xx = yy = ww = hh = -1; evas_object_geometry_get(rp->object, &x, &y, &w, &h); - evas_textblock_cursor_char_geometry_get(en->cursor, &xx, &yy, &ww, &hh); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, EVAS_TEXTBLOCK_CURSOR_UNDER); if (ww < 1) ww = 1; if (hh < 1) ww = 1; if (en->cursor_bg) @@ -2097,7 +2097,7 @@ x = y = w = h = -1; xx = yy = ww = hh = -1; evas_object_geometry_get(rp->object, &x, &y, &w, &h); - evas_textblock_cursor_char_geometry_get(en->cursor, &xx, &yy, &ww, &hh); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, EVAS_TEXTBLOCK_CURSOR_UNDER); if (ww < 1) ww = 1; if (hh < 1) ww = 1; if (cx) *cx = x + xx; |
From: Enlightenment S. <no-...@en...> - 2010-09-02 13:52:24
|
Log: Edje entry: Fixed setting cursor on mouse click. Author: tasn Date: 2010-09-02 06:52:14 -0700 (Thu, 02 Sep 2010) New Revision: 51841 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-02 13:39:59 UTC (rev 51840) +++ trunk/edje/src/lib/edje_entry.c 2010-09-02 13:52:14 UTC (rev 51841) @@ -1384,15 +1384,7 @@ _curs_lin_end(en->cursor, rp->object, en); } } - line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); } - else - { - Evas_Coord lx, ly, lw, lh; - int line; - - line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); - } if (dosel) { if ((en->have_selection) && @@ -1489,13 +1481,28 @@ if (!evas_textblock_cursor_char_coord_set(en->cursor, en->cx, en->cy)) { Evas_Coord lx, ly, lw, lh; - - evas_textblock_cursor_line_coord_set(en->cursor, en->cy); - 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 line; + + line = evas_textblock_cursor_line_coord_set(en->cursor, en->cy); + if (line == -1) + _curs_end(en->cursor, rp->object, en); else - _curs_lin_end(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 + { + if (en->cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } + } } if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) { |
From: Enlightenment S. <no-...@en...> - 2010-09-05 07:20:55
|
Log: Edje entry: Enabled Ecore_IMF. Fixed formatting issues. Fixed typos. Fixed clearing of selection when pressing a key in a software keyboard. Patch by Jihoon Kim and small adjustments by myself. Thanks a lot. Author: tasn Date: 2010-09-05 00:20:47 -0700 (Sun, 05 Sep 2010) New Revision: 51897 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-05 07:04:59 UTC (rev 51896) +++ trunk/edje/src/lib/edje_entry.c 2010-09-05 07:20:47 UTC (rev 51897) @@ -24,6 +24,8 @@ #include "edje_private.h" #ifdef HAVE_ECORE_IMF +#include <Ecore_IMF_Evas.h> + static int _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos); static Eina_Bool _edje_entry_imf_event_commit_cb(void *data, int type, void *event); static Eina_Bool _edje_entry_imf_event_changed_cb(void *data, int type, void *event); @@ -118,7 +120,7 @@ } #endif - static void +static void _edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Edje *ed = data; @@ -174,7 +176,7 @@ } // need one for markup and format too - how to do it? extra type param? - static void +static void __UNUSED__ _text_filter_prepend(Entry *en, const char *text) { char *text2; @@ -430,8 +432,8 @@ while (en->sel) { sel = en->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del(sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); free(sel); @@ -453,7 +455,7 @@ evas_object_pass_events_set(ob, 1); evas_object_show(ob); sel->obj_bg = ob; - en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg); ob = edje_object_add(en->rp->edje->evas); edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2); @@ -463,7 +465,7 @@ evas_object_pass_events_set(ob, 1); evas_object_show(ob); sel->obj_fg = ob; - en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_fg); + en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_fg); } } } @@ -807,15 +809,15 @@ while (an->sel) { Sel *sel = an->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del(sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); if (sel->obj) evas_object_del(sel->obj); free(sel); an->sel = eina_list_remove_list(an->sel, an->sel); } - free(an->name); + free(an->name); free(an); en->anchors = eina_list_remove_list(en->anchors, en->anchors); } @@ -960,7 +962,6 @@ if (!ev->key) return; #ifdef HAVE_ECORE_IMF -#if 0 // FIXME -- keyboard activated IMF if (en->imf_context) { Ecore_IMF_Event_Key_Down ecore_ev; @@ -971,7 +972,6 @@ return; } #endif -#endif tc = evas_object_textblock_cursor_new(rp->object); evas_textblock_cursor_copy(en->cursor, tc); @@ -1291,9 +1291,10 @@ } static void -_edje_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +_edje_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { Edje *ed = data; + Evas_Event_Key_Up *ev = event_info; Edje_Real_Part *rp = ed->focused_part; Entry *en; if (!rp) return; @@ -1303,19 +1304,16 @@ return; #ifdef HAVE_ECORE_IMF -#if 0 // FIXME key activation imf if (en->imf_context) { Ecore_IMF_Event_Key_Up ecore_ev; - ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev); + ecore_imf_evas_event_key_up_wrap(ev, &ecore_ev); if (ecore_imf_context_filter_event(en->imf_context, ECORE_IMF_EVENT_KEY_UP, (Ecore_IMF_Event *)&ecore_ev)) return; } #endif -#endif - } static void @@ -1535,8 +1533,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -1744,7 +1742,6 @@ { en->imf_context = ecore_imf_context_add(ctx_id); } - else { ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); @@ -1916,8 +1913,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -1963,8 +1960,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -1985,8 +1982,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2004,8 +2001,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2188,8 +2185,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2217,8 +2214,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2294,8 +2291,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2318,8 +2315,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2340,8 +2337,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2365,8 +2362,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2388,8 +2385,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2411,8 +2408,8 @@ #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 @@ -2508,6 +2505,12 @@ if (en->imf_context != ev->ctx) return ECORE_CALLBACK_PASS_ON; + if (en->have_selection) + { + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); + } + if (en->have_composition) { for (i = 0; i < en->comp_len; i++) @@ -2555,6 +2558,12 @@ if ( 0 /* check the maximum length of evas_textblock */ ) return ECORE_CALLBACK_PASS_ON; + if (en->have_selection) + { + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); + } + if (en->have_composition) { // delete the composing characters |
From: Enlightenment S. <no-...@en...> - 2010-09-05 08:29:59
|
Log: Edje entry: started using the new evas_textblock_cursor_content_get. Author: tasn Date: 2010-09-05 01:29:52 -0700 (Sun, 05 Sep 2010) New Revision: 51899 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-05 08:28:58 UTC (rev 51898) +++ trunk/edje/src/lib/edje_entry.c 2010-09-05 08:29:52 UTC (rev 51899) @@ -2438,25 +2438,17 @@ const char * _edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur) { + static char *s = NULL; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); - const char *s; - static char buf[16]; - int pos, pos2, i; - if (!c) return NULL; - s = evas_textblock_node_format_text_get(evas_textblock_cursor_format_get(c)); - if (s) return s; - s = evas_textblock_cursor_paragraph_text_get(c); - if (!s) return NULL; - pos = evas_textblock_cursor_pos_get(c); - /* Get the actual utf8 pos */ - for (i = 0 ; pos > 0 ; pos--) + + if (s) { - i = evas_string_char_next_get(s, i, NULL); + free(s); + s = NULL; } - pos2 = evas_string_char_next_get(s, i, NULL); - strncpy(buf, s + i, pos2 - i); - buf[pos2 - i] = 0; - return buf; + + s = evas_textblock_cursor_content_get(c); + return s; } #ifdef HAVE_ECORE_IMF |
From: Enlightenment S. <no-...@en...> - 2010-09-08 07:29:07
|
Log: Edje entry: fix the usage of the new evas_textblock_cursor_geometry_get function. Author: tasn Date: 2010-09-08 00:29:00 -0700 (Wed, 08 Sep 2010) New Revision: 51980 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-08 07:28:16 UTC (rev 51979) +++ trunk/edje/src/lib/edje_entry.c 2010-09-08 07:29:00 UTC (rev 51980) @@ -206,7 +206,7 @@ { Evas_Coord cx, cy, cw, ch; if (c != en->cursor) return; - evas_textblock_cursor_geometry_get(c, &cx, &cy, &cw, &ch, EVAS_TEXTBLOCK_CURSOR_UNDER); + evas_textblock_cursor_geometry_get(c, &cx, &cy, &cw, &ch, NULL, EVAS_TEXTBLOCK_CURSOR_UNDER); en->cx = cx + (cw / 2); en->cy = cy + (ch / 2); } @@ -1835,7 +1835,7 @@ x = y = w = h = -1; xx = yy = ww = hh = -1; evas_object_geometry_get(rp->object, &x, &y, &w, &h); - evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, EVAS_TEXTBLOCK_CURSOR_UNDER); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, NULL, EVAS_TEXTBLOCK_CURSOR_UNDER); if (ww < 1) ww = 1; if (hh < 1) ww = 1; if (en->cursor_bg) @@ -2103,7 +2103,7 @@ x = y = w = h = -1; xx = yy = ww = hh = -1; evas_object_geometry_get(rp->object, &x, &y, &w, &h); - evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, EVAS_TEXTBLOCK_CURSOR_UNDER); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, NULL, EVAS_TEXTBLOCK_CURSOR_UNDER); if (ww < 1) ww = 1; if (hh < 1) ww = 1; if (cx) *cx = x + xx; |
From: Enlightenment S. <no-...@en...> - 2010-09-12 08:15:42
|
Log: Edje entry: Fixed a selection bug with IMF enabled and fix a couple of indentation issues, and a saftey check. Patch by Jihoon Kim. Author: tasn Date: 2010-09-12 01:15:35 -0700 (Sun, 12 Sep 2010) New Revision: 52165 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-12 08:03:21 UTC (rev 52164) +++ trunk/edje/src/lib/edje_entry.c 2010-09-12 08:15:35 UTC (rev 52165) @@ -85,7 +85,7 @@ }; #ifdef HAVE_ECORE_IMF - static void +static void _edje_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Edje_Real_Part *rp; @@ -95,7 +95,7 @@ if (!rp || !rp->entry_data || !rp->edje || !rp->edje->obj) return; en = rp->entry_data; - if (!en->imf_context) return; + if (!en || !en->imf_context) return; if (evas_object_focus_get(rp->edje->obj)) { @@ -104,7 +104,7 @@ } } - static void +static void _edje_entry_focus_out_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Edje_Real_Part *rp; @@ -149,7 +149,7 @@ #endif } - static void +static void _edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Edje *ed = data; @@ -401,8 +401,8 @@ Sel *sel; sel = en->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del(sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); free(sel); @@ -1100,7 +1100,7 @@ _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); - _edje_emit(ed, "entry,key,delete", rp->part->name); + _edje_emit(ed, "entry,key,delete", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Home")) @@ -2590,18 +2590,11 @@ } en->comp_len = length; - - _sel_clear(en->cursor, rp->object, en); - _sel_enable(en->cursor, rp->object, en); - _sel_start(en->cursor, rp->object, en); - en->have_composition = EINA_TRUE; //xx 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); _anchors_get(en->cursor, rp->object, en); _edje_emit(rp->edje, "entry,changed", rp->part->name); |
From: Enlightenment S. <no-...@en...> - 2010-09-19 08:08:26
|
Log: Edje entry: Fixed a lot of formatting issues. Patch by Jihoon Kim. Author: tasn Date: 2010-09-19 01:08:17 -0700 (Sun, 19 Sep 2010) New Revision: 52461 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-09-19 03:55:06 UTC (rev 52460) +++ trunk/edje/src/lib/edje_entry.c 2010-09-19 08:08:17 UTC (rev 52461) @@ -114,7 +114,7 @@ if (!rp || !rp->entry_data) return; en = rp->entry_data; - if (!en->imf_context) return; + if (!en || !en->imf_context) return; ecore_imf_context_reset(en->imf_context); ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor)); @@ -332,8 +332,8 @@ en->have_selection = EINA_FALSE; if (en->selection) { - free(en->selection); - en->selection = NULL; + free(en->selection); + en->selection = NULL; } } @@ -344,8 +344,8 @@ en->have_selection = EINA_TRUE; if (en->selection) { - free(en->selection); - en->selection = NULL; + free(en->selection); + en->selection = NULL; } _edje_emit(en->rp->edje, "selection,start", en->rp->part->name); } @@ -359,8 +359,8 @@ evas_textblock_cursor_copy(c, en->sel_end); if (en->selection) { - free(en->selection); - en->selection = NULL; + free(en->selection); + en->selection = NULL; } _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); } @@ -374,8 +374,8 @@ evas_textblock_cursor_copy(c, en->sel_start); if (en->selection) { - free(en->selection); - en->selection = NULL; + free(en->selection); + en->selection = NULL; } _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); } @@ -386,32 +386,32 @@ en->had_sel = EINA_FALSE; if (en->sel_start) { - evas_textblock_cursor_free(en->sel_start); - evas_textblock_cursor_free(en->sel_end); - en->sel_start = NULL; - en->sel_end = NULL; + evas_textblock_cursor_free(en->sel_start); + evas_textblock_cursor_free(en->sel_end); + en->sel_start = NULL; + en->sel_end = NULL; } if (en->selection) { - free(en->selection); - en->selection = NULL; + free(en->selection); + en->selection = NULL; } while (en->sel) { - Sel *sel; - - sel = en->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); - if (sel->obj_bg) evas_object_del(sel->obj_bg); - if (sel->obj_fg) evas_object_del(sel->obj_fg); - free(sel); - en->sel = eina_list_remove_list(en->sel, en->sel); + Sel *sel; + + sel = en->sel->data; + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + free(sel); + en->sel = eina_list_remove_list(en->sel, en->sel); } if (en->have_selection) { en->have_selection = EINA_FALSE; - _edje_emit(en->rp->edje, "selection,cleared", en->rp->part->name); + _edje_emit(en->rp->edje, "selection,cleared", en->rp->part->name); } } @@ -422,86 +422,86 @@ Sel *sel; Evas_Coord x, y, w, h; Evas_Object *smart, *clip; - + smart = evas_object_smart_parent_get(o); clip = evas_object_clip_get(o); if (en->sel_start) - range = evas_textblock_cursor_range_geometry_get(en->sel_start, en->sel_end); + range = evas_textblock_cursor_range_geometry_get(en->sel_start, en->sel_end); else - return; + return; if (eina_list_count(range) != eina_list_count(en->sel)) { - while (en->sel) - { - sel = en->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); - if (sel->obj_bg) evas_object_del(sel->obj_bg); - if (sel->obj_fg) evas_object_del(sel->obj_fg); - free(sel); - en->sel = eina_list_remove_list(en->sel, en->sel); - } - if (en->have_selection) - { - for (l = range; l; l = eina_list_next(l)) - { - Evas_Object *ob; - - sel = calloc(1, sizeof(Sel)); - en->sel = eina_list_append(en->sel, sel); - ob = edje_object_add(en->rp->edje->evas); - edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source); - evas_object_smart_member_add(ob, smart); - evas_object_stack_below(ob, o); - evas_object_clip_set(ob, clip); - evas_object_pass_events_set(ob, 1); - evas_object_show(ob); - sel->obj_bg = ob; - en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg); - - ob = edje_object_add(en->rp->edje->evas); - edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2); - evas_object_smart_member_add(ob, smart); - evas_object_stack_above(ob, o); - evas_object_clip_set(ob, clip); - evas_object_pass_events_set(ob, 1); - evas_object_show(ob); - sel->obj_fg = ob; - en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_fg); - } - } + while (en->sel) + { + sel = en->sel->data; + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + free(sel); + en->sel = eina_list_remove_list(en->sel, en->sel); + } + if (en->have_selection) + { + for (l = range; l; l = eina_list_next(l)) + { + Evas_Object *ob; + + sel = calloc(1, sizeof(Sel)); + en->sel = eina_list_append(en->sel, sel); + ob = edje_object_add(en->rp->edje->evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source); + evas_object_smart_member_add(ob, smart); + evas_object_stack_below(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_bg = ob; + en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg); + + ob = edje_object_add(en->rp->edje->evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2); + evas_object_smart_member_add(ob, smart); + evas_object_stack_above(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_fg = ob; + en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_fg); + } + } } x = y = w = h = -1; evas_object_geometry_get(o, &x, &y, &w, &h); if (en->have_selection) { - EINA_LIST_FOREACH(en->sel, l, sel) - { - Evas_Textblock_Rectangle *r; - - r = range->data; - if (sel->obj_bg) - { - evas_object_move(sel->obj_bg, x + r->x, y + r->y); - evas_object_resize(sel->obj_bg, r->w, r->h); - } - if (sel->obj_fg) - { - evas_object_move(sel->obj_fg, x + r->x, y + r->y); - evas_object_resize(sel->obj_fg, r->w, r->h); - } - *(&(sel->rect)) = *r; - range = eina_list_remove_list(range, range); - free(r); - } + EINA_LIST_FOREACH(en->sel, l, sel) + { + Evas_Textblock_Rectangle *r; + + r = range->data; + if (sel->obj_bg) + { + evas_object_move(sel->obj_bg, x + r->x, y + r->y); + evas_object_resize(sel->obj_bg, r->w, r->h); + } + if (sel->obj_fg) + { + evas_object_move(sel->obj_fg, x + r->x, y + r->y); + evas_object_resize(sel->obj_fg, r->w, r->h); + } + *(&(sel->rect)) = *r; + range = eina_list_remove_list(range, range); + free(r); + } } else { - while (range) - { - free(range->data); - range = eina_list_remove_list(range, range); - } + while (range) + { + free(range->data); + range = eina_list_remove_list(range, range); + } } } @@ -515,25 +515,25 @@ int len; int ignored; Entry *en; - + en = rp->entry_data; if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && (en->select_allow)) - return; + return; ignored = rp->part->ignore_flags & ev->event_flags; if ((!ev->event_flags) || (!ignored)) { - n = an->name; - if (!n) n = ""; - len = 200 + strlen(n); - buf = alloca(len); + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) - snprintf(buf, len, "anchor,mouse,down,%i,%s,triple", ev->button, n); + snprintf(buf, len, "anchor,mouse,down,%i,%s,triple", ev->button, n); else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) - snprintf(buf, len, "anchor,mouse,down,%i,%s,double", ev->button, n); - else - snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n); - _edje_emit(rp->edje, buf, rp->part->name); + snprintf(buf, len, "anchor,mouse,down,%i,%s,double", ev->button, n); + else + snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n); + _edje_emit(rp->edje, buf, rp->part->name); } } @@ -547,20 +547,20 @@ int len; int ignored; Entry *en; - + en = rp->entry_data; ignored = rp->part->ignore_flags & ev->event_flags; if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && (en->select_allow)) - return; + return; if ((!ev->event_flags) || (!ignored)) { - n = an->name; - if (!n) n = ""; - len = 200 + strlen(n); - buf = alloca(len); - snprintf(buf, len, "anchor,mouse,up,%i,%s", ev->button, n); - _edje_emit(rp->edje, buf, rp->part->name); + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,up,%i,%s", ev->button, n); + _edje_emit(rp->edje, buf, rp->part->name); } } @@ -574,20 +574,20 @@ int len; int ignored; Entry *en; - + en = rp->entry_data; if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && (en->select_allow)) - return; + return; ignored = rp->part->ignore_flags & ev->event_flags; if ((!ev->event_flags) || (!ignored)) { - n = an->name; - if (!n) n = ""; - len = 200 + strlen(n); - buf = alloca(len); - snprintf(buf, len, "anchor,mouse,move,%s", n); - _edje_emit(rp->edje, buf, rp->part->name); + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,move,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); } } @@ -604,12 +604,12 @@ ignored = rp->part->ignore_flags & ev->event_flags; if ((!ev->event_flags) || (!ignored)) { - n = an->name; - if (!n) n = ""; - len = 200 + strlen(n); - buf = alloca(len); - snprintf(buf, len, "anchor,mouse,in,%s", n); - _edje_emit(rp->edje, buf, rp->part->name); + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,in,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); } } @@ -626,12 +626,12 @@ ignored = rp->part->ignore_flags & ev->event_flags; if ((!ev->event_flags) || (!ignored)) { - n = an->name; - if (!n) n = ""; - len = 200 + strlen(n); - buf = alloca(len); - snprintf(buf, len, "anchor,mouse,out,%s", n); - _edje_emit(rp->edje, buf, rp->part->name); + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,out,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); } } @@ -680,7 +680,7 @@ evas_object_smart_member_add(ob, smart); evas_object_stack_above(ob, o); evas_object_clip_set(ob, clip); - evas_object_pass_events_set(ob, 1); + evas_object_pass_events_set(ob, EINA_TRUE); evas_object_show(ob); sel->obj = ob; } @@ -714,7 +714,7 @@ evas_object_smart_member_add(ob, smart); evas_object_stack_below(ob, o); evas_object_clip_set(ob, clip); - evas_object_pass_events_set(ob, 1); + evas_object_pass_events_set(ob, EINA_TRUE); evas_object_show(ob); sel->obj_bg = ob; en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_bg); @@ -724,7 +724,7 @@ evas_object_smart_member_add(ob, smart); evas_object_stack_above(ob, o); evas_object_clip_set(ob, clip); - evas_object_pass_events_set(ob, 1); + evas_object_pass_events_set(ob, EINA_TRUE); evas_object_show(ob); sel->obj_fg = ob; en->rp->edje->subobjs = eina_list_append(en->rp->edje->subobjs, sel->obj_fg); @@ -734,7 +734,7 @@ evas_object_smart_member_add(ob, smart); evas_object_stack_above(ob, o); evas_object_clip_set(ob, clip); - evas_object_repeat_events_set(ob, 1); + evas_object_repeat_events_set(ob, EINA_TRUE); evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_DOWN, _edje_anchor_mouse_down_cb, an); evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_UP, _edje_anchor_mouse_up_cb, an); evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_MOVE, _edje_anchor_mouse_move_cb, an); @@ -790,34 +790,34 @@ { while (en->anchorlist) { - free(en->anchorlist->data); - en->anchorlist = eina_list_remove_list(en->anchorlist, en->anchorlist); + free(en->anchorlist->data); + en->anchorlist = eina_list_remove_list(en->anchorlist, en->anchorlist); } while (en->itemlist) { - free(en->itemlist->data); - en->itemlist = eina_list_remove_list(en->itemlist, en->itemlist); + free(en->itemlist->data); + en->itemlist = eina_list_remove_list(en->itemlist, en->itemlist); } while (en->anchors) { - Anchor *an = en->anchors->data; - - evas_textblock_cursor_free(an->start); - evas_textblock_cursor_free(an->end); - while (an->sel) - { - Sel *sel = an->sel->data; - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); - if (sel->obj_bg) evas_object_del(sel->obj_bg); - if (sel->obj_fg) evas_object_del(sel->obj_fg); - if (sel->obj) evas_object_del(sel->obj); - free(sel); - an->sel = eina_list_remove_list(an->sel, an->sel); - } - free(an->name); - free(an); - en->anchors = eina_list_remove_list(en->anchors, en->anchors); + Anchor *an = en->anchors->data; + + evas_textblock_cursor_free(an->start); + evas_textblock_cursor_free(an->end); + while (an->sel) + { + Sel *sel = an->sel->data; + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_bg); + en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, sel->obj_fg); + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + if (sel->obj) evas_object_del(sel->obj); + free(sel); + an->sel = eina_list_remove_list(an->sel, an->sel); + } + free(an->name); + free(an); + en->anchors = eina_list_remove_list(en->anchors, en->anchors); } } @@ -833,90 +833,90 @@ node = evas_textblock_node_format_first_get(o); for (; node ; node = evas_textblock_node_format_next_get(node)) { - const char *s; + const char *s; evas_textblock_cursor_at_format_set(c1, node); - s = evas_textblock_node_format_text_get(node); - if (s) - { - if ((!strncmp(s, "+ a ", 4)) || (!strncmp(s, "+a ", 3))) - { - an = calloc(1, sizeof(Anchor)); - if (an) - { - char *p; + s = evas_textblock_node_format_text_get(node); + if (s) + { + if ((!strncmp(s, "+ a ", 4)) || (!strncmp(s, "+a ", 3))) + { + an = calloc(1, sizeof(Anchor)); + if (an) + { + char *p; - an->en = en; - p = strstr(s, "href="); - if (p) - { - an->name = strdup(p + 5); - } - en->anchors = eina_list_append(en->anchors, an); - an->start = evas_object_textblock_cursor_new(o); - an->end = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_copy(c1, an->start); - evas_textblock_cursor_copy(c1, an->end); - } - } - else if ((!strcmp(s, "- a")) || (!strcmp(s, "-a"))) - { - /* Close the anchor, if the anchor was without text, free it as well */ - if (an) - { + an->en = en; + p = strstr(s, "href="); + if (p) + { + an->name = strdup(p + 5); + } + en->anchors = eina_list_append(en->anchors, an); + an->start = evas_object_textblock_cursor_new(o); + an->end = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_copy(c1, an->start); + evas_textblock_cursor_copy(c1, an->end); + } + } + else if ((!strcmp(s, "- a")) || (!strcmp(s, "-a"))) + { + /* Close the anchor, if the anchor was without text, free it as well */ + if (an) + { evas_textblock_cursor_at_format_set(an->end, node); /* Go before the format */ evas_textblock_cursor_char_prev(an->end); - if (!evas_textblock_cursor_compare(an->start, an->end)) - { - if (an->name) free(an->name); - evas_textblock_cursor_free(an->start); - evas_textblock_cursor_free(an->end); - en->anchors = eina_list_remove(en->anchors, an); - free(an); - } - an = NULL; - } - } - else if (!strncmp(s, "+ item ", 7)) - { - an = calloc(1, sizeof(Anchor)); - if (an) - { - char *p; + if (!evas_textblock_cursor_compare(an->start, an->end)) + { + if (an->name) free(an->name); + evas_textblock_cursor_free(an->start); + evas_textblock_cursor_free(an->end); + en->anchors = eina_list_remove(en->anchors, an); + free(an); + } + an = NULL; + } + } + else if (!strncmp(s, "+ item ", 7)) + { + an = calloc(1, sizeof(Anchor)); + if (an) + { + char *p; - an->en = en; + an->en = en; an->item = 1; - p = strstr(s, "href="); - if (p) - { - an->name = strdup(p + 5); - } - en->anchors = eina_list_append(en->anchors, an); - an->start = evas_object_textblock_cursor_new(o); - an->end = evas_object_textblock_cursor_new(o); - evas_textblock_cursor_copy(c1, an->start); - evas_textblock_cursor_copy(c1, an->end); - } - } - else if ((!strcmp(s, "- item")) || (!strcmp(s, "-item"))) - { - if (an) - { -/* - if (!firsttext) - { - if (an->name) free(an->name); - evas_textblock_cursor_free(an->start); - evas_textblock_cursor_free(an->end); - en->anchors = eina_list_remove(en->anchors, an); - free(an); - } - */ - an = NULL; - } - } - } + p = strstr(s, "href="); + if (p) + { + an->name = strdup(p + 5); + } + en->anchors = eina_list_append(en->anchors, an); + an->start = evas_object_textblock_cursor_new(o); + an->end = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_copy(c1, an->start); + evas_textblock_cursor_copy(c1, an->end); + } + } + else if ((!strcmp(s, "- item")) || (!strcmp(s, "-item"))) + { + if (an) + { + /* + if (!firsttext) + { + if (an->name) free(an->name); + evas_textblock_cursor_free(an->start); + evas_textblock_cursor_free(an->end); + en->anchors = eina_list_remove(en->anchors, an); + free(an); + } + */ + an = NULL; + } + } + } } evas_textblock_cursor_free(c1); } @@ -932,7 +932,7 @@ _backspace(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entry *en __UNUSED__) { if (evas_textblock_cursor_char_prev(c)) - evas_textblock_cursor_char_delete(c); + evas_textblock_cursor_char_delete(c); } static void @@ -956,7 +956,7 @@ en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) - return; + return; if (!ev->key) return; #ifdef HAVE_ECORE_IMF @@ -967,13 +967,13 @@ if (ecore_imf_context_filter_event(en->imf_context, ECORE_IMF_EVENT_KEY_DOWN, (Ecore_IMF_Event *)&ecore_ev)) - return; + return; } #endif - + tc = evas_object_textblock_cursor_new(rp->object); evas_textblock_cursor_copy(en->cursor, tc); - + control = evas_key_modifier_is_set(ev->modifiers, "Control"); alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); @@ -981,44 +981,44 @@ cursor_changed = EINA_FALSE; if (!strcmp(ev->key, "Escape")) { - // dead keys here. Escape for now (should emit these) + // dead keys here. Escape for now (should emit these) _edje_emit(ed, "entry,key,escape", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Up")) { - if (multiline) - { + if (multiline) + { if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_up(en->cursor, rp->object, en); + _curs_up(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } _edje_emit(ed, "entry,key,up", rp->part->name); } else if (!strcmp(ev->key, "Down")) { - if (multiline) - { + if (multiline) + { if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_down(en->cursor, rp->object, en); + _curs_down(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } _edje_emit(ed, "entry,key,down", rp->part->name); } else if (!strcmp(ev->key, "Left")) @@ -1028,13 +1028,13 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_back(en->cursor, rp->object, en); + _curs_back(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,left", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Right")) { @@ -1043,61 +1043,61 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_next(en->cursor, rp->object, en); + _curs_next(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,right", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "BackSpace")) { - if (control) - { - // del to start of previous word - } - else if ((alt) && (shift)) - { - // undo last action - } - else - { - if (en->have_selection) - _range_del(en->cursor, rp->object, en); - else - _backspace(en->cursor, rp->object, en); - } - _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); + if (control) + { + // del to start of previous word + } + else if ((alt) && (shift)) + { + // undo last action + } + else + { + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + else + _backspace(en->cursor, rp->object, en); + } + _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); _edje_emit(ed, "entry,key,backspace", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Delete")) { - if (control) - { - // del to end of next word - } - else if (shift) - { - // cut - } - else - { - if (en->have_selection) - _range_del(en->cursor, rp->object, en); - else - _delete(en->cursor, rp->object, en); - } - _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); - _edje_emit(ed, "entry,key,delete", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + if (control) + { + // del to end of next word + } + else if (shift) + { + // cut + } + else + { + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + else + _delete(en->cursor, rp->object, en); + } + _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); + _edje_emit(ed, "entry,key,delete", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Home")) { @@ -1106,16 +1106,16 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - if ((control) && (multiline)) - _curs_start(en->cursor, rp->object, en); - else - _curs_lin_start(en->cursor, rp->object, en); + if ((control) && (multiline)) + _curs_start(en->cursor, rp->object, en); + else + _curs_lin_start(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,home", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "End")) { @@ -1124,82 +1124,82 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - if ((control) && (multiline)) - _curs_end(en->cursor, rp->object, en); - else - _curs_lin_end(en->cursor, rp->object, en); + if ((control) && (multiline)) + _curs_end(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,end", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->key, "v"))) { - _edje_emit(ed, "entry,paste,request", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + _edje_emit(ed, "entry,paste,request", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && ((!strcmp(ev->key, "c") || (!strcmp(ev->key, "Insert"))))) { - // FIXME: copy - save selection - _edje_emit(ed, "entry,copy,notify", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + // FIXME: copy - save selection + _edje_emit(ed, "entry,copy,notify", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && ((!strcmp(ev->key, "x") || (!strcmp(ev->key, "m"))))) { - // FIXME: cut - save selection, delete seletion - _curs_update_from_curs(en->cursor, rp->object, en); - _edje_emit(ed, "entry,cut,notify", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + // FIXME: cut - save selection, delete seletion + _curs_update_from_curs(en->cursor, rp->object, en); + _edje_emit(ed, "entry,cut,notify", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->key, "z"))) { - if (shift) - { - // redo - } - else - { - // undo - } - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + if (shift) + { + // redo + } + else + { + // undo + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->key, "y"))) { - // redo - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + // redo + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->key, "w"))) { - _sel_clear(en->cursor, rp->object, en); - // select current word - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + _sel_clear(en->cursor, rp->object, en); + // select current word + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Tab")) { - if (multiline) - { - if (shift) - { - // remove a tab - } - else - { + if (multiline) + { + if (shift) + { + // remove a tab + } + else + { //yy - evas_textblock_cursor_format_prepend(en->cursor, "\t"); - _curs_update_from_curs(en->cursor, rp->object, en); - _anchors_get(en->cursor, rp->object, en); - _edje_emit(ed, "entry,changed", rp->part->name); - } - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - } + evas_textblock_cursor_format_prepend(en->cursor, "\t"); + _curs_update_from_curs(en->cursor, rp->object, en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } _edje_emit(ed, "entry,key,tab", rp->part->name); } else if ((!strcmp(ev->key, "ISO_Left_Tab")) && (multiline)) { - // remove a tab - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + // remove a tab + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Prior")) { @@ -1208,13 +1208,13 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_jump_line_by(en->cursor, rp->object, en, -10); + _curs_jump_line_by(en->cursor, rp->object, en, -10); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,pgup", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->key, "Next")) { @@ -1223,20 +1223,20 @@ if (shift) _sel_start(en->cursor, rp->object, en); else _sel_clear(en->cursor, rp->object, en); } - _curs_jump_line_by(en->cursor, rp->object, en, 10); + _curs_jump_line_by(en->cursor, rp->object, en, 10); if (en->select_allow) { if (shift) _sel_extend(en->cursor, rp->object, en); } _edje_emit(ed, "entry,key,pgdn", rp->part->name); - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter"))) { - if (multiline) - { + if (multiline) + { if (en->have_selection) - _range_del(en->cursor, rp->object, en); + _range_del(en->cursor, rp->object, en); _sel_clear(en->cursor, rp->object, en); if (shift) { @@ -1246,44 +1246,44 @@ { evas_textblock_cursor_format_prepend(en->cursor, "ps"); } - _curs_update_from_curs(en->cursor, rp->object, en); - _anchors_get(en->cursor, rp->object, en); - _edje_emit(ed, "entry,changed", rp->part->name); - _edje_emit(ed, "cursor,changed", rp->part->name); - cursor_changed = EINA_TRUE; - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - } + _curs_update_from_curs(en->cursor, rp->object, en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit(ed, "cursor,changed", rp->part->name); + cursor_changed = EINA_TRUE; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } _edje_emit(ed, "entry,key,enter", rp->part->name); } else { - if (ev->string) - { - if (en->have_selection) - _range_del(en->cursor, rp->object, en); - _sel_clear(en->cursor, rp->object, en); + if (ev->string) + { + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); //zz - evas_textblock_cursor_text_prepend(en->cursor, ev->string); - _curs_update_from_curs(en->cursor, rp->object, en); - _anchors_get(en->cursor, rp->object, en); - _edje_emit(ed, "entry,changed", rp->part->name); - _edje_emit(ed, "cursor,changed", rp->part->name); - cursor_changed = EINA_TRUE; - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - } + evas_textblock_cursor_text_prepend(en->cursor, ev->string); + _curs_update_from_curs(en->cursor, rp->object, en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit(ed, "cursor,changed", rp->part->name); + cursor_changed = EINA_TRUE; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } } if ((evas_textblock_cursor_compare(tc, en->cursor)) && (!cursor_changed)) - _edje_emit(ed, "cursor,changed", rp->part->name); + _edje_emit(ed, "cursor,changed", rp->part->name); #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 - + evas_textblock_cursor_free(tc); _edje_entry_real_part_configure(rp); } @@ -1299,7 +1299,7 @@ en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) - return; + return; #ifdef HAVE_ECORE_IMF if (en->imf_context) @@ -1309,7 +1309,7 @@ if (ecore_imf_context_filter_event(en->imf_context, ECORE_IMF_EVENT_KEY_UP, (Ecore_IMF_Event *)&ecore_ev)) - return; + return; } #endif } @@ -1321,7 +1321,7 @@ Evas_Event_Mouse_Down *ev = event_info; Entry *en; Evas_Coord x, y, w, h; -// Eina_Bool multiline; + // Eina_Bool multiline; Evas_Textblock_Cursor *tc; Eina_Bool dosel = EINA_FALSE; if (!rp) return; @@ -1329,17 +1329,17 @@ en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) - return; + return; if (ev->button == 2) { - _edje_emit(rp->edje, "entry,paste,request", rp->part->name); + _edje_emit(rp->edje, "entry,paste,request", rp->part->name); return; } if (ev->button != 1) return; en->select_mod_start = EINA_FALSE; en->select_mod_end = EINA_FALSE; if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) - dosel = EINA_TRUE; + dosel = EINA_TRUE; else if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) { if (en->select_allow) dosel = EINA_TRUE; @@ -1351,7 +1351,7 @@ } tc = evas_object_textblock_cursor_new(rp->object); evas_textblock_cursor_copy(en->cursor, tc); -// multiline = rp->part->multiline; + // multiline = rp->part->multiline; evas_object_geometry_get(rp->object, &x, &y, &w, &h); en->cx = ev->canvas.x - x; en->cy = ev->canvas.y - y; @@ -1362,11 +1362,11 @@ line = evas_textblock_cursor_line_coord_set(en->cursor, en->cy); if (line == -1) - _curs_end(en->cursor, rp->object, en); + _curs_end(en->cursor, rp->object, en); else { int lnum; - + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); if (lnum < 0) { @@ -1375,9 +1375,9 @@ else { if (en->cx <= lx) - _curs_lin_start(en->cursor, rp->object, en); + _curs_lin_start(en->cursor, rp->object, en); else - _curs_lin_end(en->cursor, rp->object, en); + _curs_lin_end(en->cursor, rp->object, en); } } } @@ -1388,14 +1388,14 @@ { Eina_List *first, *last; FLOAT_T sc; - + first = en->sel; last = eina_list_last(en->sel); if (first && last) { Evas_Textblock_Rectangle *r1, *r2; Evas_Coord d, d1, d2; - + r1 = first->data; r2 = last->data; d = r1->x - en->cx; @@ -1439,17 +1439,17 @@ } } if (evas_textblock_cursor_compare(tc, en->cursor)) - _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); #ifdef HAVE_ECORE_IMF if (en->imf_context) { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_cursor_position_set(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 - + evas_textblock_cursor_free(tc); _edje_entry_real_part_configure(rp); } @@ -1468,7 +1468,7 @@ en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) - return; + return; tc = evas_object_textblock_cursor_new(rp->object); evas_textblock_cursor_copy(en->cursor, tc); evas_object_geometry_get(rp->object, &x, &y, &w, &h); @@ -1481,11 +1481,11 @@ line = evas_textblock_cursor_line_coord_set(en->cursor, en->cy); if (line == -1) - _curs_end(en->cursor, rp->object, en); + _curs_end(en->cursor, rp->object, en); else { int lnum; - + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); if (lnum < 0) { @@ -1494,9 +1494,9 @@ else { if (en->cx <= lx) - _curs_lin_start(en->cursor, rp->object, en); + _curs_lin_start(en->cursor, rp->object, en); else - _curs_lin_end(en->cursor, rp->object, en); + _curs_lin_end(en->cursor, rp->object, en); } } } @@ -1507,25 +1507,25 @@ if (en->had_sel) { if (en->select_mod_end) - _sel_extend(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); else if (en->select_mod_start) - _sel_preextend(en->cursor, rp->object, en); + _sel_preextend(en->cursor, rp->object, en); } else - _sel_extend(en->cursor, rp->object, en); -// evas_textblock_cursor_copy(en->cursor, en->sel_end); + _sel_extend(en->cursor, rp->object, en); + //evas_textblock_cursor_copy(en->cursor, en->sel_end); } } else - evas_textblock_cursor_copy(en->cursor, en->sel_end); + evas_textblock_cursor_copy(en->cursor, en->sel_end); if (en->selecting) { if (en->have_selection) - en->had_sel = EINA_TRUE; + en->had_sel = EINA_TRUE; en->selecting = EINA_FALSE; } if (evas_textblock_cursor_compare(tc, en->cursor)) - _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); evas_textblock_cursor_free(tc); #ifdef HAVE_ECORE_IMF @@ -1536,7 +1536,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } @@ -1552,7 +1552,7 @@ en = rp->entry_data; if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) - return; + return; if (en->selecting) { tc = evas_object_textblock_cursor_new(rp->object); @@ -1563,13 +1563,13 @@ if (!evas_textblock_cursor_char_coord_set(en->cursor, en->cx, en->cy)) { Evas_Coord lx, ly, lw, lh; - + evas_textblock_cursor_line_coord_set(en->cursor, en->cy); evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); if (en->cx <= lx) - _curs_lin_start(en->cursor, rp->object, en); + _curs_lin_start(en->cursor, rp->object, en); else - _curs_lin_end(en->cursor, rp->object, en); + _curs_lin_end(en->cursor, rp->object, en); } if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) { @@ -1578,12 +1578,12 @@ if (en->had_sel) { if (en->select_mod_end) - _sel_extend(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); else if (en->select_mod_start) - _sel_preextend(en->cursor, rp->object, en); + _sel_preextend(en->cursor, rp->object, en); } else - _sel_extend(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); } } else @@ -1593,12 +1593,12 @@ if (en->select_allow) { if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) != 0) - _sel_enable(en->cursor, rp->object, en); + _sel_enable(en->cursor, rp->object, en); if (en->have_selection) - _sel_update(en->cursor, rp->object, en); + _sel_update(en->cursor, rp->object, en); } if (evas_textblock_cursor_compare(tc, en->cursor)) - _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); evas_textblock_cursor_free(tc); #ifdef HAVE_ECORE_IMF @@ -1609,7 +1609,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } } @@ -1620,7 +1620,7 @@ Edje *ed = (Edje *)data; if (evas_focus_get(e) == ed->obj) { - _edje_focus_in_cb(data, NULL, NULL, NULL); + _edje_focus_in_cb(data, NULL, NULL, NULL); } } @@ -1630,7 +1630,7 @@ Edje *ed = (Edje *)data; if (evas_focus_get(e) == ed->obj) { - _edje_focus_out_cb(data, NULL, NULL, NULL); + _edje_focus_out_cb(data, NULL, NULL, NULL); } } @@ -1639,9 +1639,9 @@ _edje_entry_init(Edje *ed) { if (!ed->has_entries) - return; + return; if (ed->entries_inited) - return; + return; ed->entries_inited = EINA_TRUE; evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_FOCUS_IN, _edje_focus_in_cb, ed); @@ -1656,9 +1656,9 @@ _edje_entry_shutdown(Edje *ed) { if (!ed->has_entries) - return; + return; if (!ed->entries_inited) - return; + return; ed->entries_inited = EINA_FALSE; evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_FOCUS_IN, _edje_focus_in_cb); @@ -1666,9 +1666,9 @@ 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); if (evas_event_callback_del_full(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _evas_focus_in_cb, ed) != ed) - ERR("could not unregister EVAS_CALLBACK_FOCUS_IN"); + ERR("could not unregister EVAS_CALLBACK_FOCUS_IN"); if (evas_event_callback_del_full(ed->evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _evas_focus_out_cb, ed) != ed) - ERR("could not unregister EVAS_CALLBACK_FOCUS_OUT"); + ERR("could not unregister EVAS_CALLBACK_FOCUS_OUT"); } void @@ -1679,7 +1679,7 @@ const char *ctx_id; const Ecore_IMF_Context_Info *ctx_info; #endif - + en = calloc(1, sizeof(Entry)); if (!en) return; rp->entry_data = en; @@ -1688,21 +1688,21 @@ evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_DOWN, _edje_part_mouse_down_cb, rp); evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_UP, _edje_part_mouse_up_cb, rp); evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_MOVE, _edje_part_mouse_move_cb, rp); - + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) - en->select_allow = 1; + en->select_allow = 1; if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) { - Edje_Part_Description_Text *txt; + Edje_Part_Description_Text *txt; - txt = (Edje_Part_Description_Text *) rp->chosen_description; + txt = (Edje_Part_Description_Text *) rp->chosen_description; en->select_allow = 0; - if (txt && edje_string_get(&txt->text.repch)) - evas_object_textblock_replace_char_set(rp->object, edje_string_get(&txt->text.repch)); - else - evas_object_textblock_replace_char_set(rp->object, "*"); + if (txt && edje_string_get(&txt->text.repch)) + evas_object_textblock_replace_char_set(rp->object, edje_string_get(&txt->text.repch)); + else + evas_object_textblock_replace_char_set(rp->object, "*"); } en->cursor_bg = edje_object_add(rp->edje->evas); @@ -1710,27 +1710,27 @@ evas_object_smart_member_add(en->cursor_bg, rp->edje->obj); evas_object_stack_below(en->cursor_bg, rp->object); evas_object_clip_set(en->cursor_bg, evas_object_clip_get(rp->object)); - evas_object_pass_events_set(en->cursor_bg, 1); + evas_object_pass_events_set(en->cursor_bg, EINA_TRUE); rp->edje->subobjs = eina_list_append(rp->edje->subobjs, en->cursor_bg); - + en->cursor_fg = edje_object_add(rp->edje->evas); edje_object_file_set(en->cursor_fg, rp->edje->path, rp->part->source4); evas_object_smart_member_add(en->cursor_fg, rp->edje->obj); evas_object_stack_above(en->cursor_fg, rp->object); evas_object_clip_set(en->cursor_fg, evas_object_clip_get(rp->object)); - evas_object_pass_events_set(en->cursor_fg, 1); + evas_object_pass_events_set(en->cursor_fg, EINA_TRUE); rp->edje->subobjs = eina_list_append(rp->edje->subobjs, en->cursor_fg); - + if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE) { - evas_object_show(en->cursor_bg); - evas_object_show(en->cursor_fg); + evas_object_show(en->cursor_bg); + evas_object_show(en->cursor_fg); #ifdef HAVE_ECORE_IMF ecore_imf_init(); - + edje_object_signal_callback_add(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb, rp); edje_object_signal_callback_add(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb, rp); - + ctx_id = ecore_imf_context_default_id_get(); if (ctx_id) { @@ -1750,13 +1750,13 @@ } } else - en->imf_context = NULL; - + en->imf_context = NULL; + if (!en->imf_context) goto done; - + ecore_imf_context_client_window_set(en->imf_context, rp->object); ecore_imf_context_client_canvas_set(en->imf_context, rp->edje->evas); - + ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, _edje_entry_imf_retrieve_surrounding_cb, rp); en->imf_ee_handler_commit = ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje); en->imf_ee_handler_delete = ecore_event_handler_add(ECORE_IMF_EVENT_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp); @@ -1766,7 +1766,7 @@ ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL); #endif } - done: +done: en->cursor = (Evas_Textblock_Cursor *)evas_object_textblock_cursor_get(rp->object); } @@ -1793,29 +1793,29 @@ ecore_event_handler_del(en->imf_ee_handler_commit); en->imf_ee_handler_commit = NULL; } - + if (en->imf_ee_handler_delete) { ecore_event_handler_del(en->imf_ee_handler_delete); en->imf_ee_handler_delete = NULL; } - + if (en->imf_ee_handler_changed) { ecore_event_handler_del(en->imf_ee_handler_changed); en->imf_ee_handler_changed = NULL; } - + ecore_imf_context_del(en->imf_context); en->imf_context = NULL; } - + edje_object_signal_callback_del(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb); edje_object_signal_callback_del(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb); ecore_imf_shutdown(); } #endif - + free(en); } @@ -1836,13 +1836,13 @@ if (hh < 1) ww = 1; if (en->cursor_bg) { - evas_object_move(en->cursor_bg, x + xx, y + yy); - evas_object_resize(en->cursor_bg, ww, hh); + evas_object_move(en->cursor_bg, x + xx, y + yy); + evas_object_resize(en->cursor_bg, ww, hh); } if (en->cursor_fg) { - evas_object_move(en->cursor_fg, x + xx, y + yy); - evas_object_resize(en->cursor_fg, ww, hh); + evas_object_move(en->cursor_fg, x + xx, y + yy); + evas_object_resize(en->cursor_fg, ww, hh); } } @@ -1853,8 +1853,8 @@ if (!en) return NULL; // get selection - convert to markup if ((!en->selection) && (en->have_selection)) - en->selection = evas_textblock_cursor_range_text_get - (en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP); + en->selection = evas_textblock_cursor_range_text_get + (en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP); return en->selection; } @@ -1875,18 +1875,18 @@ // set text as markup _sel_clear(en->cursor, rp->object, en); evas_object_textblock_text_markup_set(rp->object, text); -/* +/* evas_textblock_cursor_paragraph_last(en->cursor); if (!evas_textblock_cursor_node_format_get(en->cursor)) { - evas_textblock_cursor_format_append(en->cursor, "\n"); + evas_textblock_cursor_format_append(en->cursor, "\n"); } else if (!((!strcmp(evas_textblock_cursor_node_format_get(en->cursor), "\n")) || - (!strcmp(evas_textblock_cursor_node_format_get(en->cursor), "\\n")))) + (!strcmp(evas_textblock_cursor_node_format_get(en->cursor), "\\n")))) { - evas_textblock_cursor_format_append(en->cursor, "\n"); + 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); @@ -1899,7 +1899,7 @@ if (!en) return; // prepend markup @ cursor pos if (en->have_selection) - _range_del(en->cursor, rp->object, en); + _range_del(en->cursor, rp->object, en); _sel_clear(en->cursor, rp->object, en); //xx evas_object_textblock_text_markup_prepend(en->cursor, text); @@ -1907,7 +1907,7 @@ _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); - + #ifdef HAVE_ECORE_IMF if (en->imf_context) { @@ -1963,7 +1963,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } @@ -1985,7 +1985,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } @@ -2004,7 +2004,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } @@ -2014,13 +2014,13 @@ Entry *en = rp->entry_data; Eina_List *l; Anchor *an; - + if (!en) return NULL; EINA_LIST_FOREACH(en->anchors, l, an) { if (an->item) continue; - if (!strcmp(anchor, an->name)) - return an->sel; + if (!strcmp(anchor, an->name)) + return an->sel; } return NULL; } @@ -2036,13 +2036,13 @@ if (!en->anchorlist) { EINA_LIST_FOREACH(en->anchors, l, an) - { - const char *n = an->name; + { + const char *n = an->name; if (an->item) continue; - if (!n) n = ""; - anchors = eina_list_append(anchors, strdup(n)); - } - en->anchorlist = anchors; + if (!n) n = ""; + anchors = eina_list_append(anchors, strdup(n)); + } + en->anchorlist = anchors; } return en->anchorlist; } @@ -2053,12 +2053,12 @@ Entry *en = rp->entry_data; Eina_List *l; Anchor *an; - + if (!en) return EINA_FALSE; EINA_LIST_FOREACH(en->anchors, l, an) { if (an->item) continue; - if (!strcmp(item, an->name)) + if (!strcmp(item, an->name)) { evas_textblock_cursor_format_item_geometry_get(an->start, cx, cy, cw, ch); return EINA_TRUE; @@ -2078,13 +2078,13 @@ if (!en->itemlist) { EINA_LIST_FOREACH(en->anchors, l, an) - { - const char *n = an->name; + { + const char *n = an->name; if (an->item) continue; - if (!n) n = ""; - items = eina_list_append(items, strdup(n)); - } - en->itemlist = items; + if (!n) n = ""; + items = eina_list_append(items, strdup(n)); + } + en->itemlist = items; } return en->itemlist; } @@ -2113,15 +2113,15 @@ { Entry *en = rp->entry_data; if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) - return; + return; en->select_allow = allow; } Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp) { - const Entry *en = rp->entry_data; - return en->select_allow; + const Entry *en = rp->entry_data; + return en->select_allow; } void @@ -2140,7 +2140,7 @@ evas_textblock_cursor_pos_get(en->cursor)); } #endif - + _edje_entry_real_part_configure(rp); } } @@ -2153,30 +2153,30 @@ switch (cur) { - case EDJE_CURSOR_MAIN: - return en->cursor; - case EDJE_CURSOR_SELECTION_BEGIN: - return en->sel_start; - case EDJE_CURSOR_SELECTION_END: - return en->sel_end; - case EDJE_CURSOR_PREEDIT_START: - if (!en->preedit_start) - en->preedit_start = evas_object_textblock_cursor_new(rp->object); - return en->preedit_start; - case EDJE_CURSOR_PREEDIT_END: - if (!en->preedit_end) - en->preedit_end = evas_object_textblock_... [truncated message content] |
From: Enlightenment S. <no-...@en...> - 2010-10-06 18:23:08
|
Log: Edje entry: Fixed the hack that was used in edje_entry for drawing anchors (the hack was there because of a bug in textblock which is now fixed). Author: tasn Date: 2010-10-06 11:23:01 -0700 (Wed, 06 Oct 2010) New Revision: 53107 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-10-06 18:03:30 UTC (rev 53106) +++ trunk/edje/src/lib/edje_entry.c 2010-10-06 18:23:01 UTC (rev 53107) @@ -886,8 +886,6 @@ if (an) { evas_textblock_cursor_at_format_set(an->end, node); - /* Go before the format */ - evas_textblock_cursor_char_prev(an->end); if (!evas_textblock_cursor_compare(an->start, an->end)) { if (an->name) free(an->name); |
From: Enlightenment S. <no-...@en...> - 2010-10-12 12:22:50
|
Log: Edje text: Fix text cutting (esipsis) with non-english. evas_object_text_last_up_to_pos returns index, not byte-index. Author: tasn Date: 2010-10-12 05:22:43 -0700 (Tue, 12 Oct 2010) New Revision: 53304 Modified: trunk/edje/src/lib/edje_text.c Modified: trunk/edje/src/lib/edje_text.c =================================================================== --- trunk/edje/src/lib/edje_text.c 2010-10-12 11:49:18 UTC (rev 53303) +++ trunk/edje/src/lib/edje_text.c 2010-10-12 12:22:43 UTC (rev 53304) @@ -117,8 +117,10 @@ { Evas_Coord tw = 0, th = 0, p; int l, r; + int i; char *buf; - int c1 = -1, c2 = -1, loop = 0, extra; + int uc1 = -1, uc2 = -1, c1 = -1, c2 = -1; + int loop = 0, extra; size_t orig_len; FLOAT_T sc; @@ -142,23 +144,23 @@ { if (params->type.text.elipsis != 0.0) /* should be the last in text! not the rightmost */ - c1 = evas_object_text_last_up_to_pos(ep->object, + uc1 = evas_object_text_last_up_to_pos(ep->object, -p + l, th / 2); if (params->type.text.elipsis != 1.0) /* should be the last in text! not the rightmost */ - c2 = evas_object_text_last_up_to_pos(ep->object, + uc2 = evas_object_text_last_up_to_pos(ep->object, -p + sw - r, th / 2); - if ((c1 < 0) && (c2 < 0)) + if ((uc1 < 0) && (uc2 < 0)) { - c1 = 0; - c2 = 0; + uc1 = 0; + uc2 = 0; } } - if (!(((c1 >= 0) || (c2 >= 0)) && (tw > sw))) + if (!(((uc1 >= 0) || (uc2 >= 0)) && (tw > sw))) return text; - if ((c1 == 0) && (c2 == 0)) + if ((uc1 == 0) && (uc2 == 0)) return text; orig_len = strlen(text); @@ -172,6 +174,25 @@ if (!(buf = malloc(orig_len + extra))) return text; + /* Convert uc1, uc2 -> c1, c2 */ + i = 0; + if (uc1 > 0) + { + c1 = 0; + for ( ; i < uc1 ; i++) + { + c1 = evas_string_char_next_get(text, c1, NULL); + } + } + if (uc2 > 0) + { + c2 = c1; + for ( ; i < uc2 ; i++) + { + c2 = evas_string_char_next_get(text, c2, NULL); + } + } + while (((c1 >= 0) || (c2 >= 0)) && (tw > sw)) { loop++; |
From: Enlightenment S. <no-...@en...> - 2010-10-12 14:13:31
|
Log: Edje entry: removed some unwanted commented out code. Author: tasn Date: 2010-10-12 07:13:22 -0700 (Tue, 12 Oct 2010) New Revision: 53306 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-10-12 13:26:18 UTC (rev 53305) +++ trunk/edje/src/lib/edje_entry.c 2010-10-12 14:13:22 UTC (rev 53306) @@ -1901,18 +1901,7 @@ // set text as markup _sel_clear(en->cursor, rp->object, en); evas_object_textblock_text_markup_set(rp->object, text); -/* - evas_textblock_cursor_paragraph_last(en->cursor); - if (!evas_textblock_cursor_node_format_get(en->cursor)) - { - evas_textblock_cursor_format_append(en->cursor, "\n"); - } - else if (!((!strcmp(evas_textblock_cursor_node_format_get(en->cursor), "\n")) || - (!strcmp(evas_textblock_cursor_node_format_get(en->cursor), "\\n")))) - { - 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-10-14 07:50:40
|
Log: Edje entry: Fixed a memory leak. Removed an unwanted selection clear, and renamed preedit strings functions to have a more adequate name. - Patch by Jihoon Kim. Author: tasn Date: 2010-10-14 00:50:32 -0700 (Thu, 14 Oct 2010) New Revision: 53390 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-10-14 03:51:58 UTC (rev 53389) +++ trunk/edje/src/lib/edje_entry.c 2010-10-14 07:50:32 UTC (rev 53390) @@ -4,7 +4,7 @@ static Eina_Bool _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos); static Eina_Bool _edje_entry_imf_event_commit_cb(void *data, int type, void *event); -static Eina_Bool _edje_entry_imf_event_changed_cb(void *data, int type, void *event); +static Eina_Bool _edje_entry_imf_event_preedit_changed_cb(void *data, int type, void *event); static Eina_Bool _edje_entry_imf_event_delete_surrounding_cb(void *data, int type, void *event); #endif @@ -1784,9 +1784,9 @@ ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, _edje_entry_imf_retrieve_surrounding_cb, rp); - en->imf_ee_handler_commit = ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje); + en->imf_ee_handler_commit = ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje); en->imf_ee_handler_delete = ecore_event_handler_add(ECORE_IMF_EVENT_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp); - en->imf_ee_handler_changed = ecore_event_handler_add(ECORE_IMF_EVENT_PREEDIT_CHANGED, _edje_entry_imf_event_changed_cb, rp->edje); + en->imf_ee_handler_changed = ecore_event_handler_add(ECORE_IMF_EVENT_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb, rp->edje); ecore_imf_context_input_mode_set(en->imf_context, rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ? ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL); @@ -2490,7 +2490,7 @@ } #ifdef HAVE_ECORE_IMF -static Eina_Bool +static Eina_Bool _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, char **text, int *cursor_pos) { Edje_Real_Part *rp = data; @@ -2543,7 +2543,6 @@ { for (i = 0; i < en->comp_len; i++) _backspace(en->cursor, rp->object, en); - _sel_clear(en->cursor, rp->object, en); en->have_composition = EINA_FALSE; } @@ -2560,7 +2559,7 @@ } static Eina_Bool -_edje_entry_imf_event_changed_cb(void *data, int type __UNUSED__, void *event) +_edje_entry_imf_event_preedit_changed_cb(void *data, int type __UNUSED__, void *event) { Edje* ed = data; Edje_Real_Part *rp = ed->focused_part; @@ -2612,6 +2611,8 @@ _edje_emit(rp->edje, "entry,changed", rp->part->name); _edje_emit(ed, "cursor,changed", rp->part->name); + free(preedit_string); + return ECORE_CALLBACK_DONE; } |
From: Enlightenment S. <no-...@en...> - 2010-10-20 10:34:33
|
Log: Edje entry: Init preedit_len on focus out. Rename 'composition' to 'preedit' in the preedit handling. Patch by Jihoon Kim. Author: tasn Date: 2010-10-20 03:34:26 -0700 (Wed, 20 Oct 2010) New Revision: 53651 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-10-20 10:30:02 UTC (rev 53650) +++ trunk/edje/src/lib/edje_entry.c 2010-10-20 10:34:26 UTC (rev 53651) @@ -35,8 +35,8 @@ Eina_Bool had_sel : 1; #ifdef HAVE_ECORE_IMF - int comp_len; - Eina_Bool have_composition : 1; + int preedit_len; + Eina_Bool have_preedit : 1; Ecore_IMF_Context *imf_context; Ecore_Event_Handler *imf_ee_handler_commit; @@ -95,6 +95,9 @@ ecore_imf_context_reset(en->imf_context); ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor)); ecore_imf_context_focus_out(en->imf_context); + + en->preedit_len = 0; + en->have_preedit = EINA_FALSE; } #endif @@ -143,13 +146,14 @@ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) return; - 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)); - ecore_imf_context_focus_out(en->imf_context); - } + if (!en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor)); + ecore_imf_context_focus_out(en->imf_context); + + en->preedit_len = 0; + en->have_preedit = EINA_FALSE; #endif } @@ -774,7 +778,7 @@ if (!evas_textblock_cursor_format_item_geometry_get (an->start, &cx, &cy, &cw, &ch)) - continue; + continue; evas_object_move(sel->obj, x + cx, y + cy); evas_object_resize(sel->obj, cw, ch); } @@ -802,7 +806,7 @@ range = eina_list_remove_list(range, range); free(r); } - } + } } } @@ -2479,6 +2483,7 @@ static char *s = NULL; Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return NULL; if (s) { free(s); @@ -2539,11 +2544,11 @@ _sel_clear(en->cursor, rp->object, en); } - if (en->have_composition) + if (en->have_preedit) { - for (i = 0; i < en->comp_len; i++) + for (i = 0; i < en->preedit_len; i++) _backspace(en->cursor, rp->object, en); - en->have_composition = EINA_FALSE; + en->have_preedit = EINA_FALSE; } //yy @@ -2564,9 +2569,9 @@ Edje* ed = data; Edje_Real_Part *rp = ed->focused_part; Entry *en; - int length; + int length = 0; Ecore_IMF_Event_Commit *ev = event; - int i; + int i = 0; char *preedit_string; if (!rp) return ECORE_CALLBACK_PASS_ON; @@ -2592,15 +2597,15 @@ _sel_clear(en->cursor, rp->object, en); } - if (en->have_composition) + if (en->have_preedit) { - // delete the composing characters - for (i = 0;i < en->comp_len; i++) + // delete the preedit characters + for (i = 0;i < en->preedit_len; i++) _backspace(en->cursor, rp->object, en); } - en->comp_len = length; - en->have_composition = EINA_TRUE; + en->preedit_len = length; + en->have_preedit = EINA_TRUE; //xx // evas_object_textblock_text_markup_prepend(en->cursor, preedit_string); |
From: Enlightenment S. <no-...@en...> - 2010-10-21 08:23:52
|
Log: Edje entry: Fixed _edje_entry_imf_event_delete_surrounding_cb to actually delete, which it wasn't doing. Patch by Jihoon Kim. Author: tasn Date: 2010-10-21 01:23:45 -0700 (Thu, 21 Oct 2010) New Revision: 53709 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-10-21 08:01:52 UTC (rev 53708) +++ trunk/edje/src/lib/edje_entry.c 2010-10-21 08:23:45 UTC (rev 53709) @@ -2628,6 +2628,8 @@ Edje_Real_Part *rp = ed->focused_part; Entry *en; Ecore_IMF_Event_Delete_Surrounding *ev = event; + Evas_Textblock_Cursor *del_start, *del_end; + int cursor_pos; if (!rp) return ECORE_CALLBACK_PASS_ON; en = rp->entry_data; @@ -2637,6 +2639,19 @@ if (en->imf_context != ev->ctx) return ECORE_CALLBACK_PASS_ON; + cursor_pos = evas_textblock_cursor_pos_get(en->cursor); + + del_start = evas_object_textblock_cursor_new(en->rp->object); + evas_textblock_cursor_pos_set(del_start, cursor_pos + ev->offset); + + del_end = evas_object_textblock_cursor_new(en->rp->object); + evas_textblock_cursor_pos_set(del_end, cursor_pos + ev->offset + ev->n_chars); + + evas_textblock_cursor_range_delete(del_start, del_end); + + evas_textblock_cursor_free(del_start); + evas_textblock_cursor_free(del_end); + return ECORE_CALLBACK_DONE; } #endif |
From: Enlightenment S. <no-...@en...> - 2010-11-09 13:36:59
|
Log: Edje entry: Fix support mouse down/up/move filter events. Passing the correct data to _edje_entry_imf_event_delete_surrounding_cb and _edje_entry_imf_retrieve_surrounding_cb Fix indentation. Patch by Jihoon Kim. Author: tasn Date: 2010-11-09 05:36:52 -0800 (Tue, 09 Nov 2010) New Revision: 54365 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-11-09 13:22:56 UTC (rev 54364) +++ trunk/edje/src/lib/edje_entry.c 2010-11-09 13:36:52 UTC (rev 54365) @@ -120,11 +120,10 @@ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) return; - if (en->imf_context) - { - ecore_imf_context_reset(en->imf_context); - ecore_imf_context_focus_in(en->imf_context); - } + if (!en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_focus_in(en->imf_context); #endif } @@ -1303,6 +1302,7 @@ } if ((evas_textblock_cursor_compare(tc, en->cursor)) && (!cursor_changed)) _edje_emit(ed, "cursor,changed", rp->part->name); + evas_textblock_cursor_free(tc); #ifdef HAVE_ECORE_IMF if (en->imf_context) @@ -1313,7 +1313,6 @@ } #endif - evas_textblock_cursor_free(tc); _edje_entry_real_part_configure(rp); } @@ -1365,6 +1364,19 @@ return; } if (ev->button != 1) return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Down ecore_ev; + ecore_imf_evas_event_mouse_down_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_DOWN, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + en->select_mod_start = EINA_FALSE; en->select_mod_end = EINA_FALSE; if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) @@ -1469,6 +1481,7 @@ } 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) @@ -1479,7 +1492,6 @@ } #endif - evas_textblock_cursor_free(tc); _edje_entry_real_part_configure(rp); } @@ -1498,6 +1510,19 @@ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Up ecore_ev; + ecore_imf_evas_event_mouse_up_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_UP, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + tc = evas_object_textblock_cursor_new(rp->object); evas_textblock_cursor_copy(en->cursor, tc); evas_object_geometry_get(rp->object, &x, &y, &w, &h); @@ -1582,6 +1607,19 @@ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Move ecore_ev; + ecore_imf_evas_event_mouse_move_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_MOVE, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + if (en->selecting) { tc = evas_object_textblock_cursor_new(rp->object); @@ -1648,9 +1686,10 @@ { Edje *ed = (Edje *)data; - if (evas_focus_get(e) == ed->obj) { + if (evas_focus_get(e) == ed->obj) + { _edje_focus_in_cb(data, NULL, NULL, NULL); - } + } } static void @@ -1658,9 +1697,10 @@ { Edje *ed = (Edje *)data; - if (evas_focus_get(e) == ed->obj) { + if (evas_focus_get(e) == ed->obj) + { _edje_focus_out_cb(data, NULL, NULL, NULL); - } + } } /***************************************************************/ @@ -1719,7 +1759,7 @@ evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_MOVE, _edje_part_mouse_move_cb, rp); if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) - en->select_allow = 1; + en->select_allow = EINA_TRUE; if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) { @@ -1727,7 +1767,7 @@ txt = (Edje_Part_Description_Text *) rp->chosen_description; - en->select_allow = 0; + en->select_allow = EINA_FALSE; if (txt && edje_string_get(&txt->text.repch)) evas_object_textblock_replace_char_set(rp->object, edje_string_get(&txt->text.repch)); else @@ -1787,9 +1827,9 @@ ecore_imf_context_client_canvas_set(en->imf_context, rp->edje->evas); ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, - _edje_entry_imf_retrieve_surrounding_cb, rp); + _edje_entry_imf_retrieve_surrounding_cb, rp->edje); en->imf_ee_handler_commit = ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje); - en->imf_ee_handler_delete = ecore_event_handler_add(ECORE_IMF_EVENT_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp); + en->imf_ee_handler_delete = ecore_event_handler_add(ECORE_IMF_EVENT_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp->edje); en->imf_ee_handler_changed = ecore_event_handler_add(ECORE_IMF_EVENT_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb, rp->edje); ecore_imf_context_input_mode_set(en->imf_context, rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ? @@ -2498,7 +2538,8 @@ static Eina_Bool _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, char **text, int *cursor_pos) { - Edje_Real_Part *rp = data; + Edje* ed = data; + Edje_Real_Part *rp = ed->focused_part; Entry *en; const char *str; @@ -2570,7 +2611,7 @@ Edje_Real_Part *rp = ed->focused_part; Entry *en; int length = 0; - Ecore_IMF_Event_Commit *ev = event; + Ecore_IMF_Event_Preedit_Changed *ev = event; int i = 0; char *preedit_string; @@ -2637,6 +2678,7 @@ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) return ECORE_CALLBACK_PASS_ON; + if (!en->imf_context) return ECORE_CALLBACK_PASS_ON; if (en->imf_context != ev->ctx) return ECORE_CALLBACK_PASS_ON; cursor_pos = evas_textblock_cursor_pos_get(en->cursor); |
From: Enlightenment S. <no-...@en...> - 2010-11-30 11:06:34
|
Log: Edje entry: Fixed bug with preedit string. The text was committed to the current cursor position instead of the preedit cursor position (which may be different if you click the mouse somewhere in the tetx). Patch by Jihoon Kim. Author: tasn Date: 2010-11-30 03:06:22 -0800 (Tue, 30 Nov 2010) New Revision: 55080 Trac: http://trac.enlightenment.org/e/changeset/55080 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-11-30 09:39:23 UTC (rev 55079) +++ trunk/edje/src/lib/edje_entry.c 2010-11-30 11:06:22 UTC (rev 55080) @@ -34,8 +34,7 @@ Eina_Bool select_mod_end : 1; Eina_Bool had_sel : 1; -#ifdef HAVE_ECORE_IMF - int preedit_len; +#ifdef HAVE_ECORE_IMF Eina_Bool have_preedit : 1; Ecore_IMF_Context *imf_context; @@ -60,7 +59,36 @@ Eina_Bool item : 1; }; -#ifdef HAVE_ECORE_IMF +#ifdef HAVE_ECORE_IMF +static void +_preedit_clear(Entry *en) +{ + if (en->preedit_start) + { + evas_textblock_cursor_free(en->preedit_start); + en->preedit_start = NULL; + } + + if (en->preedit_end) + { + evas_textblock_cursor_free(en->preedit_end); + en->preedit_end = NULL; + } + + en->have_preedit = EINA_FALSE; +} + +static void +_preedit_del(Entry *en) +{ + if (!en || !en->have_preedit) return; + if (!en->preedit_start || !en->preedit_end) return; + if (!evas_textblock_cursor_compare(en->preedit_start, en->preedit_end)) return; + + /* delete the preedit characters */ + evas_textblock_cursor_range_delete(en->preedit_start, en->preedit_end); +} + static void _edje_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { @@ -95,9 +123,6 @@ ecore_imf_context_reset(en->imf_context); ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor)); ecore_imf_context_focus_out(en->imf_context); - - en->preedit_len = 0; - en->have_preedit = EINA_FALSE; } #endif @@ -150,14 +175,11 @@ ecore_imf_context_reset(en->imf_context); ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor)); ecore_imf_context_focus_out(en->imf_context); - - en->preedit_len = 0; - en->have_preedit = EINA_FALSE; #endif } static void -_text_filter_text_prepend(Entry *en, const char *text) +_text_filter_text_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) { char *text2; Edje_Text_Insert_Filter_Callback *cb; @@ -174,13 +196,13 @@ } if (text2) { - evas_textblock_cursor_text_prepend(en->cursor, text2); + evas_textblock_cursor_text_prepend(c, text2); free(text2); } } static void -_text_filter_format_prepend(Entry *en, const char *text) +_text_filter_format_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) { char *text2; Edje_Text_Insert_Filter_Callback *cb; @@ -197,13 +219,13 @@ } if (text2) { - evas_textblock_cursor_format_prepend(en->cursor, text2); + evas_textblock_cursor_format_prepend(c, text2); free(text2); } } static void -_text_filter_markup_prepend(Entry *en, const char *text) +_text_filter_markup_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) { char *text2; Edje_Text_Insert_Filter_Callback *cb; @@ -220,7 +242,7 @@ } if (text2) { - evas_object_textblock_text_markup_prepend(en->cursor, text2); + evas_object_textblock_text_markup_prepend(c, text2); free(text2); } } @@ -387,6 +409,12 @@ en->selection = NULL; } _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); + +#ifdef HAVE_ECORE_IMF + if (!en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); +#endif } static void @@ -402,6 +430,11 @@ en->selection = NULL; } _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); + +#ifdef HAVE_ECORE_IMF + if (!en->imf_context) return; + ecore_imf_context_reset(en->imf_context); +#endif } static void @@ -1210,7 +1243,7 @@ { //yy // evas_textblock_cursor_format_prepend(en->cursor, "\t"); - _text_filter_format_prepend(en, "\t"); + _text_filter_format_prepend(en, en->cursor, "\t"); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); @@ -1265,13 +1298,13 @@ { //yy // evas_textblock_cursor_format_prepend(en->cursor, "\n"); - _text_filter_format_prepend(en, "\n"); + _text_filter_format_prepend(en, en->cursor, "\n"); } else { //yy // evas_textblock_cursor_format_prepend(en->cursor, "ps"); - _text_filter_format_prepend(en, "ps"); + _text_filter_format_prepend(en, en->cursor, "ps"); } _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); @@ -1291,7 +1324,7 @@ _sel_clear(en->cursor, rp->object, en); //zz // evas_textblock_cursor_text_prepend(en->cursor, ev->string); - _text_filter_text_prepend(en, ev->string); + _text_filter_text_prepend(en, en->cursor, ev->string); _curs_update_from_curs(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); @@ -1848,6 +1881,7 @@ rp->entry_data = NULL; _sel_clear(en->cursor, rp->object, en); _anchors_clear(en->cursor, rp->object, en); + _preedit_clear(en); rp->edje->subobjs = eina_list_remove(rp->edje->subobjs, en->cursor_bg); rp->edje->subobjs = eina_list_remove(rp->edje->subobjs, en->cursor_fg); evas_object_del(en->cursor_bg); @@ -1962,7 +1996,7 @@ _sel_clear(en->cursor, rp->object, en); //xx // evas_object_textblock_text_markup_prepend(en->cursor, text); - _text_filter_markup_prepend(en, text); + _text_filter_markup_prepend(en, en->cursor, text); _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); @@ -2568,7 +2602,8 @@ Edje_Real_Part *rp = ed->focused_part; Entry *en; Ecore_IMF_Event_Commit *ev = event; - int i; + Evas_Textblock_Cursor *tc; + Eina_Bool cursor_move = EINA_FALSE; if (!rp) return ECORE_CALLBACK_PASS_ON; @@ -2577,25 +2612,46 @@ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) return ECORE_CALLBACK_PASS_ON; + if (!en->imf_context) return ECORE_CALLBACK_PASS_ON; if (en->imf_context != ev->ctx) return ECORE_CALLBACK_PASS_ON; if (en->have_selection) { - _range_del(en->cursor, rp->object, en); - _sel_clear(en->cursor, rp->object, en); + if (strcmp(ev->str, "")) + { + /* delete selected characters */ + _range_del(en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); + } } - if (en->have_preedit) - { - for (i = 0; i < en->preedit_len; i++) - _backspace(en->cursor, rp->object, en); - en->have_preedit = EINA_FALSE; - } + tc = evas_object_textblock_cursor_new(rp->object); + /* calculate the cursor position to insert commit string */ + if (en->preedit_start) + evas_textblock_cursor_copy(en->preedit_start, tc); + else + evas_textblock_cursor_copy(en->cursor, tc); + + /* delete preedit characters */ + _preedit_del(en); + _preedit_clear(en); + + if (evas_textblock_cursor_compare(en->cursor, tc)) + cursor_move = EINA_TRUE; + //yy // evas_textblock_cursor_text_prepend(en->cursor, ev->str); - _text_filter_text_prepend(en, ev->str); + _text_filter_text_prepend(en, tc, ev->str); + if (!cursor_move) + { + /* move cursor to the end of commit string */ + evas_textblock_cursor_copy(tc, en->cursor); + } + + evas_textblock_cursor_free(tc); + _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); @@ -2610,10 +2666,12 @@ Edje* ed = data; Edje_Real_Part *rp = ed->focused_part; Entry *en; - int length = 0; Ecore_IMF_Event_Preedit_Changed *ev = event; - int i = 0; + int cursor_pos; + int preedit_start_pos, preedit_end_pos; char *preedit_string; + int i; + Eina_Bool preedit_end_state = EINA_FALSE; if (!rp) return ECORE_CALLBACK_PASS_ON; @@ -2626,32 +2684,56 @@ if (en->imf_context != ev->ctx) return ECORE_CALLBACK_PASS_ON; - ecore_imf_context_preedit_string_get(en->imf_context, &preedit_string, &length); + ecore_imf_context_preedit_string_get(en->imf_context, &preedit_string, &cursor_pos); - // FIXME : check the maximum length of evas_textblock - if ( 0 /* check the maximum length of evas_textblock */ ) - return ECORE_CALLBACK_PASS_ON; + if (!strcmp(preedit_string, "")) + preedit_end_state = EINA_TRUE; - if (en->have_selection) + if (en->have_selection && !preedit_end_state) { + /* delete selected characters */ _range_del(en->cursor, rp->object, en); _sel_clear(en->cursor, rp->object, en); } - if (en->have_preedit) - { - // delete the preedit characters - for (i = 0;i < en->preedit_len; i++) - _backspace(en->cursor, rp->object, en); - } + /* delete preedit characters */ + _preedit_del(en); - en->preedit_len = length; - en->have_preedit = EINA_TRUE; + preedit_start_pos = evas_textblock_cursor_pos_get(en->cursor); + /* insert preedit character(s) */ //xx // evas_object_textblock_text_markup_prepend(en->cursor, preedit_string); - _text_filter_markup_prepend(en, preedit_string); + _text_filter_markup_prepend(en, en->cursor, preedit_string); + if (!preedit_end_state) + { + /* set preedit start cursor */ + if (!en->preedit_start) + en->preedit_start = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, en->preedit_start); + + /* set preedit end cursor */ + if (!en->preedit_end) + en->preedit_end = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, en->preedit_end); + + preedit_end_pos = evas_textblock_cursor_pos_get(en->cursor); + + for (i = 0; i < (preedit_end_pos - preedit_start_pos); i++) + { + evas_textblock_cursor_char_prev(en->preedit_start); + } + } + + if (!preedit_end_state) + { + en->have_preedit = EINA_TRUE; + + /* set cursor position */ + evas_textblock_cursor_pos_set(en->cursor, preedit_start_pos + cursor_pos); + } + _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); |
From: Enlightenment S. <no-...@en...> - 2011-02-02 09:03:49
|
Log: Edje: Fixed the docs of mirrored mode to include starting version. Author: tasn Date: 2011-02-02 01:03:43 -0800 (Wed, 02 Feb 2011) New Revision: 56647 Trac: http://trac.enlightenment.org/e/changeset/56647 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2011-02-02 09:01:26 UTC (rev 56646) +++ trunk/edje/src/lib/edje_util.c 2011-02-02 09:03:43 UTC (rev 56647) @@ -268,8 +268,8 @@ * * @param obj the smart object * @return if flag is set or not. - * - **/ + * @since 1.1.0 + */ EAPI Eina_Bool edje_object_mirrored_get(const Evas_Object *obj) { @@ -295,8 +295,8 @@ * * @param obj the smart object * @rtl new value of flag EINA_TRUE/EINA_FALSE - * - **/ + * @since 1.1.0 + */ EAPI void edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl) { |
From: Enlightenment S. <no-...@en...> - 2011-02-03 08:55:47
|
Log: Edje text: Use the ellipsis char instead of 3 dots. Author: tasn Date: 2011-02-03 00:55:40 -0800 (Thu, 03 Feb 2011) New Revision: 56670 Trac: http://trac.enlightenment.org/e/changeset/56670 Modified: trunk/edje/src/lib/edje_text.c Modified: trunk/edje/src/lib/edje_text.c =================================================================== --- trunk/edje/src/lib/edje_text.c 2011-02-03 08:23:19 UTC (rev 56669) +++ trunk/edje/src/lib/edje_text.c 2011-02-03 08:55:40 UTC (rev 56670) @@ -1,6 +1,6 @@ #include "edje_private.h" +#define _ELLIP_STR "\xE2\x80\xA6" - /* returns with and height for this part. * * depending on the value of the use_alternate_font_metrics flag, it will @@ -86,12 +86,12 @@ if (c1 >= 0) { - strcpy(buf, "..."); + strcpy(buf, _ELLIP_STR); if (c2 >= 0) { strncat(buf, text + c1, c2 - c1); - strcat(buf, "..."); + strcat(buf, _ELLIP_STR); } else strcat(buf, text + c1); @@ -102,7 +102,7 @@ { strncpy(buf, text, c2); buf[c2] = 0; - strcat(buf, "..."); + strcat(buf, _ELLIP_STR); } else strcpy(buf, text); |
From: Enlightenment S. <no-...@en...> - 2011-02-03 10:16:55
|
Log: Edje mirrored-mode: Fixed compilation warning. Author: tasn Date: 2011-02-03 02:16:48 -0800 (Thu, 03 Feb 2011) New Revision: 56672 Trac: http://trac.enlightenment.org/e/changeset/56672 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2011-02-03 09:45:29 UTC (rev 56671) +++ trunk/edje/src/lib/edje_util.c 2011-02-03 10:16:48 UTC (rev 56672) @@ -301,7 +301,7 @@ edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl) { Edje *ed; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return; |
From: Enlightenment S. <no-...@en...> - 2011-02-27 18:09:07
|
Log: Edje text: Fixed a bug with fit_x and cleaned everything up. There was a bug that cause bad sizing (by 1pt) when fit was set, this is now fixed. Furthermore, for some reason we had a loop although we already jumped to the last value right at the start. That didn't make any sense, so I removed that as well. Author: tasn Date: 2011-02-27 10:09:00 -0800 (Sun, 27 Feb 2011) New Revision: 57394 Trac: http://trac.enlightenment.org/e/changeset/57394 Modified: trunk/edje/src/lib/edje_text.c Modified: trunk/edje/src/lib/edje_text.c =================================================================== --- trunk/edje/src/lib/edje_text.c 2011-02-27 17:19:48 UTC (rev 57393) +++ trunk/edje/src/lib/edje_text.c 2011-02-27 18:09:00 UTC (rev 57394) @@ -428,39 +428,32 @@ evas_object_text_font_set(ep->object, font, size); evas_object_text_text_set(ep->object, text); part_get_geometry(ep, &tw, &th); - if (tw > sw) - { - while ((tw > sw) && (size > 0) && (tw != 0)) - { - int psize = size; - size = (size * sw) / tw; - if ((psize - size) <= 0) size = psize - 1; - if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); - else evas_object_text_font_source_set(ep->object, NULL); + /* Find the wanted font size */ + if ((tw > sw) && (size > 0) && (tw != 0)) + { + size = (size * sw) / tw; - if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); - evas_object_text_font_set(ep->object, font, size); - part_get_geometry(ep, &tw, &th); - if ((size > 0) && (tw == 0)) break; - } - } - else if (tw < sw) - { - while ((tw < sw) && (size > 0) && (tw != 0)) - { - int psize = size; - size = (size * sw) / tw; - /* fprintf(stderr, "size = %i (%i, %i)\n", size, sw, tw); */ - if ((psize - size) >= 0) size = psize + 1; - if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); - else evas_object_text_font_source_set(ep->object, NULL); + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); - if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); - evas_object_text_font_set(ep->object, font, size); - part_get_geometry(ep, &tw, &th); - if ((size > 0) && (tw == 0)) break; - } + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + part_get_geometry(ep, &tw, &th); } + else if ((tw < sw) && (size > 0) && (tw != 0)) + { + size = (size * sw) / tw; + + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + part_get_geometry(ep, &tw, &th); + } + /* FIXME: This should possibly be replaced by more proper handling, + * but it's still way better than what was here before. */ + if (tw > sw) size--; } if (chosen_desc->text.fit_y && (ep->text.cache.in_str && eina_stringshare_strlen(ep->text.cache.in_str) > 0)) { |
From: Enlightenment S. <no-...@en...> - 2011-02-28 13:27:23
|
Log: Edje: Bumped EDJE_FILE_MINOR for the previous size_range changes. Author: tasn Date: 2011-02-28 05:27:15 -0800 (Mon, 28 Feb 2011) New Revision: 57412 Trac: http://trac.enlightenment.org/e/changeset/57412 Modified: trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2011-02-28 13:25:46 UTC (rev 57411) +++ trunk/edje/src/lib/edje_private.h 2011-02-28 13:27:15 UTC (rev 57412) @@ -172,7 +172,7 @@ /* increment this when you add new feature to edje file format without * breaking backward compatibility. */ -#define EDJE_FILE_MINOR 1 +#define EDJE_FILE_MINOR 2 /* FIXME: * |
From: Enlightenment S. <no-...@en...> - 2011-03-14 09:19:15
|
Log: Edje part-text: Updated docs. Author: tasn Date: 2011-03-14 02:19:05 -0700 (Mon, 14 Mar 2011) New Revision: 57733 Trac: http://trac.enlightenment.org/e/changeset/57733 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2011-03-14 04:56:44 UTC (rev 57732) +++ trunk/edje/src/lib/edje_util.c 2011-03-14 09:19:05 UTC (rev 57733) @@ -1912,10 +1912,12 @@ } /** - * @brief XX + * @brief Advances the cursor to the next cursor position. + * @see evas_textblock_cursor_char_next * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur The edje cursor to advance */ EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -1935,10 +1937,12 @@ } /** - * @brief XX + * @brief Moves the cursor to the previous char + * @see evas_textblock_cursor_char_prev * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI Eina_Bool edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -1958,10 +1962,11 @@ } /** - * @brief XX + * @brief Move the cursor to the char above the current cursor position. * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI Eina_Bool edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -1981,10 +1986,11 @@ } /** - * @brief XX + * @brief Moves the cursor to the char below the current cursor position. * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI Eina_Bool edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2004,10 +2010,12 @@ } /** - * @brief XX + * @brief Moves the cursor to the beginning of the text part + * @see evas_textblock_cursor_paragraph_first * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI void edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2026,10 +2034,12 @@ } /** - * @brief XX + * @brief Moves the cursor to the end of the text part. + * @see evas_textblock_cursor_paragraph_last * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI void edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2048,10 +2058,12 @@ } /** - * @brief XX + * @brief Copy the cursor to another cursor. * * @param obj A valid Evas_Object handle * @param part The part name + * @param sry the cursor to copy from + * @param dst the cursor to copy to */ EAPI void edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) @@ -2070,10 +2082,12 @@ } /** - * @brief XX + * @brief Move the cursor to the beginning of the line. + * @see evas_textblock_cursor_line_char_first * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI void edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2092,10 +2106,12 @@ } /** - * @brief XX + * @brief Move the cursor to the end of the line. + * @see evas_textblock_cursor_line_char_last * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur the edje cursor to work on */ EAPI void edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2144,10 +2160,13 @@ } /** - * @brief XX + * @brief Returns whether the cursor points to a format. + * @see evas_textblock_cursor_is_format * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur The cursor to adjust. + * @return EINA_TRUE if it's true, EINA_FALSE otherwise. */ EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2167,10 +2186,13 @@ } /** - * @brief XX + * @brief Return true if the cursor points to a visible format + * For example \t, \n, item and etc. + * @see evas_textblock_cursor_format_is_visible_get * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur The cursor to adjust. */ EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) @@ -2190,10 +2212,12 @@ } /** - * @brief XX + * @brief Returns the content (char) at the cursor position. + * @see evas_textblock_cursor_content_get * * @param obj A valid Evas_Object handle * @param part The part name + * @param cur The cursor to use */ EAPI const char * edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) |