2017-06-08 03:07:12 -07:00
|
|
|
import efl_text_types;
|
2016-05-24 06:11:03 -07:00
|
|
|
|
2020-01-31 07:11:57 -08:00
|
|
|
class Efl.Canvas.Textblock extends Efl.Canvas.Object implements Efl.Text,
|
2019-12-30 23:15:29 -08:00
|
|
|
Efl.Canvas.Filter.Internal, Efl.Text_Font_Properties,
|
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 00:35:54 -08:00
|
|
|
Efl.Text_Style, Efl.Text_Format,
|
Efl.Text.Attribute_Factory
Summary:
Implementation of new Efl.Text.Attribute_Factory class which replace the annotation interface.
Currently, we have two public methods:
```
void efl_text_attribute_factory_attribute_insert(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end, const char *format)
unsigned int efl_text_attribute_factory_attribute_clear(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end);
```
Other methods will be internal methods, for the time being, we will redesign internal methods
Reviewers: woohyun, tasn, segfaultxavi, bu5hm4n, zmike
Subscribers: zmike, q66, cedric, segfaultxavi, bu5hm4n, a.srour, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10646
2019-11-26 20:04:31 -08:00
|
|
|
Efl.Text_Markup, Efl.Ui.I18n
|
2016-05-24 06:11:03 -07:00
|
|
|
{
|
2019-11-28 02:03:55 -08:00
|
|
|
[[This is the Canvas-level text class. This class only takes care of rendering text,
|
2019-12-13 02:47:47 -08:00
|
|
|
if you need user interaction consider the classes in $[Efl.Ui].
|
|
|
|
|
|
|
|
Note: No text will be rendered until a font, a font size and a font color are specified.
|
2019-12-30 23:15:29 -08:00
|
|
|
This can be accomplished using @Efl.Text_Font_Properties.font_family, @Efl.Text_Font_Properties.font_size and
|
2019-12-20 00:49:41 -08:00
|
|
|
@Efl.Text_Style.text_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
Alternatively, @.style_apply can be used providing the attributes $font, $font_size and $color.
|
2020-01-31 07:11:57 -08:00
|
|
|
|
|
|
|
@since 1.24
|
2019-12-13 02:47:47 -08:00
|
|
|
]]
|
2016-05-24 06:11:03 -07:00
|
|
|
methods {
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
@property is_empty {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[Whether the object is empty (no text) or not.
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
]]
|
|
|
|
get {
|
|
|
|
}
|
|
|
|
values {
|
2019-11-28 02:03:55 -08:00
|
|
|
is_empty: bool; [[$true if empty.]]
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
}
|
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 00:35:54 -08:00
|
|
|
}
|
|
|
|
cursor_create {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[Creates a new cursor and adds it to the text object.
|
|
|
|
This cursor can be used to manipulate and iterate the content of the text object.
|
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 00:35:54 -08:00
|
|
|
]]
|
2019-11-28 02:03:55 -08:00
|
|
|
return: Efl.Text.Cursor @move; [[The created text cursor.]]
|
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 00:35:54 -08:00
|
|
|
}
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
visible_range_get {
|
|
|
|
[[Returns the currently visible range.
|
|
|
|
|
2019-11-28 02:03:55 -08:00
|
|
|
The given $start and $end cursors are output variables:
|
|
|
|
they are set to the positions of the start and the end of the
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
visible range in the text, respectively.
|
|
|
|
]]
|
2019-11-28 02:03:55 -08:00
|
|
|
return: bool; [[$true on success.]]
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
params {
|
2019-11-28 02:03:55 -08:00
|
|
|
@in start: Efl.Text.Cursor; [[Range start position.]]
|
|
|
|
@in end: Efl.Text.Cursor; [[Range end position.]]
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
@property style_insets {
|
|
|
|
[[Gets the left, right, top and bottom insets of the text.
|
|
|
|
|
2019-12-20 03:45:31 -08:00
|
|
|
The inset is any applied padding on the text (which is calculated
|
|
|
|
internally by styling applied to Textblock).
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
]]
|
|
|
|
get {}
|
|
|
|
values {
|
2019-11-28 02:03:55 -08:00
|
|
|
l: int; [[Left padding.]]
|
|
|
|
r: int; [[Right padding.]]
|
|
|
|
t: int; [[Top padding.]]
|
|
|
|
b: int; [[Bottom padding.]]
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
}
|
|
|
|
}
|
2016-05-24 06:11:03 -07:00
|
|
|
@property bidi_delimiters {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[BiDi delimiters are used for in-paragraph separation of bidirectional
|
2017-12-22 05:45:48 -08:00
|
|
|
segments. This is useful, for example, in the recipient fields of
|
2019-11-28 02:03:55 -08:00
|
|
|
e-mail clients where bidi oddities can occur when mixing RTL (right-to-left)
|
|
|
|
and LTR (left-to-right) text.
|
2016-05-24 06:11:03 -07:00
|
|
|
]]
|
|
|
|
set {}
|
|
|
|
get {}
|
|
|
|
values {
|
2019-11-28 02:03:55 -08:00
|
|
|
delim: string; [[A null terminated string of delimiters, e.g ",|" or $null if empty.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
}
|
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 00:35:54 -08:00
|
|
|
@property newline_as_paragraph_separator {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[When $true, the newline character will behave as a paragraph separator.
|
2019-12-20 03:45:31 -08:00
|
|
|
Paragraph separator equal U+2029, and new line equal U+000A.
|
|
|
|
This will effect a lot of text behaviour like @Efl.Text.Cursor.move method.
|
2016-05-24 06:11:03 -07:00
|
|
|
]]
|
|
|
|
set {}
|
|
|
|
get {}
|
|
|
|
values {
|
2019-12-20 03:45:31 -08:00
|
|
|
mode: bool; [[$true to treat new line as paragraph separator, $false otherwise.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
}
|
Efl Canvas Text : Modify Style Property
Summary:
This patch defines the way style property will work at canvas_text object
1- Changing canvas_text style property using Font/Format/Style interfaces or with efl_canvas_text style property are the same.
Example:
```
efl_text_font_set(tb, "Arial", 30);
//is same as
efl_canvas_text_style_set(tb, "font=Arial font_size=30");
//which means calling
char * font;
int size;
int font_size;
efl_text_font_get(tb, &font, &size);
// calling this after any of the top two functions will return same result
```
2- style_get_property
Will return string that contains full details about all the current applied style at canvas_text level.
3- style_set_property
Will only override passed styles and leave everything else as it is
```
efl_canvas_text_style_set(tb, "font=Arial"); // overrider font name to Arial and leave everthing else
efl_canvas_text_style_set(tb, "font_size=30"); // overrider font size to 30 and leave everthing else (font name will stay arial)
```
Reviewers: ali.alzyod, woohyun, tasn, segfaultxavi, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: zmike, bu5hm4n, segfaultxavi, a.srour, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10607
2019-11-27 20:14:15 -08:00
|
|
|
style_apply {
|
2019-12-13 02:47:47 -08:00
|
|
|
[[Applies several style attributes at once using a formatting string.
|
|
|
|
Given style attributes override previous values, leaving other attributes unaffected.
|
|
|
|
This is akin to setting individual style attributes using properties like
|
2019-12-30 23:15:29 -08:00
|
|
|
@Efl.Text_Font_Properties.font_slant or @Efl.Text_Format.wrap, for example.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
The formatting string is a whitespace-separated list of $[attribute=value] pairs.
|
|
|
|
|
|
|
|
The following attributes are accepted:
|
|
|
|
|
|
|
|
- $font: Name of the font to use.
|
|
|
|
Default value is empty, meaning that no text will be rendered.
|
|
|
|
Requires $font_size and $font_color.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_family.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_fallbacks: Comma-delimited list of fonts to try if finding the primary font fails.
|
|
|
|
Example: $[font_fallbacks=consolas,courier,monospace].
|
|
|
|
Default value is empty.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_fallbacks.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_size: Height of font, in points.
|
|
|
|
Default value is 0.
|
|
|
|
Requires $font and $font_color.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_size.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_source: Path to the file containing the font to use.
|
|
|
|
Example: $[font_source=/usr/share/fonts/Sans.ttf].
|
|
|
|
Default value is empty.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_source.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_weight: Thickness of the font. The value must be one of: $normal, $thin, $ultralight, $extralight,
|
|
|
|
$light, $book, $medium, $semibold, $bold, $ultrabold, $extrabold, $black and $extrablack.
|
|
|
|
Default value is $normal.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_weight.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_style: Style of the font. The value must be one of: $normal, $oblique and $italic.
|
|
|
|
Default value is $normal.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_slant.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $font_width: How wide the font is, relative to its height. The value must be one of:
|
|
|
|
$normal, $ultracondensed, $extracondensed, $condensed, $semicondensed, $semiexpanded, $expanded,
|
|
|
|
$extraexpanded and $ultraexpanded.
|
|
|
|
Default value is $normal.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_weight.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $lang: A 2-letter ISO 639-1 language code, $auto (to use the system locale setting) or $none (to disable
|
|
|
|
language support).
|
|
|
|
Example: $[lang=he].
|
|
|
|
Default value is empty.
|
2019-12-30 23:15:29 -08:00
|
|
|
See @Efl.Text_Font_Properties.font_lang.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $color: Color code for the text (See bottom for the complete list of supported codes).
|
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no text will be rendered.
|
|
|
|
Requires $font and $font_size.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $underline_color: Color code for the text underline (See bottom for the complete list of supported codes).
|
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no underline will be rendered.
|
2020-02-04 08:45:32 -08:00
|
|
|
Requires $underline_type.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 09:11:59 -08:00
|
|
|
- $secondary_underline_color: Color code for the secondary text underline (See bottom for the complete list
|
2020-02-04 08:45:32 -08:00
|
|
|
of supported codes). Only valid when $[underline_type=double].
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that secondary underline will not be rendered.
|
2020-01-07 00:20:29 -08:00
|
|
|
See @Efl.Text_Style.text_secondary_underline_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $underline_dashed_color: Color code for the dashed underline (See bottom for the complete list of supported
|
|
|
|
codes). Only valid when $[underline_type=dashed].
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that dashed underline will not be rendered.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_dashed_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $outline_color: Color code for the text outline (See bottom for the complete list of supported codes).
|
2020-02-04 08:45:32 -08:00
|
|
|
Only valid when the $effect_type attribute includes an outline.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no outline will be rendered.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_outline_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $shadow_color: Color code for the text shadow (See bottom for the complete list of supported codes).
|
2020-02-04 08:45:32 -08:00
|
|
|
Only valid when the $effect_type attribute includes a shadow.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no shadow will be rendered.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_shadow_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $glow_color: Color code for the glow component of the text (See bottom for the complete list of supported
|
2020-02-04 08:45:32 -08:00
|
|
|
codes). Only valid when the $effect_type attribute includes a glow.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no glow will be rendered.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_glow_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 09:11:59 -08:00
|
|
|
- $secondary_glow_color: Color code for the secondary (inner) glow component of the text (See bottom for
|
2020-02-04 08:45:32 -08:00
|
|
|
the complete list of supported codes). Only valid when the $effect_type attribute includes a glow.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that only the primary $glow_color will be used.
|
2020-01-07 00:20:29 -08:00
|
|
|
See @Efl.Text_Style.text_secondary_glow_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $background_color: Color code for the background of the text (See bottom for the complete list of supported
|
2019-12-13 02:47:47 -08:00
|
|
|
codes). Use a fully transparent color to disable the background.
|
2020-02-04 08:45:32 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no background will be rendered.
|
|
|
|
Requires $background_type.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_background_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $strikethrough_color: Color code for the line striking through the text (See bottom for the complete list
|
2020-02-04 08:45:32 -08:00
|
|
|
of supported codes). Only valid when $[strikethrough_type=single]
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[rgba(0,0,0,0)] meaning that no strike-through line will be rendered.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_strikethrough_color.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $align: Horizontal alignment of the text. The value can either be a decimal number ($[0.0] means "left"
|
|
|
|
and $[1.0] means "right"), a percentage ($[0%] means "left" and $[100%] means "right") or one of:
|
|
|
|
$auto (Respects LTR/RTL settings), $locale (Respects language direction settings), $center
|
|
|
|
(Centers the text in the line), $middle (Alias for $center), $left (Puts the text at the left of the line),
|
|
|
|
$right (Puts the text at the right of the line), $start (Alias for $auto), $end (Puts the text at the
|
|
|
|
opposite side of LTR/RTL settings).
|
|
|
|
Default value is $auto.
|
2019-12-17 06:54:49 -08:00
|
|
|
See @Efl.Text_Format.text_horizontal_align.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $valign: Vertical alignment of the text. The value can either be a decimal number ($[0.0] means "top"
|
|
|
|
and $[1.0] means "bottom"), a percentage ($[0%] means "top" and $[100%] means "bottom") or one of:
|
|
|
|
$top (Puts the text at the top of the text box), $center (Puts the text at the middle of the text box),
|
|
|
|
$middle (Alias for $center), $bottom (Puts the text at the bottom of the text box),
|
|
|
|
$baseline (Puts the text's baseline at the middle of the text box), $base (Alias for $baseline).
|
|
|
|
Default value is $baseline.
|
2019-12-17 06:54:49 -08:00
|
|
|
See @Efl.Text_Format.text_vertical_align.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $wrap: Wrapping policy of the text. The value must be one of the following: $word (Only wraps lines at
|
|
|
|
word boundaries), $char (Wraps at any character), $mixed (Wraps at word boundaries if possible,
|
|
|
|
at any character if not), $hyphenation (Hyphenate if possible, otherwise try wrapping at word boundaries
|
|
|
|
or at any character) or $none to disable wrapping.
|
|
|
|
Default value is $none.
|
|
|
|
See @Efl.Text_Format.wrap.
|
|
|
|
|
|
|
|
- $left_margin: Distance in pixels from the left side of the text block to the beginning of the text
|
|
|
|
(inner margin). The value can be a number (to set the margin), or a number preceded by $[+] or $[-]
|
|
|
|
to increment or decrement the existing margin value. $reset is also accepted, to set the margin to
|
|
|
|
0 pixels.
|
|
|
|
Default value is $[0].
|
|
|
|
Examples: $[left_margin=10], $[left_margin=+10], $[left_margin=reset].
|
|
|
|
|
|
|
|
- $right_margin: Distance in pixels from the right side of the text block to the beginning of the text
|
|
|
|
(inner margin). The value can be a number (to set the margin), or a number preceded by $[+] or $[-]
|
|
|
|
to increment or decrement the existing margin value. $reset is also accepted, to set the margin to
|
|
|
|
0 pixels.
|
|
|
|
Default value is $[0].
|
|
|
|
Examples: $[right_margin=10], $[right_margin=+10], $[right_margin=reset].
|
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $underline_type: Style of the underline. The value must be one of $none (No underlining),
|
|
|
|
$single (A single line under the text) , $double (Two lines under the text),
|
2019-12-13 02:47:47 -08:00
|
|
|
$dashed (A dashed line under the text).
|
2020-02-04 08:45:32 -08:00
|
|
|
Default value is $none.
|
|
|
|
Requires either $underline_color, $secondary_underline_color or $underline_dashed_color.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_type.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $strikethrough_type: Enables crossed-out text. Possible values are $single and $none.
|
|
|
|
Default value is $none.
|
2019-12-13 02:47:47 -08:00
|
|
|
Requires $strikethrough_color.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_strikethrough_type.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $background_type: Enables background color for the text. Possible values are $solid and $none.
|
|
|
|
Default value is $none.
|
|
|
|
Requires $background_color.
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_background_type.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $effect_type: Controls a number of decorations around the text, like shadow, outline and glow, including
|
|
|
|
combinations of them. Possible values are $none (No decoration),
|
2019-12-13 02:47:47 -08:00
|
|
|
$shadow, $outline, $soft_outline, $outline_shadow, $outline_soft_shadow, $glow (alias for $soft_outline),
|
|
|
|
$far_shadow, $soft_shadow and $far_soft_shadow.
|
2020-02-04 08:45:32 -08:00
|
|
|
Default value is $none.
|
2019-12-13 02:47:47 -08:00
|
|
|
Requires either $shadow_color, $glow_color or $outline_color.
|
2020-02-04 08:45:32 -08:00
|
|
|
See @Efl.Text_Style.text_effect_type
|
|
|
|
|
|
|
|
- $shadow_direction: Indicate the shadow direction. Valid positions are $bottom_right, $bottom, $bottom_left, $left, $top_left, $top, $top_right
|
|
|
|
and $right.
|
|
|
|
Requires either $effect_type.
|
|
|
|
See @Efl.Text_Style.text_shadow_direction.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $tab_stops: Size (in pixels) of the tab character. The value must be a number greater than one.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[32].
|
2019-12-26 01:01:32 -08:00
|
|
|
See @Efl.Text_Format.tab_stops.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $line_size: Distance (in pixels) from the baseline of one line of text to the next. This is, a value of
|
2019-12-13 02:47:47 -08:00
|
|
|
$[0] would render all lines on top of each other (However, this value will be ignored if it results in
|
|
|
|
overlapping lines of text).
|
2020-01-09 03:14:22 -08:00
|
|
|
Setting this value sets $line_rel_size to $[0%] (disables it).
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[0].
|
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $line_rel_size: Distance (in percentage over the natural line height) from the baseline of one line of
|
2019-12-13 02:47:47 -08:00
|
|
|
text to the next. A value of $[100%] does not have any impact, smaller values render lines closer together
|
|
|
|
and bigger values render them further apart.
|
2020-01-09 03:14:22 -08:00
|
|
|
Setting this value sets $line_size to $[0] (disables it).
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[0%].
|
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $line_gap: Additional empty space (in pixels) between the bottom of one line of text and the top of the
|
|
|
|
next. Setting this value sets $line_rel_gap to $[0%] (disables it).
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[0].
|
2019-12-26 01:01:32 -08:00
|
|
|
See @Efl.Text_Format.line_gap.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $line_rel_gap: Additional empty space (in percentage over the natural line height) between the bottom of
|
2019-12-13 02:47:47 -08:00
|
|
|
one line of text and the top of the next.
|
2020-01-09 03:14:22 -08:00
|
|
|
Setting this value sets $line_gap to $[0] (disables it).
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[0%].
|
2019-12-26 01:01:32 -08:00
|
|
|
See @Efl.Text_Format.line_rel_gap.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-01-09 03:14:22 -08:00
|
|
|
- $line_fill: An alternate way to specify the $line_size as a percentage of the canvas height.
|
2019-12-13 02:47:47 -08:00
|
|
|
A value of $[100%] means that a single line fills the canvas, whereas $[25%] means that 4 lines
|
|
|
|
fit in the same height.
|
2020-01-09 03:14:22 -08:00
|
|
|
When both $line_fill and $line_size are specified the one resulting in the smallest line size is used.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[0].
|
|
|
|
|
|
|
|
- $ellipsis: Controls automatic addition of ellipsis "..." to replace text which cannot be shown.
|
|
|
|
The value must be a number indicating the position of the ellipsis inside the visible text.
|
|
|
|
$[0.0] means the beginning of the text, $[1.0] means the end of the text, and values in between
|
|
|
|
mean the proportional position inside the text.
|
|
|
|
Any value smaller than 0 or greater than 1 disables ellipsis.
|
|
|
|
Default value is $[-1].
|
|
|
|
Examples: $[ellipsis=0.5
|
|
|
|
See @Efl.Text_Format.ellipsis.
|
|
|
|
|
|
|
|
- $password: Enabling this causes all characters to be replaced by $replacement_char.
|
|
|
|
This is useful for password input boxes.
|
|
|
|
Value must be either $on or $off.
|
|
|
|
Default value is $[off].
|
|
|
|
Requires $replacement_char.
|
|
|
|
See @Efl.Text_Format.password.
|
|
|
|
|
|
|
|
- $replacement_char: Character to use instead of the actual characters when $password is $on.
|
|
|
|
Default value is empty, meaning that no replacement will take place.
|
|
|
|
Requires $password.
|
|
|
|
Examples: $[replacement_char=*].
|
|
|
|
See @Efl.Text_Format.replacement_char.
|
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $underline_dashed_width: Length (in pixels) of the dashes when $underline_type is $dashed.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[6].
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_dashed_width.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $underline_dashed_gap: Length (in pixels) of the gaps between the dashes when $underline_type is $dashed.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[2].
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_dashed_gap.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
2020-02-04 08:45:32 -08:00
|
|
|
- $underline_height: Width (in pixels) of the single underline when $underline_type is $single.
|
2019-12-13 02:47:47 -08:00
|
|
|
Default value is $[1].
|
2019-12-20 00:49:41 -08:00
|
|
|
See @Efl.Text_Style.text_underline_height.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
- $gfx_filter: Experimental filter name. See @Efl.Gfx.Filter for more information.
|
|
|
|
|
|
|
|
Color codes: Colors can be specified using any of the following formats:
|
|
|
|
$[#RRGGBB], $[#RRGGBBAA], $[#RGB], $[#RGBA], $[rgb(r,g,b)], $[rgba(r,g,b,a)].
|
|
|
|
Additionally, X11 color names like $red or $blanchedalmond can be used.
|
|
|
|
See https://en.wikipedia.org/wiki/X11_color_names for the full list.
|
2019-12-02 01:41:35 -08:00
|
|
|
]]
|
|
|
|
|
Efl Canvas Text : Modify Style Property
Summary:
This patch defines the way style property will work at canvas_text object
1- Changing canvas_text style property using Font/Format/Style interfaces or with efl_canvas_text style property are the same.
Example:
```
efl_text_font_set(tb, "Arial", 30);
//is same as
efl_canvas_text_style_set(tb, "font=Arial font_size=30");
//which means calling
char * font;
int size;
int font_size;
efl_text_font_get(tb, &font, &size);
// calling this after any of the top two functions will return same result
```
2- style_get_property
Will return string that contains full details about all the current applied style at canvas_text level.
3- style_set_property
Will only override passed styles and leave everything else as it is
```
efl_canvas_text_style_set(tb, "font=Arial"); // overrider font name to Arial and leave everthing else
efl_canvas_text_style_set(tb, "font_size=30"); // overrider font size to 30 and leave everthing else (font name will stay arial)
```
Reviewers: ali.alzyod, woohyun, tasn, segfaultxavi, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: zmike, bu5hm4n, segfaultxavi, a.srour, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10607
2019-11-27 20:14:15 -08:00
|
|
|
params {
|
2019-12-13 02:47:47 -08:00
|
|
|
@in style: string; [[A whitespace-separated list of $[attribute=value] pairs, for example,
|
|
|
|
$[font=sans font_size=30 color=white].]]
|
2016-06-07 10:16:34 -07:00
|
|
|
}
|
Efl Canvas Text : Modify Style Property
Summary:
This patch defines the way style property will work at canvas_text object
1- Changing canvas_text style property using Font/Format/Style interfaces or with efl_canvas_text style property are the same.
Example:
```
efl_text_font_set(tb, "Arial", 30);
//is same as
efl_canvas_text_style_set(tb, "font=Arial font_size=30");
//which means calling
char * font;
int size;
int font_size;
efl_text_font_get(tb, &font, &size);
// calling this after any of the top two functions will return same result
```
2- style_get_property
Will return string that contains full details about all the current applied style at canvas_text level.
3- style_set_property
Will only override passed styles and leave everything else as it is
```
efl_canvas_text_style_set(tb, "font=Arial"); // overrider font name to Arial and leave everthing else
efl_canvas_text_style_set(tb, "font_size=30"); // overrider font size to 30 and leave everthing else (font name will stay arial)
```
Reviewers: ali.alzyod, woohyun, tasn, segfaultxavi, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: zmike, bu5hm4n, segfaultxavi, a.srour, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10607
2019-11-27 20:14:15 -08:00
|
|
|
}
|
|
|
|
@property all_styles {
|
2019-12-13 02:47:47 -08:00
|
|
|
[[A string representing the complete set of attributes applied to this text object.
|
2019-11-28 02:03:55 -08:00
|
|
|
This includes the default attributes plus any additional style applied with @.style_apply
|
2019-12-30 23:15:29 -08:00
|
|
|
or individual style properties like @Efl.Text_Font_Properties.font_slant or @Efl.Text_Format.wrap.
|
2019-12-13 02:47:47 -08:00
|
|
|
|
|
|
|
See @.style_apply for the description of all attributes.
|
|
|
|
]]
|
Efl Canvas Text : Modify Style Property
Summary:
This patch defines the way style property will work at canvas_text object
1- Changing canvas_text style property using Font/Format/Style interfaces or with efl_canvas_text style property are the same.
Example:
```
efl_text_font_set(tb, "Arial", 30);
//is same as
efl_canvas_text_style_set(tb, "font=Arial font_size=30");
//which means calling
char * font;
int size;
int font_size;
efl_text_font_get(tb, &font, &size);
// calling this after any of the top two functions will return same result
```
2- style_get_property
Will return string that contains full details about all the current applied style at canvas_text level.
3- style_set_property
Will only override passed styles and leave everything else as it is
```
efl_canvas_text_style_set(tb, "font=Arial"); // overrider font name to Arial and leave everthing else
efl_canvas_text_style_set(tb, "font_size=30"); // overrider font size to 30 and leave everthing else (font name will stay arial)
```
Reviewers: ali.alzyod, woohyun, tasn, segfaultxavi, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: zmike, bu5hm4n, segfaultxavi, a.srour, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10607
2019-11-27 20:14:15 -08:00
|
|
|
get {}
|
2016-05-24 06:11:03 -07:00
|
|
|
values {
|
2019-12-13 02:47:47 -08:00
|
|
|
style: string; [[A whitespace-separated list of $[attribute=value] pairs, for example,
|
|
|
|
$[font=sans font_size=30 color=white].]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
@property size_formatted {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[The formatted width and height of this text block.
|
2016-05-24 06:11:03 -07:00
|
|
|
|
|
|
|
This calculates the actual size after restricting the
|
2019-11-28 02:03:55 -08:00
|
|
|
text block to the current size of the object.
|
2016-05-24 06:11:03 -07:00
|
|
|
|
2019-11-28 02:03:55 -08:00
|
|
|
The main difference between this and @.size_native
|
|
|
|
is that the "native" function does not take wrapping into account:
|
|
|
|
it just calculates the real width of the object as if it was
|
|
|
|
placed on an infinite canvas, while @.size_formatted gives the
|
|
|
|
size after wrapping text according to the size restrictions of the
|
2016-05-24 06:11:03 -07:00
|
|
|
object.
|
|
|
|
|
2019-11-28 02:03:55 -08:00
|
|
|
For example a text block containing the text:
|
2016-05-24 06:11:03 -07:00
|
|
|
"You shall not pass!" with no margins or padding and assuming
|
|
|
|
a monospace font and a size of 7x10 char widths (for simplicity)
|
|
|
|
has a native size of 19x1 and a formatted size of 5x4.
|
|
|
|
]]
|
|
|
|
get {}
|
|
|
|
values {
|
2019-11-28 02:03:55 -08:00
|
|
|
size: Eina.Size2D; [[The formatted size of the object (after wrapping).]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
@property size_native {
|
2019-11-28 02:03:55 -08:00
|
|
|
[[The native width and height of this text block.
|
2016-05-24 06:11:03 -07:00
|
|
|
|
|
|
|
This calculates the actual size without taking account the
|
|
|
|
current size of the object.
|
|
|
|
|
2019-11-28 02:03:55 -08:00
|
|
|
The main difference between this and @.size_formatted
|
|
|
|
is that the "native" function does not take wrapping into account:
|
|
|
|
it just calculates the real width of the object as if it was
|
|
|
|
placed on an infinite canvas, while @.size_formatted gives the
|
|
|
|
size after wrapping text according to the size restrictions of the
|
|
|
|
object.
|
2016-05-24 06:11:03 -07:00
|
|
|
|
2019-11-28 02:03:55 -08:00
|
|
|
For example a text block containing the text:
|
2016-05-24 06:11:03 -07:00
|
|
|
"You shall not pass!" with no margins or padding and assuming
|
|
|
|
a monospace font and a size of 7x10 char widths (for simplicity)
|
|
|
|
has a native size of 19x1 and a formatted size of 5x4.
|
|
|
|
]]
|
|
|
|
get {}
|
|
|
|
values {
|
2019-11-28 02:03:55 -08:00
|
|
|
size: Eina.Size2D; [[The native size of the object (without wrapping).]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
}
|
Canvas text cursor: move to Efl.Canvas.Text namespace
Originally it was its own object.
There are some valid claims that there is no justification for it to
remain an object.
Furthermore, it's apparent that it added little benefit: changes of
each cursors, in practice, triggered a query for all objects of the
same textblock. There wasn't real advantage to have a finer resolution
of controlling the cursors with their own events.
This ports back a lot of code, and changes a lot of other code in the
higher-up widgets, such as Efl.Ui.Text and co.
The usage was replaces from:
efl_canvas_text_cursor_char_next(cur_obj)
to
efl_canvas_text_cursor_char_next(text_obj, cur_obj)
that is, it is an operations on the TEXT OBJECT, rather than on the
(now removed) cursor object.
So, one less efl object to worry about now.
Hopefully, the port went smooth.
2017-06-05 04:52:10 -07:00
|
|
|
// Obstacles
|
2020-01-23 03:31:57 -08:00
|
|
|
obstacle_add @beta {
|
2020-01-03 02:57:27 -08:00
|
|
|
[[Add obstacle object $eo_obs to be avoided during layout
|
2016-05-24 06:11:03 -07:00
|
|
|
of text.
|
|
|
|
|
|
|
|
The textblock does the layout of the text according to the
|
|
|
|
position of the obstacle.
|
|
|
|
]]
|
|
|
|
params {
|
2019-11-28 02:03:55 -08:00
|
|
|
@in eo_obs: Efl.Canvas.Object; [[Obstacle object.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
2019-11-28 02:03:55 -08:00
|
|
|
return: bool; [[$true on success.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
2020-01-23 03:31:57 -08:00
|
|
|
obstacle_del @beta {
|
2016-05-24 06:11:03 -07:00
|
|
|
[[Removes $eo_obs from observation during text layout.
|
|
|
|
]]
|
|
|
|
params {
|
2019-11-28 02:03:55 -08:00
|
|
|
@in eo_obs: Efl.Canvas.Object; [[Obstacle object.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
2019-11-28 02:03:55 -08:00
|
|
|
return: bool; [[$true on success.]]
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
2020-01-23 03:31:57 -08:00
|
|
|
obstacles_update @beta {
|
2016-05-24 06:11:03 -07:00
|
|
|
[[Triggers for relayout due to obstacles' state change.
|
|
|
|
|
|
|
|
The obstacles alone don't affect the layout, until this is
|
|
|
|
called. Use this after doing changes (moving, positioning etc.)
|
|
|
|
in the obstacles that you would like to be considered in the
|
|
|
|
layout.
|
|
|
|
|
|
|
|
For example: if you have just repositioned the obstacles to
|
2019-11-28 02:03:55 -08:00
|
|
|
different coordinates relative to the text block, you need to
|
2016-05-24 06:11:03 -07:00
|
|
|
call this so it will consider this new state and will relayout
|
|
|
|
the text.
|
|
|
|
]]
|
|
|
|
}
|
2017-09-04 09:16:27 -07:00
|
|
|
async_layout {
|
|
|
|
[[Requests to layout the text off the mainloop.
|
|
|
|
|
|
|
|
Once layout is complete, the result is returned as @Eina.Rect,
|
2019-11-28 02:03:55 -08:00
|
|
|
with the $w and $h fields set.
|
2019-12-20 03:45:31 -08:00
|
|
|
|
|
|
|
This can be used to layout Textblock before it is required
|
|
|
|
to layout internally in back thread, which can enhance application
|
|
|
|
performance.
|
2017-09-04 09:16:27 -07:00
|
|
|
]]
|
2019-11-28 02:03:55 -08:00
|
|
|
return: future<Eina.Rect>; [[Future for layout result.]]
|
2017-09-04 09:16:27 -07:00
|
|
|
}
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
|
|
|
implements {
|
2016-08-10 07:23:04 -07:00
|
|
|
Efl.Object.constructor;
|
|
|
|
Efl.Object.destructor;
|
2016-12-27 07:37:41 -08:00
|
|
|
Efl.Canvas.Object.paragraph_direction { get; set; }
|
|
|
|
Efl.Text.text { get; set; }
|
2016-12-22 02:43:45 -08:00
|
|
|
Efl.Gfx.Filter.filter_program { get; set; }
|
2017-01-04 18:25:21 -08:00
|
|
|
Efl.Gfx.Filter.filter_data { get; set; }
|
2017-01-05 00:56:04 -08:00
|
|
|
Efl.Gfx.Filter.filter_source { get; set; }
|
2016-12-22 02:43:45 -08:00
|
|
|
Efl.Canvas.Filter.Internal.filter_dirty;
|
|
|
|
Efl.Canvas.Filter.Internal.filter_input_render;
|
|
|
|
Efl.Canvas.Filter.Internal.filter_state_prepare;
|
2019-12-30 23:15:29 -08:00
|
|
|
Efl.Text_Font_Properties.font_family { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_size { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_source { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_fallbacks { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_lang { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_weight { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_slant { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_width { get; set; }
|
|
|
|
Efl.Text_Font_Properties.font_bitmap_scalable { get; set; }
|
2019-12-20 00:49:41 -08:00
|
|
|
Efl.Text_Style.text_color { get; set; }
|
|
|
|
Efl.Text_Style.text_background_type { get; set; }
|
|
|
|
Efl.Text_Style.text_background_color { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_type { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_color { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_height { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_dashed_color { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_dashed_width { get; set; }
|
|
|
|
Efl.Text_Style.text_underline_dashed_gap { get; set; }
|
2020-01-07 00:20:29 -08:00
|
|
|
Efl.Text_Style.text_secondary_underline_color { get; set; }
|
2019-12-20 00:49:41 -08:00
|
|
|
Efl.Text_Style.text_strikethrough_type { get; set; }
|
|
|
|
Efl.Text_Style.text_strikethrough_color { get; set; }
|
|
|
|
Efl.Text_Style.text_effect_type { get; set; }
|
|
|
|
Efl.Text_Style.text_outline_color { get; set; }
|
|
|
|
Efl.Text_Style.text_shadow_direction { get; set; }
|
|
|
|
Efl.Text_Style.text_shadow_color { get; set; }
|
|
|
|
Efl.Text_Style.text_glow_color { get; set; }
|
2020-01-07 00:20:29 -08:00
|
|
|
Efl.Text_Style.text_secondary_glow_color { get; set; }
|
2019-12-20 00:49:41 -08:00
|
|
|
Efl.Text_Style.text_gfx_filter { get; set; }
|
2018-04-06 04:30:40 -07:00
|
|
|
Efl.Text_Format.ellipsis { get; set; }
|
|
|
|
Efl.Text_Format.wrap { get; set; }
|
|
|
|
Efl.Text_Format.multiline { get; set; }
|
2019-12-17 06:54:49 -08:00
|
|
|
Efl.Text_Format.text_horizontal_align { get; set; }
|
|
|
|
Efl.Text_Format.text_horizontal_align_auto_type { get; set; }
|
|
|
|
Efl.Text_Format.text_vertical_align { get; set; }
|
2019-12-26 01:01:32 -08:00
|
|
|
Efl.Text_Format.line_gap { get; set; }
|
|
|
|
Efl.Text_Format.line_rel_gap { get; set; }
|
|
|
|
Efl.Text_Format.tab_stops { get; set; }
|
2018-04-06 04:30:40 -07:00
|
|
|
Efl.Text_Format.password { get; set; }
|
|
|
|
Efl.Text_Format.replacement_char { get; set; }
|
|
|
|
Efl.Text_Markup.markup { set; get; }
|
2018-04-05 01:47:26 -07:00
|
|
|
Efl.Gfx.Entity.scale { set; }
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|
2016-07-11 04:18:19 -07:00
|
|
|
events {
|
efl: Add missing event types
Summary:
All events must have a type now, otherwise bindings don't know how to handle
the event_info field.
Most of the missing event types were actually "void" (no event_info present).
Some struct definitions had to be moved to eo instead of h files, so they
are available to bindings. Some have not, and are marked with FIXME.
Some namespaces have been fixed (like Efl_Event_Cb -> Efl.Event_Cb).
In general, there are hundreds of changed files, but mostly to add a type which
was not present before, so there's no harm done.
Also, A lot of FIXMEs have been added which should be, like, fixed.
For example, some events can send different types of event_info, which is
very inconvenient (and error prone).
Test Plan: make with c# bindings works, make check and make examples work too.
Reviewers: cedric, q66, lauromoura
Subscribers: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6169
2018-05-11 08:20:40 -07:00
|
|
|
changed: void; [[Called when canvas text changed ]]
|
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 00:35:54 -08:00
|
|
|
layout,finished: void; [[Called when the object has been layed out]]
|
efl: Add missing event types
Summary:
All events must have a type now, otherwise bindings don't know how to handle
the event_info field.
Most of the missing event types were actually "void" (no event_info present).
Some struct definitions had to be moved to eo instead of h files, so they
are available to bindings. Some have not, and are marked with FIXME.
Some namespaces have been fixed (like Efl_Event_Cb -> Efl.Event_Cb).
In general, there are hundreds of changed files, but mostly to add a type which
was not present before, so there's no harm done.
Also, A lot of FIXMEs have been added which should be, like, fixed.
For example, some events can send different types of event_info, which is
very inconvenient (and error prone).
Test Plan: make with c# bindings works, make check and make examples work too.
Reviewers: cedric, q66, lauromoura
Subscribers: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6169
2018-05-11 08:20:40 -07:00
|
|
|
style_insets,changed: void; [[Called when the property @.style_insets changed.]]
|
2016-07-11 04:18:19 -07:00
|
|
|
}
|
2016-05-24 06:11:03 -07:00
|
|
|
}
|