summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubodh Kumar <s7158.kumar@samsung.com>2016-08-29 17:23:07 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-08-29 17:26:40 +0900
commit0f4cdf7a486803cbef1b214b3ad86ef80176dccb (patch)
tree716c3f19101c1fd7586cd7a61fd4babb09195d56
parenta9fbe6cb8f35e00bb9ab4bca2873c13501a60697 (diff)
downloadefl-0f4cdf7a486803cbef1b214b3ad86ef80176dccb.tar.gz
Edje entry: Pass correct cursor position and text to imf in case of selection
Summary: When selection is there we are passing the whole text and position to imf which sees that next character like matras (eg .Hindi) should be inserted (if pressed) and when matra comes the selected text is gone and only matra remains in the entry. eg: we have text in hindi like मानक, select all and hit matra in keyboard selected text is gone, only matra is there. @fix Test Plan: Tested in Tizen device Reviewers: jihoon, tasn, herdsman, thiepha Subscribers: Hermet, shilpasingh, raster, subodh, jpeg, cedric Differential Revision: https://phab.enlightenment.org/D2951
-rw-r--r--src/lib/edje/edje_entry.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c
index dae01925f3..f67d1317cd 100644
--- a/src/lib/edje/edje_entry.c
+++ b/src/lib/edje/edje_entry.c
@@ -4417,22 +4417,42 @@ _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx EINA_
for (itr = plain_text; itr && *itr; ++itr)
*itr = '*';
}
-
- *text = strdup(plain_text);
+ if (en->have_selection)
+ {
+ if (en->sel_start)
+ {
+ *text = strndup(plain_text,
+ evas_textblock_cursor_pos_get(en->sel_start));
+ }
+ else
+ {
+ *text = strdup(plain_text);
+ }
+ }
+ else
+ {
+ *text = strdup(plain_text);
+ }
free(plain_text);
plain_text = NULL;
}
else
- *text = strdup("");
+ {
+ *text = strdup("");
+ }
}
else
- *text = strdup("");
+ {
+ *text = strdup("");
+ }
}
if (cursor_pos)
{
- if (en->cursor)
+ if (en->have_selection && en->sel_start)
+ *cursor_pos = evas_textblock_cursor_pos_get(en->sel_start);
+ else if (en->cursor)
*cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
else
*cursor_pos = 0;