Some names have not been changed, hopefully making a distinction
between legacy APIs and internal code (elm_layout_blah) and valid EO
usages.
This means many internal functions are still elm_layout_ as their
sole purpose is to support the legacy API.
Ref T5315
elm_layout_sizing_eval() marks an object as requiring recalc.
Unfortunately, it's been massively abused by various widgets into
actually doing the calc, or the min calc. So we end up with one API
that has 3 different definitions depending on the widget type:
1. Mark as requiring recalc (correct, respects doc, elm_layout)
2. Calculate min size and other size hints
3. Actually do some geometry modification
I believe we need to clarify these 3 requirements into 3 very clear
and specific APIs in elementary. Right now we have similar functions
in evas for 1 (evas_object_smart_changed) and 3 (smart_calculate).
But their exact definition also isn't necessarily what we want for
elementary.
Another clear problem is that layout_eval does not do any calculation
(in theory), so the "eval" word is a bit of a stretch here.
Once we're sure about the exact API we want, we can add this back to
EO and make it work across our EO widgets. For now let's just keep
the legacy API, and its EO overrides, as is.
Ref T5315
This merges them with the now standard interface:
Efl.Canvas.Layout_Signal
Some wrapping work was required for legacy API which
takes no user_data in del() but instead returns it. The
new EO function, while harder to use, is more correct
(you can't delete the invalid callback by accident, and
this follows EO events design).
Another crazy wrapping was done in entry/text in order
to add the callbacks to 2 objects instead of just one,
and still return the user data.
As for Naviframe and Popup, those two widgets override
signal_emit to forward the call to another object than
the resize object, but not callback_add/del. So they
are definitely broken.
Ref T5315
This affects the legacy content_set/get/unset part APIs. This
should avoid some unwanted ERR messages in case an elm_object_
API is used on an elm widget that doesn't implement said API.
What this does is request the widget for the name of the default
part if NULL was passed in. Since some widgets are not elm_layout,
they have to override the API themselves, which is why I made it
an internal EO API (rather than a series of efl_isa()).
In theory, part should never be NULL when reaching the internal
implementation code in the widgets, at least for content.
In EO, efl_part(obj, NULL) should be invalid.
Ref T5629
Summary:
- elm_entry has elm.guide text part and it can be set by "guide".
- However when using text_aliases_get, this cannot be found.
- Add elm_obj_elm_layout_part_aliasing_eval() internal APIs to make entry
use proper aliases.
Test Plan:
1. Run elementary test
2. Observe search entry has guide text with "guide" part.
3. Run Entry 8.
4. Observe "elm.guide" part also works.
5. Observe "icon" and "end" part works.
Reviewers: id213sin, herdsman, jpeg
Reviewed By: jpeg
Subscribers: conr2d, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4962
The following API is now supported with efl_part:
- Efl.Text.text { set; get; }
- Efl.Text.Cursor.cursor { get; }
- Efl.Text.Cursor.cursor_paragraph_first;
- Efl.Text.Cursor.cursor_paragraph_last;
- Efl.Text.Cursor.cursor_position { set; get; }
- Efl.Text.Cursor.cursor_coord_set;
- Efl.Text.Cursor.cursor_line_char_first;
- Efl.Text.Cursor.cursor_line_char_last;
- Efl.Text.Cursor.cursor_char_next;
- Efl.Text.Cursor.cursor_char_prev;
- Efl.Text.Cursor.cursor_line_jump_by;
- Efl.Text.Cursor.cursor_copy;
- Efl.Text.Cursor.cursor_content { get; }
- Efl.Text.Cursor.cursor_geometry { get; }
- Efl.Text.Cursor.cursor_text_insert;
Many of the 'part_text' functionality was moved to legacy, too.
See the edje_object.eo to see which ones are still supported.
Summary:
To recieve keyboard events, the entry_edje should have Evas focus.
But, if a non editable Entry widget takes focus, it can't recieve
keyboard events even if it becomes editable after taking focus.
So, elm_entry_editable_set() function should update Entry's focus state.
@fix
Test Plan:
The code of elementary_test - entry is modified to test this issue.
Please, check the issue with the following steps.
1. Run "elementary_test entry"
2. Click "Unfocus" button to make entry to "unfocused" state.
3. Click "Edit" button to make entry to non-editable mode.
4. Click "Focus" button to make entry to "focused" state.
5. Click "Edit" button to make entry to editable mode.
6. See a cursor is blinking in entry.
=> But, you can't edit text without this patch.
Reviewers: raster, herdsman, cedric, jpeg, woohyun
Differential Revision: https://phab.enlightenment.org/D4858
The expected usage is efl_text_set(efl_part(layout, part), text);
Same for text_get.
Also, added an example how to make API easier with providing
efl_text_set/get for the widget itself, in efl_ui_button. Please see
this example.
Summary:
Issue: Selection cannot happen on an empty entry, if selection functions
are called on empty entry, cursor is hidden, even if entry is focused.
Soln: Check for whether entry is empty or not before proceeding with selection.
Test Plan:
1. Call select_all, select_region_set on a focused entry
2. You can observe cursor cannot be seen.
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4862
Summary:
Small devices (like smart watch) can disallow entry selection by default.
This patch enables to control this behavior with elementary configuration.
Reviewers: cedric, jpeg
Subscribers: id213sin, woohyun
Differential Revision: https://phab.enlightenment.org/D4615
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Cursor position should be initialized because entry will be cleared when entry text set.
Reviewers: woohyun, id213sin
Reviewed By: id213sin
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4469
Summary:
"cursor,changed" smart callback should be called when only the main cusor's
position is changed. But, It was called when elm_layout_sizing_eval() is called
for elm_entry.
@fix
Test Plan: N/A
Reviewers: raster, cedric, woohyun, herdsman
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4419
Summary:
The accessible name is char*, this could confuse API user.
If we provide user callback to get description, an user would return allocated string.
The usage of elm_interface_atspi_description_get/set should be same with elm_interface_atspi_name_get/set
Reviewers: lukasz.stanislawski, cedric, raster
Reviewed By: raster
Subscribers: stanluk, jpeg
Differential Revision: https://phab.enlightenment.org/D4378
Summary:
The style user should be kept when entry's mode is changed.
@fix
Test Plan:
1. Run "elementary_test -to "entry style user"
2. Click "Singleline Mode" toggle
3. See the result
Reviewers: raster, tasn, herdsman, cedric
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4366
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
These are some of the EO files that shouldn't be part of the public
EO API:
- elm_access (old)
- actionslider
- bubble
- diskselector
- flipselector (a fancy spinner)
- hoversel (use combobox instead)
- icon (use image instead)
- inwin
- naviframe (unreplaced for now)
- photo (use image)
- prefs
- segment control
- separator
- slideshow
- thumb (use image)
Note: This breaks the use of the elm_widget_xxx.h headers. Those
were internal headers anyway. Exposed because of a lack of
a proper inheritance API.
This is an override of efl_gfx_size_set. Same as before, the
order of operations matter so it is possible that a corner
case will break. In particular, legacy code was:
- intercept
- smart resize (do stuff), super, super, super
- evas object resize
The new code is more like:
- intercept
- super, super, super, evas object resize
- do stuff
But unfortunately this broke elm_widget (read: all widgets) as
the internal resize was done before the object resize. So,
inside the resize event cb, the resize_obj size would not match
the smart object size. >_<
This is an override of efl_gfx_position_set.
As for the other patches, I hope I didn't break anything.
A problem likely to happen is that the super call was inserted
too early or too late in the call flow. For instance:
_myclass_position_set(obj, x, y) {
position_set(super(obj), x, y);
position_get(obj, &prevx, &prevy);
do_something_with_delta_xy();
}
The above code flow is obvisouly wrong, but may have crept in this
patch (such a bug sneaked in inside smart object, breaking
everything at first).
These should be just overrides of Efl.Gfx.visible.set. Many
widgets were handling smart show() and hide() manually, which
means this patch is quite large.
Hopefully this doesn't break anything, obviously. But here are
some widgets known to be problematic, as the old code flow was
really strange (sometimes not calling the efl_super function):
- window
- notify
Summary:
If entry edje should be changed according to scrollable mode,
the signal will be used. The following signals are added.
"elm,scroll,enable"
"elm,scroll,disable"
Test Plan: N/A
Reviewers: raster, tasn, herdsman, cedric
Subscribers: minkyu, jpeg, akanad, z-wony, Blackmole
Differential Revision: https://phab.enlightenment.org/D4254
Efl.Object.event_callback_call no longer calls legacy smart callbacks;
calling only event callbacks registered with the given event description
pointer.
Create the method Efl.Object.event_callback_legacy_call to inherit the old
behavior from Efl.Object.event_callback_call, calling both Efl.Object events
and legacy smart callbacks.
Update all other files accordingly in order to still supply legacy
callbacks while they are necessary.
Summary:
Image files can have orientation information. Elm Entry have to
call evas_object_image_load_orientation_set() for showing image
with proper orientation.
Test Plan: N/A
Reviewers: herdsman, raster, jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4244
This reverts commit 8a988717e1.
It seems we can't actually inherit from class more than once and neither eo
nor eolian will complain about it. You will just get random weird behavior.
This patch should come back once we have made an interface of edje.
Summary:
In some use cases, font (style) of elm.text in elm entry is changed
on focus and unfocus. user must send "size,eval",elm signal to entry to
force recalc, but this was not happening. This patch fixes that issue.
fixes T4233
Reviewers: tasn, herdsman, raster
Subscribers: cedric, seoz, jpeg
Maniphest Tasks: T4233
Differential Revision: https://phab.enlightenment.org/D4196
Summary:
Edje_entry: In order to read pre-edit characters as well,
send entry_change_info with preedit,changed
Elm_entry: In order to read pre-edit characters as well,
send text to screen reader on preedit,changed.
Test Plan:
1. Change keyboard language to korean/enable prediction
2. Check the reading, text should be read even before committing
Signed-off-by: Shilpa Singh <shilpa.singh@samsung.com>
Reviewers: thiepha, jihoon, cedric, raster
Reviewed By: raster
Subscribers: raster, kimcinoo, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4145
Summary:
When text_set is called for entry, it sets to empty text
before calling _entry_text_append().
but, _entry_text_append() has 'set' parameter.
Therefore text is set in that function, and clearing is not needed.
It can fix "changed" smart callback is invoked multipe times
when a short text is set to entry.
In addition, if text length is larger than ELM_ENTRY_CHUNK_SIZE,
set text directly as amount of chunk size and idler will append
about remain text.
@fix
Test Plan:
1. elementary_test -to "entry5"
2. click "set 10000" button
2-1. changed message should be printed 1 time
3. click "set 10001" button
3-1. changed message should be printed 2 times
Reviewers: tasn, Hermet, id213sin, cedric
Reviewed By: cedric
Subscribers: woohyun, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4134
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
if trying to apply incorrect theme, widget apply default theme and return TRUE.
so there is no way to check it really apply correct theme.
To resolve this problem, _elm_theme_set return three type enum
* related history : 4ca3ef4514
* elm_object_style_set is public api, so I didn't change it.
* typedef name [ Theme_Apply ] is temporarily, please suggest better one.
@fix
Reviewers: singh.amitesh, herb, Hermet, cedric, jpeg, raster
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4073