forked from enlightenment/efl
Canvas text cursor: add simple_geometry_get method
The ported geometry_get was actually the legacy simple_geometry_get. For getting simple geometries like selection this was enough, but I forgot that we also need to query more complex geometries e.g. links. This is required to implement link anchors in Ui Text. Now geometry_get and simple_geometry_get are the same as their legacy counterparts. @feature
This commit is contained in:
parent
42a3c773c0
commit
c0701a1051
|
@ -232,9 +232,27 @@ class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text)
|
||||||
return: Efl.Canvas.Text.Annotation *;
|
return: Efl.Canvas.Text.Annotation *;
|
||||||
}
|
}
|
||||||
range_geometry_get {
|
range_geometry_get {
|
||||||
[[Get the geometry of a range. The geometry is the geometry in
|
[[Get the geometry of a range in the text.
|
||||||
which rectangles in middle lines of range are merged into one big
|
|
||||||
rectangle.
|
The geometry is represented as rectangles for each of the line
|
||||||
|
segments in the given range [$cur1, $cur2].
|
||||||
|
|
||||||
|
@since 1.19
|
||||||
|
]]
|
||||||
|
legacy: null;
|
||||||
|
params {
|
||||||
|
@in cur1: const(Efl.Canvas.Text.Cursor);
|
||||||
|
@in cur2: const(Efl.Canvas.Text.Cursor);
|
||||||
|
}
|
||||||
|
return: free(own(iterator<Eina.Rectangle>),
|
||||||
|
eina_iterator_free);
|
||||||
|
}
|
||||||
|
range_simple_geometry_get {
|
||||||
|
[[Get the "simple" geometry of a range.
|
||||||
|
|
||||||
|
The geometry is the geometry in which rectangles in middle lines of
|
||||||
|
range are merged into one big rectangle. This is an optimized
|
||||||
|
version of @.range_geometry_get.
|
||||||
|
|
||||||
@since 1.13
|
@since 1.13
|
||||||
]]
|
]]
|
||||||
|
|
|
@ -11990,11 +11990,11 @@ evas_textblock_cursor_range_simple_geometry_get(const Efl_Canvas_Text_Cursor *cu
|
||||||
{
|
{
|
||||||
Efl_Canvas_Text_Cursor_Data *cur = efl_data_scope_get(cur1_obj, EFL_CANVAS_TEXT_CURSOR_CLASS);
|
Efl_Canvas_Text_Cursor_Data *cur = efl_data_scope_get(cur1_obj, EFL_CANVAS_TEXT_CURSOR_CLASS);
|
||||||
if (!cur) return NULL;
|
if (!cur) return NULL;
|
||||||
return efl_canvas_text_range_geometry_get(cur->obj, cur1_obj, cur2_obj);
|
return efl_canvas_text_range_simple_geometry_get(cur->obj, cur1_obj, cur2_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static EOLIAN Eina_Iterator *
|
static EOLIAN Eina_Iterator *
|
||||||
_efl_canvas_text_range_geometry_get(Eo *eo_obj EINA_UNUSED,
|
_efl_canvas_text_range_simple_geometry_get(Eo *eo_obj EINA_UNUSED,
|
||||||
Efl_Canvas_Text_Data *o, const Efl_Canvas_Text_Cursor *cur1_obj, const
|
Efl_Canvas_Text_Data *o, const Efl_Canvas_Text_Cursor *cur1_obj, const
|
||||||
Evas_Textblock_Cursor *cur2_obj)
|
Evas_Textblock_Cursor *cur2_obj)
|
||||||
{
|
{
|
||||||
|
@ -12102,8 +12102,10 @@ _efl_canvas_text_range_geometry_get(Eo *eo_obj EINA_UNUSED,
|
||||||
return itr;
|
return itr;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_List *
|
static Eina_List *
|
||||||
evas_textblock_cursor_range_geometry_get(const Efl_Canvas_Text_Cursor *cur1_obj, const Evas_Textblock_Cursor *cur2_obj)
|
_efl_canvas_text_range_geometry_list_get(Eo *eo_obj EINA_UNUSED,
|
||||||
|
Efl_Canvas_Text_Data *o, const Efl_Canvas_Text_Cursor *cur1_obj, const
|
||||||
|
Evas_Textblock_Cursor *cur2_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Textblock_Line *ln1, *ln2;
|
Evas_Object_Textblock_Line *ln1, *ln2;
|
||||||
Evas_Object_Textblock_Item *it1, *it2;
|
Evas_Object_Textblock_Item *it1, *it2;
|
||||||
|
@ -12117,7 +12119,6 @@ evas_textblock_cursor_range_geometry_get(const Efl_Canvas_Text_Cursor *cur1_obj,
|
||||||
if (cur1->obj != cur2->obj) return NULL;
|
if (cur1->obj != cur2->obj) return NULL;
|
||||||
Evas_Object_Protected_Data *obj = efl_data_scope_get(cur1->obj, EFL_CANVAS_OBJECT_CLASS);
|
Evas_Object_Protected_Data *obj = efl_data_scope_get(cur1->obj, EFL_CANVAS_OBJECT_CLASS);
|
||||||
evas_object_async_block(obj);
|
evas_object_async_block(obj);
|
||||||
Efl_Canvas_Text_Data *o = efl_data_scope_get(cur1->obj, MY_CLASS);
|
|
||||||
|
|
||||||
_relayout_if_needed(cur1->obj, o);
|
_relayout_if_needed(cur1->obj, o);
|
||||||
|
|
||||||
|
@ -12180,6 +12181,27 @@ evas_textblock_cursor_range_geometry_get(const Efl_Canvas_Text_Cursor *cur1_obj,
|
||||||
return rects;
|
return rects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_List *
|
||||||
|
evas_textblock_cursor_range_geometry_get(const Efl_Canvas_Text_Cursor *cur1_obj, const Evas_Textblock_Cursor *cur2_obj)
|
||||||
|
{
|
||||||
|
Efl_Canvas_Text_Cursor_Data *cur = efl_data_scope_get(cur1_obj, EFL_CANVAS_TEXT_CURSOR_CLASS);
|
||||||
|
Efl_Canvas_Text_Data *o = efl_data_scope_get(cur->obj, MY_CLASS);
|
||||||
|
|
||||||
|
if (!cur) return NULL;
|
||||||
|
|
||||||
|
return _efl_canvas_text_range_geometry_list_get(cur->obj, o, cur1_obj, cur2_obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static EOLIAN Eina_Iterator *
|
||||||
|
_efl_canvas_text_range_geometry_get(Eo *eo_obj EINA_UNUSED,
|
||||||
|
Efl_Canvas_Text_Data *o, const Efl_Canvas_Text_Cursor *cur1_obj, const
|
||||||
|
Evas_Textblock_Cursor *cur2_obj)
|
||||||
|
{
|
||||||
|
Eina_List *rects = _efl_canvas_text_range_geometry_list_get(eo_obj,
|
||||||
|
o, cur1_obj, cur2_obj);
|
||||||
|
return _evas_textblock_selection_iterator_new(rects);
|
||||||
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_textblock_cursor_format_item_geometry_get(const Efl_Canvas_Text_Cursor_Data *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
|
_evas_textblock_cursor_format_item_geometry_get(const Efl_Canvas_Text_Cursor_Data *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue