efl/src/lib/edje
Ali Alzyod 7a05d8d769 elm_entry: handle cursor delete/backspace with clusters consist of one or multible glyphs
Summary:
Cluster consist of one glyph, expected to be removed on backspace or delete key.
Cluster consist of multible glyph, expectd to remove part of on backspace or delete key.

This is behaviour founded in Android. (our current way of handling similar to Qt)

**New Behaviour**
{F3750386}

**Old Behaviour**
{F3750387}

Test Plan:
Auto Testing is challenging because there are no easy way to emulate keyboard down on elm_entry
```
#include <Elementary.h>

EAPI_MAIN int
elm_main(int argc, char **argv)
{
   Evas_Object *win,*box,*entry;

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   win = elm_win_util_standard_add("", "");
   elm_win_autodel_set(win, EINA_TRUE);

   box = elm_box_add(win);
   entry = elm_entry_add(box);

   evas_object_size_hint_weight_set(box,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(box,EVAS_HINT_FILL,EVAS_HINT_FILL);

   elm_entry_entry_set(entry,"<font=NotoColorEmoji wrap=mixed >🇧🇬อั🇧🇬อั&#x1F600;&#x1F600;&#x1F600;&#x1F600;&#x1F600;อั</font>");
   evas_object_size_hint_weight_set(entry,EVAS_HINT_EXPAND,0.9);
   evas_object_size_hint_align_set(entry,EVAS_HINT_FILL,EVAS_HINT_FILL);
   evas_object_show(entry);
   evas_object_show(box);

   elm_box_pack_end(box,entry);
   elm_win_resize_object_add(win,box);
   evas_object_resize(win,320,480);

   evas_object_size_hint_weight_set(entry,EVAS_HINT_EXPAND,0.1);
   evas_object_size_hint_align_set(entry,EVAS_HINT_FILL,EVAS_HINT_FILL);

   evas_object_show(win);
   elm_run();

   return 0;
}
ELM_MAIN()

```

