diff options
author | Ali Alzyod <ali198724@gmail.com> | 2019-11-22 17:35:54 +0900 |
---|---|---|
committer | WooHyun Jung <wh0705.jung@samsung.com> | 2019-11-22 17:35:54 +0900 |
commit | d7352f4db41dc8975eaeb3f79dff326338a5a63c (patch) | |
tree | be0fc63995e40f4c3a764f2ffdb66716dfcc6c38 /src/bin | |
parent | 17ba8515f1c9534ebd47a71adda71db2eff6799a (diff) | |
download | efl-d7352f4db41dc8975eaeb3f79dff326338a5a63c.tar.gz |
Efl.Text.Cursor
Summary:
Implementation of new cursor text object.
This Patch Contains :
1- Remove Efl.Text.Cursor & Efl.Text_Markup_Interactive interfaces and replace them with one Class Efl.Text.Cursor
=> there are some modifications on cursor methods
2- Update all related classes to use Efl.Text.Cursor object instead of the old interfaces
3- If class uses Efl.Text_Cursor_Cursor (handle), mainly annotation it will stay as it is until we update other annotations into attribute_factory
4- Add main cursor property into efl.text.interactive
5- Add cursor_new method in efl.ui.text (I think we may move it into efl.text.interactive interface)
There still some parts that need discussion: especially cursor movement functionality, I prefer to move function with Enum, instead of special function for each movement.
```
enum @beta Efl.Text.Cursor_Move_Type
{
[[Text cursor movement types]]
char_next, [[Advances to the next character]]
char_prev, [[Advances to the previous character]]
cluster_next, [[Advances to the next grapheme cluster]]
cluster_prev, [[Advances to the previous grapheme cluster]]
paragraph_start, [[Advances to the first character in this paragraph]]
paragraph_end, [[Advances to the last character in this paragraph]]
word_start, [[Advance to current word start]]
word_end, [[Advance to current word end]]
line_start, [[Advance to current line first character]]
line_end, [[Advance to current line last character]]
paragraph_first, [[Advance to current paragraph first character]]
paragraph_last, [[Advance to current paragraph last character]]
paragraph_next, [[Advances to the start of the next text node]]
paragraph_prev [[Advances to the end of the previous text node]]
}
move {
[[Move the cursor]]
params {
@in type: Efl.Text.Cursor_Move_Type; [[The type of movement]]
}
return: bool; [[True if actually moved]]
}
```
or old way:
```
char_next {
[[Advances to the next character]]
// FIXME: Make the number of characters we moved by? Useful for all the other functions
return: bool; [[True if actually moved]]
}
char_prev {
[[Advances to the previous character]]
return: bool; [[True if actually moved]]
}
char_delete {
[[Deletes a single character from position pointed by given cursor.]]
}
cluster_next {
[[Advances to the next grapheme cluster]]
return: bool; [[True if actually moved]]
}
cluster_prev {
[[Advances to the previous grapheme cluster]]
return: bool; [[True if actually moved]]
}
// FIXME: paragraph_end is inconsistent with word_end. The one goes to the last character and the other after the last character.
paragraph_start {
[[Advances to the first character in this paragraph]]
return: bool; [[True if actually moved]]
}
paragraph_end {
[[Advances to the last character in this paragraph]]
return: bool; [[True if actually moved]]
}
word_start {
[[Advance to current word start]]
return: bool; [[True if actually moved]]
}
word_end {
[[Advance to current word end]]
return: bool; [[True if actually moved]]
}
line_start {
[[Advance to current line first character]]
return: bool; [[True if actually moved]]
}
line_end {
[[Advance to current line last character]]
return: bool; [[True if actually moved]]
}
paragraph_first {
[[Advance to current paragraph first character]]
return: bool; [[True if actually moved]]
}
paragraph_last {
[[Advance to current paragraph last character]]
return: bool; [[True if actually moved]]
}
paragraph_next {
[[Advances to the start of the next text node]]
return: bool; [[True if actually moved]]
}
paragraph_prev {
[[Advances to the end of the previous text node]]
return: bool; [[True if actually moved]]
}
```
Reviewers: woohyun, tasn, segfaultxavi
Reviewed By: woohyun
Subscribers: a.srour, bu5hm4n, segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10542
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/elementary/test_efl_ui_text.c | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/src/bin/elementary/test_efl_ui_text.c b/src/bin/elementary/test_efl_ui_text.c index e7e909b84f..d56fddb78d 100644 --- a/src/bin/elementary/test_efl_ui_text.c +++ b/src/bin/elementary/test_efl_ui_text.c @@ -8,18 +8,18 @@ static void _apply_style(Eo *obj, size_t start_pos, size_t end_pos, const char *style) { - Efl_Text_Cursor_Cursor *start, *end; + Efl_Text_Cursor *start, *end; - start = efl_text_cursor_new(obj); - end = efl_text_cursor_new(obj); + start = efl_ui_text_cursor_create(obj); + end = efl_ui_text_cursor_create(obj); - efl_text_cursor_position_set(obj, start, start_pos); - efl_text_cursor_position_set(obj, end, end_pos); + efl_text_cursor_position_set(start, start_pos); + efl_text_cursor_position_set(end, end_pos); - efl_text_annotation_insert(obj, start, end, style); + efl_text_annotation_insert(obj, efl_text_cursor_handle_get(start), efl_text_cursor_handle_get(end), style); - efl_text_cursor_free(obj, start); - efl_text_cursor_free(obj, end); + efl_del(start); + efl_del(end); } static Eo * @@ -98,15 +98,15 @@ typedef struct static void _on_bt3_clicked(void *data, const Efl_Event *event EINA_UNUSED) { - Efl_Text_Cursor_Cursor *sel_start, *sel_end; + Efl_Text_Cursor *sel_start, *sel_end; Eo *en = data; - efl_text_interactive_selection_cursors_get(data, &sel_start, &sel_end); - const char *s = efl_canvas_text_range_text_get(data, sel_start, sel_end); + efl_text_interactive_selection_cursors_get(en, &sel_start, &sel_end); + const char *s = efl_text_cursor_range_text_get(sel_start, sel_end); printf("SELECTION REGION: %d - %d\n", - efl_text_cursor_position_get(en, sel_start), - efl_text_cursor_position_get(en, sel_end)); + efl_text_cursor_position_get( sel_start), + efl_text_cursor_position_get(sel_end)); printf("SELECTION:\n"); if (s) printf("%s\n", s); } @@ -248,9 +248,9 @@ _on_factory_bt_image_clicked(void *data, const Efl_Event *event EINA_UNUSED) static int image_idx = 0; image_idx = (image_idx + 1) % IMAGES_SZ; - efl_text_cursor_item_insert(en, - efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_TYPE_MAIN), - images[image_idx], "size=32x32"); + + efl_text_cursor_item_insert(en, efl_text_cursor_handle_get(efl_text_interactive_main_cursor_get(en)), + images[image_idx], "size=32x32"); printf("Inserted image: key = %s\n", images[image_idx]); } @@ -258,8 +258,8 @@ static void _on_factory_bt_emoticon_clicked(void *data, const Efl_Event *event EINA_UNUSED) { Evas_Object *en = data; - efl_text_cursor_item_insert(en, efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_TYPE_MAIN), - "emoticon/evil-laugh", "size=32x32"); + efl_text_cursor_item_insert(en, efl_text_cursor_handle_get(efl_text_interactive_main_cursor_get(en)), + "emoticon/evil-laugh", "size=32x32"); } static struct @@ -287,7 +287,7 @@ void test_ui_text_item_factory(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evas_Object *win, *bx, *bx2, *bt, *en; - Efl_Text_Cursor_Cursor *main_cur, *cur; + Efl_Text_Cursor *main_cur, *cur; char buf[128]; Eina_File *f; @@ -350,16 +350,16 @@ test_ui_text_item_factory(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, efl_text_font_set(en, "Sans", 14); efl_text_normal_color_set(en, 255, 255, 255, 255); - main_cur = efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_TYPE_MAIN); - cur = efl_text_cursor_new(en); + main_cur = efl_text_interactive_main_cursor_get(en); + cur = efl_ui_text_cursor_create(en); - efl_text_cursor_position_set(en, cur, 2); - efl_text_cursor_item_insert(en, cur, "emoticon/happy", "size=32x32"); - efl_text_cursor_position_set(en, cur, 50); + efl_text_cursor_position_set(cur, 2); + efl_text_cursor_item_insert(en, efl_text_cursor_handle_get(cur), "emoticon/happy", "size=32x32"); + efl_text_cursor_position_set(cur, 50); snprintf(buf, sizeof(buf), "file://%s/images/sky_01.jpg", elm_app_data_dir_get()); - efl_text_cursor_item_insert(en, cur, buf, "size=32x32"); - efl_text_cursor_position_set(en, main_cur, 5); + efl_text_cursor_item_insert(en, efl_text_cursor_handle_get(cur), buf, "size=32x32"); + efl_text_cursor_position_set(main_cur, 5); efl_text_interactive_editable_set(en, EINA_TRUE); efl_ui_text_scrollable_set(en, EINA_TRUE); |