evas_object_size_hint_max() would not work on a window, unless
it somehow managed to not size itself (which would be another
issue). This patch allows apps to call size_hint_max_set() on
a window. A test case is provided in elm_test (Dialog).
@feature
The idea is to not have resize object in a stack anymore,
but a couple of swallows in the frame and if the stack of
resize objects is wanted, then the user can still explicitely
create it.
Use Efl.Part for window to manipulate the background.
Two part names are used in EDC:
- elm.rect.background
- elm.swallow.background
For apps the part name is only "background".
To set a solid color background (alpha is ok):
efl_gfx_color_set(efl_part(win, "background"), r, g, b, a);
To set an image:
efl_file_set(efl_part(win, "background"), "image.jpg", NULL);
To set an object:
efl_content_set(efl_part(win, "background"), subobj);
The solid bg is invisible by default, will become visible and use
COPY render mode if a color is set. Standard window uses the
swallow part.
@feature
The result of this API can only guarantee that the request has been forwared to the server,
In fact, there is no guarantee that the request can be processed by the server.
In order to use this API correctly, avoid the following conditions.
(The following situations will return a failure)
1. Calling a function in the absence of a touch(mouse) down event.
2. Calling the function twice more than once before the touch(mouse) up event.
3. Calling the function when the elm win already resizing or moving the window.
4. Calling the function using a combination of unsupported modes.
Right usage
1. touch(mouse) down event
2. efl_ui_win_move_resize_start only once using the supported mode combination.
3. touch(mouse) up event
If a touch(mouse) up event occurs after calling the function, it automatically ends the window move and resize operation.
Since there are some non-exclusive modes, you can use a combination of modes.(ELM_WIN_MOVE_RESIZE_MOVE is exclusive with others)
However, Some combination of mode is limited for technical reasons.
At present, only the following nine combinations are allowed.
For more information, see the Elm.Win.Move_Resize_Mode.
1. EFL_UI_WIN_MOVE_RESIZE_MOVE
2. EFL_UI_WIN_MOVE_RESIZE_TOP
3. EFL_UI_WIN_MOVE_RESIZE_BOTTOM
4. EFL_UI_WIN_MOVE_RESIZE_LEFT
5. EFL_UI_WIN_MOVE_RESIZE_RIGHT
6. EFL_UI_WIN_MOVE_RESIZE_TOP | EFL_UI_WIN_MOVE_RESIZE_LEFT
7. EFL_UI_WIN_MOVE_RESIZE_TOP | EFL_UI_WIN_MOVE_RESIZE_RIGHT
8. EFL_UI_WIN_MOVE_RESIZE_BOTTOM | EFL_UI_WIN_MOVE_RESIZE_LEFT
9. EFL_UI_WIN_MOVE_RESIZE_BOTTOM | EFL_UI_WIN_MOVE_RESIZE_RIGHT
Summary:
elm_calendar already have minimum and maximum year set/get APIs.
I've added new APIs that exapanded from the year to the date.
These APIs help us not only set min/max month but also set min/max day.
If you set the minimum date, changing the displayed month or year if needed.
Displayed day also to be disabled if it is smaller than minimum date.
Reviewers: woohyun, Hermet, jpeg, CHAN, cedric
Reviewed By: CHAN, cedric
Subscribers: CHAN, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4226
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
If entry is set into layout, entry does not need to
be explicitly shown as layout is already show.
Though it does not lead any error, but it is not
necessary too.
@fix
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>
Test Plan: elementary_test->entry4
Reviewers: singh.amitesh
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4405
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This test was reworked for better show how sorted insert work.
Currently sorted insert work bad. The new inserted items does not
check the subitems of prev item.
TODO: fix the elm_genlist_item_sorted_insert.
Animations are not supported by Exactness. The test screenshots were not
giving any kind of information as they were taken only when the front
was displayed on the screen.
With this change, animations set on the back of the flip can be replaced by
a background, meaning that flip switches can be checked.
test_efl_ui_text was creating a very small window,
with cropped components, etc.
So let's create it with a mininum size to be able to
properly see this test.
Summary:
Datetime widget is module based, so datetime widget is used as base for efl_ui_clock and merged dayselector/clock features into efl_ui_clock.
Added day selection and seconds support in efl_ui_clock.
Added clock features like auto updation of time, stop timer etc in efl_ui_clock.
Added API to enable/disable edit_mode. efl_ui_clock can be configurable to display either only day/date/time or display any two of them or display all three.
Added efl_ui_clock.c and test_ui_clock.c. Theme and Module is added in another patch by Amitesh.
Original author is Yeshwanth <r.yeshwanth@samsung.com>. I have polished this patch a bit and make it compatible with current EFL code.
Test Plan: test_ui_clock
Reviewers: bu5hm4n, tasn, yashu21985, jpeg, cedric, raster
Subscribers: CHAN, woohyun
Differential Revision: https://phab.enlightenment.org/D3938
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>
the buttons should scroll up and down by 1 px, but nothing move here
That test was still broken in other ways, for example:
play a bit with the "to X Y" buttons and see if it always do the correct thing
This was simply annoying me. A scroller packed inside a box 150x150
should have enough space to hold an object of size 140x140. That's
a whole lot of 10 pixels margin!
This patch adds a special case code when the content "seems" to fit
inside the box but still one or both bars are visible. One problem
is that we can't know from the theme how much margin is used by a
scroller even when its bars are hidden. So we have to try to remove
them and then recalc to test.
This definitely adds quite a few more calculations if the state of
the scroll bars changes, but the result is way more pleasant :) This
should be limited to corner cases anyway (when the content size is
within 0 to ~20 pixels of the scroller size, depending on the theme
of course).
The test case is adjusted to show that same size content triggers
a show on the bars (because of theme margins). See CtxPopup test.
Summary: EINA_TRUE translates into ELM_AUTOCAPITAL_TYPE_WORD, so use the latter to be consistent with the API.
Reviewers: jpeg, minkyu, devilhorns
Subscribers: stefan_schmidt, devilhorns, cedric
Differential Revision: https://phab.enlightenment.org/D4354
Summary: Added new flip mode called ELM_FLIP_CROSS_FADE, which causes one content to fade in while the other fades out. Updated test_flip.c program to include a button for testing the new flip mode.
Test Plan: Run the elementary_test program, and open the Flip test. There is a new button labelled "9" that will activate the new cross-fade flip mode.
Reviewers: Hermet, bu5hm4n, raster
Reviewed By: bu5hm4n
Subscribers: bu5hm4n, cedric, jpeg
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D4314
This removes EO APIs related to an unmaintained client/server
model for applications. The reasons for this removal are the
following:
- unused
- no support in E
- relies on dbus as the sole transport layer
- unmaintained since the original patches
- only EO API (iow: beta, never released API)
I've also never seen the test cases (in elementary_test) actually
work.
According to Gustavo (k-s), the original author of this feature
is not involved in EFL at the moment, and unlikely to be in the
near future.
Note that terminology has in the past used those APIs when it
was still using some beta EO APIs. This code is now long gone,
removed in terminology commit 3ffcbadd6f9881472db6 (2014/12/13,
for version 0.8.0)
If someone wants to step in and maintain the implementation,
protocol and (EO) API, then feel free to revert this patch
and revive the feature. But it will need to be more solid than
this implementation.
Summary:
Dimensions of gengrid items can be altered for
non homogenity.
Care must be taken however to set the homogenous
size for items using elm_gengrid_item_size_set().
In horizontal mode only the heights will change
and in vertical mode only the widths. Fixed dimension
will be as set with elm_gengrid_item_size_set().
This is forked by https://phab.enlightenment.org/D2422
Test Plan:
elementary_test -to "Gengrid Resized Items"
Current test program provides focus autoscroll
and item looping options.
Reviewers: raster
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4330
"item,activated" smart callback is added to notice when an item is
activated.
"item,activated" smart callback is called as follows.
1. Item push is finished and the new item is activated.
2. Item pop is finished and the previous item is activated.
void *event_info in smart callback is the activated item pointer.
"push,finished" and "pop,finished" smart callbacks are added to notice
when push and pop operation is finished.
New smart callback signals are added as follows.
"push,finished,item,activated" : Called when item push is finished and
void *event_info in smart callback is activated item (new item).
"push,finished,item,deactivated" : Called when item push is finished and
void *event_info in smart callback is deactivated item (current item).
"pop,finished,item,activated" : Called when item pop is finished and
void *event_info in smart callback is activated item (previous item).
"pop,finished,item,deactivated" : Called when item pop is finished and
void *event_info in smart callback is deactivated item (current item).
This adds a few callbacks to inform applications about
async open and preload:
- load,open
- load,ready
- load,error
- load,cancel
This patch adds a new EAPI as well: elm_image_async_open_set.
This is the only way to use async file open with the legacy APIs
and should be easily matched with whatever EO API we end up using
(be it based on promises or events).
Alter the test cases for make check as they were using the
unstable EO API which I just removed.
Thanks @arosis for the original patch. And sorry for the huge
delay in merging this.
See also: https://phab.enlightenment.org/D4215
@feature
The events for (async) image download will be redefined by
@cedric later. So, remove them from eo now and only keep their
legacy implementation.
Also, improve elm_test example and add docs.
Specifying explicit engine name is not honored now
because backened engine name depends on the system.
We prefer to guide accelerator rather than engine.
This change lets us remove a field from the structure that leads to
around 20KiB more of saving in private dirty pages in elementary.
This also looks a bit better and feels a bit cleaner.
Breaks API and ABI.
Before this commit, function overrides were explicit. That is, you'd
have to explicitly state you were overriding a function instead of
creating a new one. This made the code a tad more complex, and was also
a bit more annoying to use. This commit removes this extra piece of
information.
This means we now store much less information per function, that will
let us further optimise out structures in the future.
It has been discussed on the ML (thread: "[RFC] rename efl_self") and
IRC, and has been decided we should rename it to this in order to avoid
confusion with the already established meaning of self which is very
similar to what we were using it for, but didn't have complete overlap.
Kudos to Marcel Hollerbach for initiating the discussion and
fighting for it until he convinced a significant mass. :)
This commit breaks API, and depending on compiler potentially ABI.
@feature
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.
This removes:
Efl.Event interface
And renames:
Efl.Event.Input -> Efl.Input.Event
Efl.Event -> Efl.Input.Event (merged)
Efl.Event.Pointer -> Efl.Input.Pointer
Efl.Event.Key -> Efl.Input.Key
Efl.Event.Hold -> Efl.Input.Hold
This also moves some interfaces from efl/ to evas/ where they
belong better.
This allows renaming Eo_Event to Efl_Event.
This was never used and there is no plan to ever use it. I'm going to
soon add a different mechanism with which it will be possible to provide
them again to Eo if ever needed without breaking ABI. Though it's
unlikely it will ever be.
combobox: add Multiple selection feature
This exposes problems with name clashes and behaviour change for the legacy API.
Revert for now and we can revisit for 1.19.
Git revert got to confused as this was committed before we merged elm in. I did
the revert manually.
We use disabled across our APIs so better fix this new one to unify it before
we release. This was introduced in commit 0116e07288
Many thanks to DaveMDS for reporting this!
Summary:
elementary_test search menu is created again and again
at each search query. Here the optimaization is to remember
the menu item and retain them instead of deletion and reuse them.
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>
Test Plan:
search item in elementary_test and measure the
performace time.
Reviewers: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4218
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
This shows off how to properly use an inline window.
I tried to add extra smarts inside elementary to handle those
inline windows like normal objects... but it led to more bugs.
The only way that makes sense to use this inline window
is to separately treat the image object and the window
itself. Any other approach is too tricky.
See T1973
This is a (minor) API & ABI break in Eo.h!
I say minor as eo_override shouldn't be used yet (EO is unstable
and this patch includes all the use cases in EFL).
I'm not very happy about the new form of the macro, but it avoids
two things:
- passing in a struct (valid in C, but never used in EFL)
- using a GCC construct to create structs on the fly
It was inspired by the event array define, but I don't think
we need the runtime memcpy here.
See also:
https://gcc.gnu.org/onlinedocs/gcc/Compound-Literals.html
Summary:
If there is no member styles when a text_class is updated,
newly added styles can't be updated.
So, newly added styles as member of text_class should be updated.
@fix
Test Plan:
Test case is included.
1. Run "elementary_test -to "font overlay""
2. Press Next button. Check the font size.
3. Press Prev button.
4. Put font_size as 50
5. Click Apply button.
6. Press Next button. Check the font size is not changed.
Reviewers: cedric, tasn, herdsman, raster
Subscribers: jpeg, z-wony, Blackmole
Differential Revision: https://phab.enlightenment.org/D4125
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>
elementary_test -to "Entry on Page Scroll"
Click on "Click this and close popup"
A weird rectangle would be temporarily visible while the
popup is fading in. The rectangle was the block_events
rectangle. By default, elm_popup blocks events, and its
parent must be the whole blocked input area. This fixes the
parent in the example.
I think the block_events region should be fading in and out
as well, because it looks terrible right now.
Note: this changes the position of the popup, but makes
the whole "block_events" thing actually work (avoiding
other render artifacts).
Summary:
After setting focus to disabled item, focus does not work properly.
It is necessary to consider disabled state of each item
when selecting next focused item.
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
Test Plan:
1. elementary_test -to 'gengrid disabled item focus'
2. check 'item select on focus disable'
3. move focus to disabled item
4. observe focus and compare before this patch
Reviewers: cedric
Subscribers: minkyu, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4115
Summary:
Focus region must be located in entry object.
Therefore if it get out of entry,
it just returns last cursor position that can be shown.
@fix
Test Plan:
1. elementary_test "Entry on Page Scroll"
2. click 2nd btn and close popup
3. page should not be scrolled
Reviewers: raster, herdsman, id213sin, woohyun, tasn, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4072
Summary:
There is a issue about passing the focus to unfocusable scroller.
To prevent the issue, check the status of focusable object and child object
before passing the focus.
Test Plan:
{F38439}
I changed the test file.
The problem occured as below.
1. click button
2. show popup
3. click cancel button in popup
4. lost the focus
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: minkyu, sju27, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4056
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
It supports the same syntax as the config value, but
overrides it. This provides a more convenient way to select
the acceleration for a single window.
Its get() value should be what was effective when the window was
created. So it can depend on the config or a previous call
to set().
@feature
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 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
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...
@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
Not sure if this test case is really good, but it was
necessary to prove that input event refeed can work from
application side. This is a feature that should work
but shouldn't be used :)
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.
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
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
This reverts commit 2ddbc5fc9a.
You cannot change default behaviour of released code!
In this way you make applications behave differently on different
efl version.
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:
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
When we do dnd with multiple items in genlist, gengrid in dnd test,
the items are correctly transfered.
It is caused by incorrect sent data.
This patch fixes by adding new line separation between items' data.
* use a genlist to speedup and make use of group ability
* manually list the icons (otherwise old and deprecated icons show up)
NOTE: as always this expose a new genlist bug: just change the size
of the icons (with the radio button) and scroll the list...new realized
items get a wrong size.
The idea here is to provide a "real" fdo icon theme along the icons in the elm edje theme.
To minimize file redundancy the icons are profided directly in a fdo structure and picked
in icon_fdo.edc. Also I'm using all the icons in svg format so that we don't need to provide
all the creazy sizes as per fdo spec.
More icons will comes in the next commits
This renames some APIs from Efl.Pack in order to try and
make them more sensible. Feedback welcome.
Also, most APIs now return bool, where false is quite unlikely
to happen.
This removes Efl.Pack_Named which had a terrible name,
removes Elm.Container which should have been renamed
Efl.Ui.Container anyway, and introduces an interface
Efl.Container instead.
The hierarchy tree is now changed as objects don't inherit
from Efl.Container (it's an interface, not a regular class)
but only implement it. Obviously it is very easy to
reintroduce an Efl.Ui.Container parent class if we need it,
but I guess it should have some actual logic. It's basically
part of what Elm.Widget already does.
Some function names have been modified to look better in C
with the efl_content prefix.
@feature