This implements a new builtin, stringshare, which is replaced with the right
pointer to Eina_Strinshare as necessary. This allows simplifying binding code
(it can call the proper eina APIs, deal with lifetime etc).
It also removes the extern Eina.Stringshare typedef from eina_types.eot, which
was actually incorrect and would generate invalid code in binding generators.
@feature @fix
Evas.Common_Interface not only had a bad name, it also
wasn't in line with how we can get a loop object, for
instance.
Use eo_provider_find in each implementing class.
Summary:
When edje_password_show_last option is enabled, the edje_entry uses <password=off>
for showing last character. But, when password mode is disabled by the elm_entry,
<password=off> is remained in the text. It can cause some problems.
Because, there is no way to control password mode by API for the edje_entry.
The elm_entry can't remove <password=off> tag before getting text from the edje_entry.
So, the patch adds edje_object_part_text_hide_visible_password() function and
the elm_entry will use this when elm_layout_theme_apply() is called.
@fix
Test Plan:
1. Run "elementary_test".
2. Show "Entry Password" demo. (Newly added by this patch)
3. Password mode is enabled. Put some text.
4. Click "Show Password" check box to disable password mode.
5. Put more text.
6. Click "Hide Password" check box to enable password mode again.
7. See a character among the text is visible. (without this patch)
Reviewers: tasn, herdsman, cedric, jpeg, thiepha, raster
Reviewed By: raster
Subscribers: Blackmole, z-wony, woohyun
Differential Revision: https://phab.enlightenment.org/D3988
This was needed when the eo composite object was still in beta. Since commit
d7c45e41d4 this is no longer the case. No beta
part left in eo base so we can safely remove this define.
This is legacy stuff. I wish we could hide it from our inheritance
entirely. Instead, just make it abstract, remove all functions from
eo (doable here) and rename with the keyword "internal" in the new
ugly java style name.
Summary:
efl_ui_flip_internal_part_eo.h doesn't exist but it belongs to
the target list of Makefile.
Remove it from the list to fix an error when building elementary only.
Test Plan: $ make (in src/lib/elementary path)
Reviewers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D4046
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This composite object utilizes the Efl.Canvas.Text, Efl.Canvas.Text.Cursor and
Efl.Ui.Interactive API to server as a proper replacement for the Elm Entry
widget.
@feature
@feature
Ui text: Add a new interactive version of Canvas.Text
This object is internal and is essentially a Canvas.Text that accepts
key and mouse input. It should be used by Ui.Text as the text
layout/input driver.
Ui text interactive: Add include guard to header.
Ui internal text: Improve input handling support and add selection.
Ui internal text: Add a lot of imf stuff.
Add more text selection handling code.
Add support for allowing selection.
Efl.Ui.Text.Interactive: (reword) code format fix.
Efl.Ui.Text.Interactive: Remove useless struct members.
Add multiline toggle support and a constructor.
Text interactive: Add support for legcay newline.
Text interactive: Use the new cursor_equal function.
Efl.Ui.Text.Interactive: (Rebase split) fixup cursor
Efl.Ui.Interactive: (Rebase split) fixup line_jump_by usage
Text interactive: Cleanup tab/return handling.
Text interactive: Use cursor_equal more.
Text interactive: Simplify and unify selection handling in key input.
Text interactive: Fix user text change reporting.
This is useful for implementing undo/redo.
Text interactive: Add documentation to event.
Efl text interactive: (Rebase reword) Add a new interface to be used later.
Ui text interactive: Migrate one missing change_info call.
Ui text interactive: Mark the correct type for the change event.
Ui text interactive: (Edited) Move to elementary and add "selection,changed".
This is useful for implementing selection handlers. We had to move it to
elementary because we started referencing cursors.
Ui internal: Emit an event for selection changed.
Ui text interactive: Remove unused code.
Ui text interactive: Remove more unused code.
Ui text interactive: Remove more unused code.
Ui text interactive: Rename improperly named function.
Ui text interactive: Update code to the new canvas text api.
Ui text interactive: provide access to the selection cursors.
This is the new API for manipulation selection outside of the object.
Just manipulate these cursors to manipulate the selection.
Fix previous commit.
Ui interactive: Clean up internal functions.
Ui interactive: Fix abuse of selection in word deletion.
Ui text interactive: Fix selection.
Ui text interactive: Fix right key to move next.
Ui text interactive: Fix selection using keyboard.
Ui text interactive: Don't emit selection changed events twice.
We now use the cursor changed event to track changes, so no need
to manually emit events ourselves.
Ui Text interactive: Remove selection,cleared signal, use changed instead.
If the selection cursors are equal, there's no selection, if they are
different, there is.
Ui text interactive: remove redundant code.
Ui text interactive: Don't emit selection changed events on init.
Ui text interactive: Remove unused variable.
Efl.Ui.Interactive: fixup char_coor usage
Ui text interactive: Fix some fixmes.
Ui text interactive: fix selection_cursors_get
Ui text interactive: Skip key down events if marked ON_HOLD.
only start throttling ocne we have a window and it has rendered or
been focused or mouse has gone in - then we are surely really visible
and sane and only start throttling if no windows are visible then. if
auto throttle is on this can improve startup time by the trottle amount
Summary: Edje_Message_Float_Set struct is already allocating double and hence no need to add extra double allocation.
Reviewers: Hermet, jpeg, cedric, singh.amitesh
Reviewed By: singh.amitesh
Differential Revision: https://phab.enlightenment.org/D4035
When this was renamed from elm_flip to efl_ui_flip the _eo.h header was lost
which is needed as redirection. This broke for me in distcheck when the .eo.h
was going to get generated. It also aligns it with the other headers we have
here.
This allows apps to set the objects min size with hint_min,
while letting the rest of EFL define the minimum size with
rstricted_min.
I don't like the property names much...
Summary:
- selected callback should be called when the user releases a mouse button
and selects an item.
Reviewers: cedric, jpeg, Hermet, woohyun
Subscribers: conr2d, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4022
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Added definition for item_selected_get API
Signed-off-by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan: select an item, call item_selected_get API to check status of the item
Reviewers: cedric, CHAN
Reviewed By: CHAN
Subscribers: CHAN, rajeshps, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3999
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Hoversel will be rearranged when its parent is resized.
This patch was written by @godlytalias on tizen side.
Reviewers: cedric
Subscribers: jpeg, godlytalias
Differential Revision: https://phab.enlightenment.org/D4025
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This includes:
- align
- min (now content_min)
- request
- max
- padding (now margin)
- weight
This does NOT include:
- display mode (compress, expand... a hint used by naviframe only).
ecore_cocoa_selection_clipboard_xxxx() have been renamed into
ecore_cocoa_clipboard_xxxx() and they have nothing to do with
selection, only with clipboard.
Since the API is not stable yet, I can change it.
This variable looks like it may be used in the future, but for now
just causes additional compiler warnings so comment it out for now.
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
@fix
Summary: fixx auto_hide mode to work correctly
Test Plan:
1. launch elementary_test - ctxpopup
2. click normal ctxpopup and auto_hide ctxpopup sample
3. check the auto_hide function whether it is work well or not
Reviewers: Jaehyun_Cho, raster, jpeg, cedric, singh.amitesh, DaveMDS, Hermet
Reviewed By: DaveMDS
Differential Revision: https://phab.enlightenment.org/D3967
After a previous patch, compilation of apps would fail
as the include order was invalid. Efl_Ui_Flip_Mode was
defined after the typedef using it unless EO APIs were
enabled.
Summary:
Issue: As edje object is used instead of layout for components mode, the content widgets like buttons are added as
subobject of colorselector hence when we unset the edje object on mode change the buttons still remain subobject of colorselector causing issues when all subobjects of colorselector is queried(sub objects are queried during atspi mode).
Soln: Use layout instead of edje object.
Signed-off-by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan: Change the mode to Palette mode and access the children of colorselector.
Reviewers: Hermet, cedric
Subscribers: govi, rajeshps, kimcinoo, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3987
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Colornames updated with spaces so that any TTS engine
can read them out in an understandable manner.
Signed-off-by: Shilpa Singh <shilpa.singh@samsung.com>
@fix
Test Plan:
Enable ATSPI mode
Tap colors and listen to colorname's
Reviewers: cedric
Subscribers: rajeshps, jpeg
Differential Revision: https://phab.enlightenment.org/D3997
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When reconfigure the tooltip as orient, the tooltip can located out of screen.
This patch will adjust the coordinate so that can be seen whole tooltip.
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Reviewers: cedric, Hermet
Subscribers: seoz, jpeg
Differential Revision: https://phab.enlightenment.org/D4007
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Elm.Interface.Fileselector now supports Efl.Model objects, allowing users
to work with paths from different data models.
Example of model attribution:
ELm_Fileselector *fs = eo_add(EFL_FILESELECTOR_CLASS, NULL);
Efl_Model *model = ...;
elm_interface_fileselector_model_set(fs, model, NULL);
Now when dealing with pointer types, we will not get pointer to
pointer semantics in callbacks and eina_promise_owner_value_set
for Eina_Promise.
It will work as expected:
Eina_Promise_Owner* promise = eina_promise_add();
void* p = malloc(sizeof(T));
eina_promise_owner_value_set(promise, p, &free);
This does:
1. Forward keyboard events from evas to win
2. Allow feeding external input events
Input events can be faked by apps by simply forging
eo objects of the proper type (key or pointer evt) and
calling eo_event_callback_call().
Such events will be forwarded to the internal Evas, and
some bool flags prevent infinite refeeding loops.
efl_event_dup() returns fake events for this to work.
@feature
This reverts commit ac5a0b7e79.
I added assert(pd == sd) in the modified code and couldn't find
anything suspicious. The proper class is used in eo_data_scope_get().
I also can't find a crash or a bug currently in hover. I know there
was a problem earlier, but that was fixed in 3092e08a83.
Now, if there is still a problem, we should check it carefully.
Pinging @cedric
We can not assume that the elementary parent will be also somewhere in the eo parent
hierarchy. We need to explore both when doing an eo_provider_find in elementary for it
to be really useful.
This lets me narrow down the remaining cases of pointers across the EFL.
The void pointers will later need to be reevaluated on per-case basis and
replaced appropriately where possible/feasible.
1. remain elm_win_type_set
2. remain elm_win_alpha_set
3. remain elm_win_available_profile_set/get
app usually set availble profile into window, and app fw or other lib can read it.
so I remain get/set api both.
4. remove elm_win_profile_set/get from eo
5. remove illume feture in eo and move it to legacy
This code was written when eo_del() was removed and eo_unref() was the
recommended practice. Since we added eo_del() back we now need to adjust
this new code accordingly.
This reverts commit 546ff7bbba.
It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.
We would have an issue with references and objects being freed too soon
and in general, issue with the references.
Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.
eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
1. remain borderless property.
2. shaped property was removed because wayland not support this.
3. remain noblank property.
4. remain role, name properties.
5. remove title property because it can be supported using name property
1. remain iconified, maximized, fullscreen property
2. remain sticky property
3. change return value type of modal from bool to enum for the future.
4. merge urgent_set and demand_attention
5. remain activate method
1. remain focus_highlight_style,focus_highlight_enabled,
focus_highlight_animated,prop_focus_skip,focus. because each window need to set the focus
feature.
2. autohide, autodel is remained for convenient.
3. icon_name will be removed. elm_win_icon_object_get can used instaed of icon_name.
elm_win have three feature releated with screen.
1. screen_rotation_get
2. scrren_size_get
3. screen_dpi_get
so create efl_screen interface, and elm_win implement that interface
Summary:
- elm_map has a scrollbale interface and it is set
as ELM_SCROLLER_SINGLE_DIRECTION_SOFT by default.
- elm_map can be rotated by gesture or by an API
elm_map_rotate_set, so this single direction
makes scroll unnatural.
Reviewers: Hermet, cedric
Subscribers: conr2d, jpeg
Differential Revision: https://phab.enlightenment.org/D3986
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This is going back to the same idea as legacy. We will have
events such as:
- move
- down
- up
- in
- out
- wheel
- cancel ("new" - very rare)
Now the question is whether/how we should divide "multi" events
which start from the 2nd finger from standard mouse events. The first
multitouch finger should by default look like a mouse event.
This moves Efl.Pointer.Event back to Evas. Originally I wanted
to share this class with Ecore but eventually I didn't need to
do so, since only ecore_evas (which depends on evas) really needs
access to these.
The internal data struct is not moved out of efl (yet?)
previously, elm_image refered to align values
set by evas_object_size_hint_align_set function
to position the internal image inside an image object.
size hint value is for positioning the image object inside its container object,
so the previous code is inappropriate.
this commit adds 'align' property for positioning the internal image.
Summary:
Currently when an item in gengrid is focused and if it is scrolled
off the viewport halfly and if it user clicks on it, it won't be
scrolled into viewport. Only non-focused items will be scrolled into
viewport when clicked.
Test Plan:
elementary_test -> Gengrid focus -> Click an item ->
Scroll it little bit out of viewport -> Click again
Reviewers: prince.dubey, shilpasingh, cedric, raster, SanghyeonLee
Subscribers: seoz, rajeshps, govi, jpeg
Differential Revision: https://phab.enlightenment.org/D3977
Previously, preserved content was shown unexpectedly after its naviframe
item was popped because the preserved content was not removed but was
unset from its naviframe item.
Since popped naviframe item becomes hidden on the screen, the preserved
content of the popped naviframe item should become hidden by default as
well.
So, I was storing a single "sd" pointer (class private data)
but using it in two different places, ie. as if it were two
different classes. Crashes happened, complaints were heard.
See T3714.
This fixes T3714
Efl.Part uses a basic inheritance for layout objects, but somehow
this completely falls apart when the child class overrides all
the functions. Weird. I'll check that more.
Summary:
When the widget is unset from any container, a parent of the widget
doesn't exist. So we should set its parent to the top object.
But if we just set sd->parent, the parent can not find the widget as a
child. So the container widgets set the parent-child relation when
sub object is unset.
This commit is related to 0822ad2195.
@fix
Test Plan:
Check this issue.
https://phab.enlightenment.org/D3855
The unset widget don't added any widget as child.
So when it set scale, the widget can not reload the thmeme.
Reviewers: raster, cedric, Hermet, reutskiy.v.v
Reviewed By: Hermet, reutskiy.v.v
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3957
Conflicts:
src/lib/elementary/elm_mapbuf.c
The default scale type should not be none as this breaks elm icon and elm image as it doesn't follow the default view of elm image before elm image scale was added. The default behavior is fill so this commit makes fill the default.
elm_win only support two kind of apis.
1. elm_win_screen_rotation_get
this api is used to detect screen rotation before app doing something before rotation event.
for example, app can query rotation before deciding there layout.
2. elm_win_available_rotation_set/get
like video app, can set only landscape mode if they need.
This touches Edje and also Elementary where part names are used.
This commit blew up in size since now all content part APIs
(get, set, unset) require to use Efl.Part instead.
This is a big refactoring commit, but no logic should
have been changed. Fingers crossed.
Summary:
In on_focus_region function,
entry returns relative x,y position from edje object.
It should be calculated from elm object's position.
@fix
Test Plan:
1. $elementary_test "Entry on Page Scroll"
2. click under button
3. click upper text in entry
4. page should not be scrolled
Reviewers: tasn, cedric, woohyun, Hermet, herdsman, raster
Subscribers: Blackmole, id213sin, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3923
conformant set api give information to enlighten ment, this window
need to know the change of conformant size.
but in the future, window have to section background and forground.
if user set layout as content of background part, the layout size is
not changed by clipborad or keybord.
if user set layout as content of forground part of window, the layout size
is changed by clipboard or keyboard state.
and the window notify to the enlightenment it has interest soft input's state
automatically, without users api call
Summary:
genlist text_get and content_get send signal for visibled or re-arrange
it's part on edc.
this singal may need to be processed before calculating item edc for
proper result.
we cannot call one only one time in realized function, because, size
must calculated before the realized callback, and user can send
customized signal in their realized callback which also need to be
processed.
Signed-off-by: SangHyeon Lee <sh10233.lee@samsung.com>
Complex types (i.e. list, array, hash, accessor etc.) now do not require
pointers with them anymore (the pointer is implied) and the same goes for
class handles. Eolian now explicitly disallows creating pointers to these
as well. This is the first part of the work to remove pointers from Eolian
completely, with the goal of simplifying the DSL (higher level) and therefore
making it easier for bindings (as well as easier API usage).
@feature
Fixes missing app icons (and others) when using elementary icon theme.
This is required to comply with the fdo icon spec.
Now that we have a fuller icon theme in elementary it's not intrusive
Summary:
There are no methods to close the popup with key down.
So I added the escape key binding to close the popup with escape key.
Test Plan:
1. patch this code
2. delete /home/{user}/.elementary to refresh the config value
3. launch elementary_test -to "popup"
4. click one example of the list and press escape key
5. see closing the popup
Reviewers: cedric, raster, jpeg, Jaehyun_Cho, Hermet
Reviewed By: Hermet
Differential Revision: https://phab.enlightenment.org/D3876
Conflicts:
src/lib/elementary/elm_priv.h
Summary:
Avoid SIGSEV in elm_index_item_sorted_insert when cmp_data_func returns >=0
After deleting eo_item and making it NULL in above case, view(it) is created which resulted in crash.
Test Plan: elementary_test -to 'index 2'
Reviewers: singh.amitesh, jpeg, cedric, raster, Hermet
Reviewed By: Hermet
Subscribers: Hermet
Differential Revision: https://phab.enlightenment.org/D3956
Summary:
In inline function _elm_list_item_free, null check is performed
after accessing its member.
@fix
Reviewers: cedric, Hermet
Reviewed By: Hermet
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3955
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.
@feature
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).
This means Eo no longer complains if you have a parent during deletion.
Summary:
The default scrollable flag of popup can be different in each profiles.
So I added the scrollable configuration of popup.
@feature
Test Plan:
1. Before
1) elementary_test -to popup
2) resize window to smaller
3) Click 15th item, "popup-center-title + genlist content + 1 button"
4) Then popup will show, but its list is very long, only small part of popup could be shown.
2. After Patch
1) change "popup_scroller" value to 1 in base.src, then run elementary_test -to popup or ELM_POPUP_SCROLLABLE=1 elemantary_test -to popup
2) resize window to smaller
3) Click 15th item, "popup-center-title + genlist content + 1 button"
4) Then popup will show, popup's genlist will be in scroller, so entire popup can be shown.
Reviewers: jaehwan, id213sin, cedric, raster, singh.amitesh, SanghyeonLee, Hermet
Subscribers: Hermet, minkyu, herb, jpeg
Differential Revision: https://phab.enlightenment.org/D3856
all quickpanel APIs were only supported in X.
quickpanel property can be managed by name property.
zone set canbe managed by aux_hint
minor, and major set are not used anymore
This reverts commit 2ddbc5fc9a.
You cannot change default behaviour of released code!
In this way you make applications behave differently on different
efl version.
This patch cleans up various unused variables and unused function
parameters when not building for X11.
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
These functions are only used if we are compiled with X11 support, so add
an #ifdef to remove it from wayland builds
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
These handlers are only used when building for X11, not for Wayland,
so conditionally compile them in/out
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
When we compile efl using --with-x11=none, then
_tempfile_new and _tmpinfo_free end up being undefined, however these
functions are used by wayland too so they need to be defined regardless.
@fix
Summary:
Usually, popup have a scroll bar when its content is too long to display in popup's size.
But now, default option is unscrollable.
So change default option and popup's test case.
Reviewers: jaehwan, Hermet, herb
Subscribers: cedric, singh.amitesh, jpeg
Differential Revision: https://phab.enlightenment.org/D3941
Summary:
"clicked" callback must be called when an item is really clicked.
But, toolbar had called it whenever an item was selected.
Even, it could be triggered by "elm_toolbar_item_selected_set()" API.
So, "clicked" callback will be called when only an item is clicked.
Also, it changed confusing names of related internal functions.
@fix
Test Plan: N/A
Reviewers: jaehwan, woohyun, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3937
Summary:
There is no way to allow/deny the text selection feature.
It is only controlled by disabled state. But, some UX does
not want to allow the text selection on editable entry widget.
@feature
Test Plan:
Run the following test case. You can see "Select Allow" check box.
elementary_test -to entry
Reviewers: tasn, herdsman, cedric, thiepha
Reviewed By: thiepha
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3934
Summary:
genlist content_get sometimes work weird after reusable_content_get pushed.
cached content is shown even content_get function is not exist or
return NULL.
now cache check item_class instead of item style string.
Test Plan: check genlist cache in elementary_test
Reviewers: Hermet, cedric, raster
Subscribers: Jaehyun_Cho, jpeg
Differential Revision: https://phab.enlightenment.org/D3921
Conflicts:
src/lib/elementary/elm_genlist.c
Use eina_strbuf to simplify the data preparer for uri.
This helps remove the complex for loop and also
reduce the memory allocated for uri array.
This also removes redundant checking.
Some APIs are move from eo to legacy as in ab3058d3,
but not all api calls are changed. This causes build break
in mac with cocoa backend.
This patch fixes it.
@fix
If we do drag & drop and then do copy & paste, both _wl_selection_receive
and _wl_dnd_receive are called for one action (dnd or cnp). It is reduntdant.
We only need one data received callback to handle two cases dnd and cnp.
If we do drag & drop and then do copy & paste, both _wl_selection_send
and _wl_dnd_send are called for one action (dnd or cnp). It is reduntdant.
We only need one callback to handle two cases dnd and cnp.
we support different types for DnD, but there is no converters.
This patch adds converters for types, so that we can send
different data for different types.