Reviewers: tasn, woohyun, bowonryu

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9628
2019-09-05 14:52:51 +09:00
..
Edje.h efl: remove EFL_EO_API_SUPPORT macro 2019-03-18 12:13:59 +01:00
Edje.hh
Edje_Common.h edje_types: (re)move legacy types to header 2019-05-09 15:19:13 +02:00
Edje_Edit.h docs: Fix typos and some wrong expressions in API reference doc. 2018-08-30 14:01:21 +09:00
Edje_Eo.h edje_edit: remove all legacy usage from eo files 2019-03-06 13:03:00 -08:00
Edje_Legacy.h edje doc: fix corrupted grouping. 2019-05-02 18:37:38 +09:00
edje_box_layout.c evas: remove all legacy usage from eo files 2019-03-06 19:05:48 +01:00
edje_cache.c edje/style: append file prefix to textblock_style api that affects on file level 2019-08-29 13:21:11 -04:00
edje_calc.c edje calc - merge 2 switch statements that are doing 2 phases 2019-08-21 20:02:23 +01:00
edje_callbacks.c edje: Pass extra signal data to program_run 2018-05-08 12:26:13 -05:00
edje_convert.c
edje_convert.h docs: Fix common misspellings in H files 2019-04-02 13:28:48 +02:00
edje_data.c edje: Add support for map zoom to use other part center. 2019-07-12 12:04:06 -04:00
edje_edit.c efl: implement efl.file::unload for classes that implement load 2019-08-29 17:17:08 +02:00
edje_edit_eo.c efl: implement efl.file::unload for classes that implement load 2019-08-29 17:17:08 +02:00
edje_edit_eo.h edje_edit: remove all legacy usage from eo files 2019-03-06 13:03:00 -08:00
edje_edit_eo.legacy.h edje_edit: remove all legacy usage from eo files 2019-03-06 13:03:00 -08:00
edje_embryo.c Revert "edje: code refactoring for readibility." 2018-06-21 19:33:41 +09:00
edje_entry.c elm_entry: handle cursor delete/backspace with clusters consist of one or multible glyphs 2019-09-05 14:52:51 +09:00
edje_external.c
edje_global.eo efl: mark a couple internal eo files as @beta 2019-08-14 19:24:19 +02:00
edje_legacy.c efl_text_cursor: remove all legacy usage from eo files 2019-03-06 13:02:36 -08:00
edje_load.c edje/style: append file prefix to textblock_style api that affects on file level 2019-08-29 13:21:11 -04:00
edje_lua.c edje_lua: Wrap calls to edje_object_part_object_get with freeze/thaw 2018-06-25 11:36:52 -04:00
edje_lua2.c edje_lua2: add null check 2018-04-23 13:39:36 -07:00
edje_lua_script_only.c
edje_main.c eo: use efl_provider_{un,}register infrastructure instead of Efl_Loop one. 2019-07-17 21:57:57 +02:00
edje_match.c edje: migrate Eo API to use Eo callback instead of opaque type. 2019-02-06 13:48:43 -05:00
edje_message_queue.c edje - double make sure edje messages are zero'd due to a segv i saw 2019-07-09 16:04:22 +01:00
edje_misc.c
edje_module.c edje modules - warn - use proper hash free func prototype 2018-11-09 11:44:00 +00:00
edje_multisense.c edje/multisense: always return muted=true if multisense is disabled 2018-08-16 10:16:34 -04:00
edje_part.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
edje_part_box.c Rename Efl.Ui.Direction -> Efl.Ui.Layout_Orientation 2019-05-24 12:30:32 -04:00
edje_part_external.c efl_canvas_layout_part_external: implement missing functions 2019-02-27 14:57:03 -05:00
edje_part_helper.h edje: fix edje_part_helpers refcounting 2018-06-10 17:01:33 +02:00
edje_part_invalid.c efl_pack_table: rename table_position to cell_column, cell_row 2019-08-27 12:57:35 +02:00
edje_part_swallow.c efl_container: remove content_remove 2019-02-27 21:20:33 +01:00
edje_part_table.c efl_pack_table: rename table_position to cell_column, cell_row 2019-08-27 12:57:35 +02:00
edje_part_text.c edje: add missing NULL check 2019-02-13 19:02:46 +09:00
edje_private.h edje/style: append file prefix to textblock_style api that affects on file level 2019-08-29 13:21:11 -04:00
edje_program.c edje signal matches - try number 3 to try plug all the holes 2019-08-23 19:36:42 +01:00
edje_signal.c edje signal matches - try number 3 to try plug all the holes 2019-08-23 19:36:42 +01:00
edje_smart.c edje/style: append file prefix to textblock_style api that affects on file level 2019-08-29 13:21:11 -04:00
edje_text.c evas: restore legacy types which were defined to eo types 2019-03-08 12:06:24 -08:00
edje_textblock.c edje/textblock: Added edje_textblock_style_get() api. 2019-08-29 11:35:24 +09:00
edje_textblock_styles.c edje/style: append file prefix to textblock_style api that affects on file level 2019-08-29 13:21:11 -04:00
edje_types.eot edje_types: (re)move legacy types to header 2019-05-09 15:19:13 +02:00
edje_util.c edje/optimization: refactor edje_color_class_set() api. 2019-08-29 14:31:52 -04:00
edje_var.c edje - fix conversion of edje var from int to float to use tmp var 2019-08-11 12:47:38 +01:00
efl_canvas_layout.eo efl: implement efl.file::unload for classes that implement load 2019-08-29 17:17:08 +02:00
efl_canvas_layout_eo.legacy.c efl_canvas_layout: remove all legacy usage from eo files 2019-03-06 13:02:58 -08:00
efl_canvas_layout_eo.legacy.h efl_canvas_layout: remove all legacy usage from eo files 2019-03-06 13:02:58 -08:00
efl_canvas_layout_part.eo docs: Remove obsolete @since tags from EO files 2019-03-20 20:16:05 +01:00
efl_canvas_layout_part_box.eo Rename Efl.Ui.Direction -> Efl.Ui.Layout_Orientation 2019-05-24 12:30:32 -04:00
efl_canvas_layout_part_external.eo docs: Remove obsolete @since tags from EO files 2019-03-20 20:16:05 +01:00
efl_canvas_layout_part_invalid.eo efl_pack_table: rename table_position to cell_column, cell_row 2019-08-27 12:57:35 +02:00
efl_canvas_layout_part_swallow.eo Mark BETA classes individually 2019-02-14 17:46:50 +01:00
efl_canvas_layout_part_table.eo efl_pack_table: rename table_position to cell_column, cell_row 2019-08-27 12:57:35 +02:00
efl_canvas_layout_part_text.eo docs: Fill last missing docs from EO files 2019-07-08 17:48:57 +02:00
efl_layout_calc.eo docs: Fix common misspellings in EO files 2019-04-02 11:32:05 +02:00
efl_layout_group.eo eolian: remove param @nonull 2019-05-26 17:25:15 +02:00
efl_layout_group_eo.legacy.c efl_layout_group: remove all legacy usage from eo files 2019-03-06 13:02:56 -08:00
efl_layout_group_eo.legacy.h efl_layout_group: remove all legacy usage from eo files 2019-03-06 13:02:56 -08:00
efl_layout_signal.eo docs: Fix common misspellings in EO files 2019-04-02 11:32:05 +02:00
meson.build build: add a option to disable eo file installation 2019-03-14 12:44:00 -04:00