efl/src/lib/evas
Ali Alzyod d7352f4db4 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
2019-11-22 17:35:54 +09:00
..
cache evas_cache_image: drop image after replacement 2019-10-14 11:07:27 +09:00
canvas Efl.Text.Cursor 2019-11-22 17:35:54 +09:00
common evas image cache: drop cache properly, 2019-11-18 13:08:40 +09:00
common3d here comes meson 2018-10-02 17:22:50 +02:00
file meson: redo evas building 2019-10-29 12:54:56 -04:00
filters evas filter: Implement inverse color filter 2019-11-05 10:45:14 +09:00
gesture evas: move efl_input_device into evas/Efl_Canvas.h 2019-10-31 13:29:56 -04:00
include evas vg: improve caching methods for better precise behaviors. 2019-11-18 13:08:29 +09:00
software_generic evas filter: Implement inverse color filter 2019-11-05 10:45:14 +09:00
vg evas vg: improve caching methods for better precise behaviors. 2019-11-18 13:08:29 +09:00
Efl_Canvas.h Efl.Text.Cursor 2019-11-22 17:35:54 +09:00
Evas.h Efl.Text.Cursor 2019-11-22 17:35:54 +09:00
Evas.hh efl: remove EFL_EO_API_SUPPORT macro 2019-03-18 12:13:59 +01:00
Evas_Common.h Efl.Text.Cursor 2019-11-22 17:35:54 +09:00
Evas_Eo.h Efl.Text.Cursor 2019-11-22 17:35:54 +09:00
Evas_GL.h evas_gl: implement EvasGL ES 3.2 2019-08-01 10:42:55 -07:00
Evas_Internal.h evas: move watching over destruction of device to custom logic due to high use. 2019-10-31 13:29:56 -04:00
Evas_Legacy.h evas vector: support lottie animation as using json loader. 2019-06-21 17:35:48 +09:00
Evas_Loader.h evas: add infrastructure to feed 9 patch information from file loader to image object. 2019-07-12 09:54:16 -07:00
main.c evas: remove redundant internal functions. 2018-10-11 13:46:37 +09:00
meson.build meson: redo evas building 2019-10-29 12:54:56 -04:00