edje: Updated edje to conform with recent textblock changes.

'Return' now inserts a Paragraph Separator.
'Shift + Return' now inserts a New Line.

SVN revision: 50931
This commit is contained in:
Tom Hacohen 2010-08-09 16:25:45 +00:00
parent d5e579c2e9
commit 48180c9859
1 changed files with 67 additions and 268 deletions

View File

@ -81,12 +81,12 @@ struct _Anchor
}; };
#ifdef HAVE_ECORE_IMF #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_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
Entry *en; Entry *en;
rp = data; rp = data;
if (!rp || !rp->entry_data || !rp->edje || !rp->edje->obj) return; if (!rp || !rp->entry_data || !rp->edje || !rp->edje->obj) return;
@ -95,12 +95,12 @@ _edje_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emiss
if (evas_object_focus_get(rp->edje->obj)) if (evas_object_focus_get(rp->edje->obj))
{ {
ecore_imf_context_reset(en->imf_context); ecore_imf_context_reset(en->imf_context);
ecore_imf_context_focus_in(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_entry_focus_out_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
@ -118,7 +118,7 @@ _edje_entry_focus_out_cb(void *data, Evas_Object *o __UNUSED__, const char *emis
} }
#endif #endif
static void static void
_edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Edje *ed = data; Edje *ed = data;
@ -126,26 +126,26 @@ _edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v
Edje_Real_Part *rp; Edje_Real_Part *rp;
Entry *en; Entry *en;
#endif #endif
_edje_emit(ed, "focus,in", ""); _edje_emit(ed, "focus,in", "");
#ifdef HAVE_ECORE_IMF #ifdef HAVE_ECORE_IMF
rp = ed->focused_part; rp = ed->focused_part;
if (rp == NULL) return; if (rp == NULL) return;
en = rp->entry_data; en = rp->entry_data;
if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || 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; return;
if (en->imf_context) if (en->imf_context)
{ {
ecore_imf_context_reset(en->imf_context); ecore_imf_context_reset(en->imf_context);
ecore_imf_context_focus_in(en->imf_context); ecore_imf_context_focus_in(en->imf_context);
} }
#endif #endif
} }
static void static void
_edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Edje *ed = data; Edje *ed = data;
@ -153,34 +153,34 @@ _edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
Edje_Real_Part *rp = ed->focused_part; Edje_Real_Part *rp = ed->focused_part;
Entry *en; Entry *en;
#endif #endif
_edje_emit(ed, "focus,out", ""); _edje_emit(ed, "focus,out", "");
#ifdef HAVE_ECORE_IMF #ifdef HAVE_ECORE_IMF
if (!rp) return; if (!rp) return;
en = rp->entry_data; en = rp->entry_data;
if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || 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; return;
if (en->imf_context) if (en->imf_context)
{ {
ecore_imf_context_reset(en->imf_context); ecore_imf_context_reset(en->imf_context);
ecore_imf_context_cursor_position_set(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); ecore_imf_context_focus_out(en->imf_context);
} }
#endif #endif
} }
// need one for markup and format too - how to do it? extra type param? // 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) _text_filter_prepend(Entry *en, const char *text)
{ {
char *text2; char *text2;
Edje_Text_Insert_Filter_Callback *cb; Edje_Text_Insert_Filter_Callback *cb;
Eina_List *l; Eina_List *l;
text2 = strdup(text); text2 = strdup(text);
EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb)
{ {
@ -193,8 +193,6 @@ _text_filter_prepend(Entry *en, const char *text)
if (text2) if (text2)
{ {
evas_textblock_cursor_text_prepend(en->cursor, 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); free(text2);
} }
} }
@ -212,105 +210,14 @@ _curs_update_from_curs(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entr
static void static void
_curs_back(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _curs_back(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
if (!evas_textblock_cursor_char_prev(c)) 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;
}
}
}
_curs_update_from_curs(c, o, en); _curs_update_from_curs(c, o, en);
} }
static void static void
_curs_next(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _curs_next(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
int ln, ln2, ok; evas_textblock_cursor_char_next(c);
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);
}
_curs_update_from_curs(c, o, en); _curs_update_from_curs(c, o, en);
} }
@ -319,9 +226,9 @@ _curs_line_last_get(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *
{ {
Evas_Textblock_Cursor *cc; Evas_Textblock_Cursor *cc;
int ln; int ln;
cc = evas_object_textblock_cursor_new(o); 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); ln = evas_textblock_cursor_line_geometry_get(cc, NULL, NULL, NULL, NULL);
evas_textblock_cursor_free(cc); evas_textblock_cursor_free(cc);
return ln; return ln;
@ -330,34 +237,29 @@ _curs_line_last_get(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *
static void static void
_curs_lin_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _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); _curs_update_from_curs(c, o, en);
} }
static void static void
_curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
evas_textblock_cursor_line_last(c); evas_textblock_cursor_line_char_last(c);
// if (!evas_textblock_cursor_node_format_get(c))
// _curs_next(c, o, en);
_curs_update_from_curs(c, o, en); _curs_update_from_curs(c, o, en);
} }
static void static void
_curs_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _curs_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
evas_textblock_cursor_line_set(c, 0); evas_textblock_cursor_paragraph_first(c);
evas_textblock_cursor_line_first(c);
_curs_update_from_curs(c, o, en); _curs_update_from_curs(c, o, en);
} }
static void static void
_curs_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _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); _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); _curs_update_from_curs(c, o, en);
} }
@ -380,7 +282,7 @@ _curs_jump_line(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en, int ln)
if (en->cx < (lx + (lw / 2))) if (en->cx < (lx + (lw / 2)))
{ {
if (ln == last) _curs_end(c, o, en); 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); _curs_lin_start(c, o, en);
} }
else else
@ -389,7 +291,7 @@ _curs_jump_line(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en, int ln)
_curs_end(c, o, en); _curs_end(c, o, en);
else else
_curs_lin_end(c, o, en); _curs_lin_end(c, o, en);
// evas_textblock_cursor_line_last(c); // evas_textblock_cursor_line_char_last(c);
} }
} }
@ -923,17 +825,18 @@ static void
_anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
Evas_Textblock_Cursor *c1; Evas_Textblock_Cursor *c1;
const Evas_Object_Textblock_Node_Format *node;
Anchor *an = NULL; Anchor *an = NULL;
int firsttext = 0;
_anchors_clear(c, o, en); _anchors_clear(c, o, en);
c1 = evas_object_textblock_cursor_new(o); c1 = evas_object_textblock_cursor_new(o);
evas_textblock_cursor_node_first(c1); node = evas_textblock_node_format_first_get(o);
do for (; node ; node = evas_textblock_node_format_next_get(node))
{ {
const char *s; 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 (s)
{ {
if ((!strncmp(s, "+ a ", 4)) || (!strncmp(s, "+a ", 3))) if ((!strncmp(s, "+ a ", 4)) || (!strncmp(s, "+a ", 3)))
@ -942,7 +845,7 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
if (an) if (an)
{ {
char *p; char *p;
an->en = en; an->en = en;
p = strstr(s, "href="); p = strstr(s, "href=");
if (p) if (p)
@ -958,9 +861,11 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
} }
else if ((!strcmp(s, "- a")) || (!strcmp(s, "-a"))) else if ((!strcmp(s, "- a")) || (!strcmp(s, "-a")))
{ {
/* Close the anchor, if the anchor was without text, free it as well */
if (an) 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); if (an->name) free(an->name);
evas_textblock_cursor_free(an->start); evas_textblock_cursor_free(an->start);
@ -968,7 +873,6 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
en->anchors = eina_list_remove(en->anchors, an); en->anchors = eina_list_remove(en->anchors, an);
free(an); free(an);
} }
firsttext = 0;
an = NULL; an = NULL;
} }
} }
@ -978,7 +882,7 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
if (an) if (an)
{ {
char *p; char *p;
an->en = en; an->en = en;
an->item = 1; an->item = 1;
p = strstr(s, "href="); p = strstr(s, "href=");
@ -997,7 +901,7 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
if (an) if (an)
{ {
/* /*
if (!firsttext) if (!firsttext)
{ {
if (an->name) free(an->name); if (an->name) free(an->name);
@ -1007,30 +911,11 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
free(an); free(an);
} }
*/ */
firsttext = 0;
an = NULL; 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); evas_textblock_cursor_free(c1);
} }
@ -1038,111 +923,22 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
static void static void
_range_del(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *en) _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); evas_textblock_cursor_range_delete(en->sel_start, en->sel_end);
} }
static void static void
_backspace(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _backspace(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
Evas_Textblock_Cursor *c1, *c2; if (evas_textblock_cursor_char_prev(c))
int nodel = 0;
c1 = evas_object_textblock_cursor_new(o);
if (!evas_textblock_cursor_char_prev(c))
{ {
if (!evas_textblock_cursor_node_prev(c)) evas_textblock_cursor_char_delete(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);
}
} }
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 static void
_delete(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) _delete(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{ {
Evas_Textblock_Cursor *c1, *c2; evas_textblock_cursor_char_delete(c);
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);
} }
static void static void
@ -1444,8 +1240,14 @@ _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v
if (en->have_selection) 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); _sel_clear(en->cursor, rp->object, en);
//yy if (shift)
evas_textblock_cursor_format_prepend(en->cursor, "\n"); {
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); _curs_update_from_curs(en->cursor, rp->object, en);
_anchors_get(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en);
_edje_emit(ed, "entry,changed", rp->part->name); _edje_emit(ed, "entry,changed", rp->part->name);
@ -2072,7 +1874,7 @@ _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text)
_sel_clear(en->cursor, rp->object, en); _sel_clear(en->cursor, rp->object, en);
evas_object_textblock_text_markup_set(rp->object, text); 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)) 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");
@ -2371,11 +2173,8 @@ _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur)
if (!c) return EINA_FALSE; if (!c) return EINA_FALSE;
if (!evas_textblock_cursor_char_next(c)) if (!evas_textblock_cursor_char_next(c))
{ {
evas_textblock_cursor_eol_set(c, 0); return EINA_FALSE;
if (evas_textblock_cursor_node_next(c)) goto ok;
else return EINA_FALSE;
} }
ok:
_curs_update_from_curs(c, rp->object, rp->entry_data); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2401,7 +2200,7 @@ _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur)
if (!c) return EINA_FALSE; if (!c) return EINA_FALSE;
if (!evas_textblock_cursor_char_prev(c)) 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; else return EINA_FALSE;
} }
ok: ok:
@ -2440,9 +2239,9 @@ _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur)
if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2)))
{ {
if (cx < (lx +(lw / 2))) if (cx < (lx +(lw / 2)))
evas_textblock_cursor_line_first(c); evas_textblock_cursor_line_char_last(c);
else else
evas_textblock_cursor_line_last(c); evas_textblock_cursor_line_char_last(c);
} }
_curs_update_from_curs(c, rp->object, rp->entry_data); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2478,9 +2277,9 @@ _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur)
if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2)))
{ {
if (cx < (lx +(lw / 2))) if (cx < (lx +(lw / 2)))
evas_textblock_cursor_line_first(c); evas_textblock_cursor_line_char_last(c);
else else
evas_textblock_cursor_line_last(c); evas_textblock_cursor_line_char_last(c);
} }
_curs_update_from_curs(c, rp->object, rp->entry_data); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2505,7 +2304,7 @@ _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur)
Entry *en = rp->entry_data; Entry *en = rp->entry_data;
Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return; 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); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2575,7 +2374,7 @@ _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur)
Entry *en = rp->entry_data; Entry *en = rp->entry_data;
Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return; 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); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2598,7 +2397,7 @@ _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur)
Entry *en = rp->entry_data; Entry *en = rp->entry_data;
Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return; 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); _curs_update_from_curs(c, rp->object, rp->entry_data);
_sel_update(c, rp->object, rp->entry_data); _sel_update(c, rp->object, rp->entry_data);
@ -2620,7 +2419,7 @@ _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur)
{ {
Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return EINA_FALSE; 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; return EINA_FALSE;
} }
@ -2629,7 +2428,7 @@ _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur)
{ {
Evas_Textblock_Cursor *c = _cursor_get(rp, cur); Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return EINA_FALSE; 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 * const char *
@ -2640,9 +2439,9 @@ _edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur)
static char buf[16]; static char buf[16];
int pos, pos2, ch; int pos, pos2, ch;
if (!c) return NULL; 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; if (s) return s;
s = evas_textblock_cursor_node_text_get(c); s = evas_textblock_cursor_paragraph_text_get(c);
if (!s) return NULL; if (!s) return NULL;
pos = evas_textblock_cursor_pos_get(c); pos = evas_textblock_cursor_pos_get(c);
pos2 = evas_string_char_next_get(s, pos, &ch); pos2 = evas_string_char_next_get(s, pos, &ch);