this has 2 bugs really. 1 - the format masks for plain text included
markup which ... is wrong - right? that should have a mime type of its
own... either way it leads to plain text pasts being handled wrong in
wayland... so this fixes that
also the string buffers in wayland just were nothandled right. buffers
were raw binary buffers plus size,not strings, but they were strdup'd
etc. assuming nul termination. oh so wrong to do that. this also fixes
that as i fpound it while fixing the above format bug.
this fixes T6284
@fix
[Dereference after null check]
(1) src/lib/ecore/ecore_main.c
- _efl_loop_handler_efl_object_finalize checks if pd->loop_data is NULL.
After that, _handler_reset > _handler_clear > _ecore_main_fd_handler_del >
_ecore_main_fdh_pool_del is directly dereferencing pd->pool_data.
- _efl_loop_handler_efl_object_parent_set checks if pd->loop_data as well.
Then it calls _handler_reset as well.
(2) src/lib/ecore_wayland/ecore_wl_dnd.c
- ecore_wl_dnd_selection_set checks if t - result of wl_array_add - is NULL.
And it is dereferecing t directly for wl_data_source_offer.
(3) src/lib/elementary/efl_ui_dnd.c
- Third parameter const char *data could be NULL.
In this case strlen dereferences NULL. The data should be non NULL value.
I have checked this with Mr. Thiep Ha.
(4) src/lib/evas/canvas/evas_object_inform.c
- _efl_canvas_object_efl_gfx_stack_stack_below checks if obj->layer is NULL.
So it could call evas_object_inform_call_call_restack which is dereferencing
obj->layer directly.
tell other windows they lost their selections correctly if you have
multiple windows within the same process. this fixes multi-window mode
in terminology.
@fix
When changing cursors under wayland sometimes we'll see the old cursor
moved to the new hotspot briefly before the cursor changes. This makes
that suck less often.
A proper fix would involve creating a new wayland surface for every
cursor change (actual change, not just a new frame of an animated
cursor). Given the current internals this is invasive. Do the
easy thing for now.
Summary:
we have to check whether all of descendant are none_logical.
ref T6800
Test Plan:
1. elementary_test -to ctxpopup
2. Click 'Ctxpopup with user content'
3. Try focus ctxpopup content(button) using arrow key.
4. Check that the content is focused (you can move scroll bar)
Reviewers: bu5hm4n
Subscribers: cedric
Maniphest Tasks: T6800
Differential Revision: https://phab.enlightenment.org/D5856
Summary:
model based list need to be under the namespace of 'Efl.Ui.View".
thus, I renamed 'Efl.Ui.List' to 'Efl.Ui.View.List' properly.
Test Plan: N/A
Reviewers: cedric, felipealmeida
Differential Revision: https://phab.enlightenment.org/D5855
When the subchild where we request subchilds from was regular, the while
loop would have run infinitly. This is now fixed by at least calling
once _next, the check to not run outside the node is now done with
calculating the depth of the nodes.
settings the redirect might result in unfocus calls, that might unset
evas_object_focus on a object that might be registered in two managers
due to border linking. This fixes mysterical disapearing focus.
We dont delete the adapeter when we are still focused, to set anyway the
correct view to it, we need to set the view to the adapeter as often as
possible
somehow genlist leaks the view sometimes, thus the adapter is not
deleted when the item is deleted. This resulted in strange ghost focus
objects in the window.
after that someone probebly wants to check where the last focus was on,
if the set of boder elements has changed since the last border flush, then the
element might not be registered in the parent manager
This patch implements bug compatibility.
genlist internally uses both a tree structure with Eina_List and a flat
Eina_Inlist to track its items. ALL of the items are in the inlist while
subitems appear in their parent's list. As a consequence both lists must
be kept in sync pretty tightly. Obviously this is not done at all and
has led to countless bugs, as soon as tree or groups are used:
- Invalid order of items (visually)
- Invalid order of items with sorted_insert
- Glitches in the matrix
- Crashes with sorted_insert
- Odd/even styles not properly set
- Promote/demote functions broken by design
- Developers send to psychiatric hospitals
- Etc...
Legacy genlist (1.19 and before) used an inlist order that basically
didn't make sense, as it didn't follow the logical order of elements (as
they appear visually). Unfortunately this has "worked" (really, that's a
huge stretch to use this word here) for a long time this way. As a
consequence, some applications (*cough* empc *cough*) have relied on
this order to implement "next album" or "previous album" where the
album title is a group node.
By changing the order of items in the inlist, this has broken the
assumptions made above, and ends up in cases that return NULL, leading
to SEGV. Sure, the app should have checked NULL, but that's not really
the point here. The behavior has been changed.
This patch implements "fixes" for the following functions:
- elm_genlist_first_item_get(): Don't return a parent
- elm_genlist_last_item_get(): Return a parent
- elm_genlist_item_next_get(): return a parent upon reaching the last child
- elm_genlist_item_prev_get(): return a child when a parent is passed
Important notes:
- This does not cover 100% behavior compatibility here. The only way to
have it would be to simply revert the entire genlist code to its
original version and never touch it again, ever.
- An explicit API is required for an application to specify which API
level it targets, so that we can cherry-pick which bug compatibility
features we want to enable. We are already doing this for EDC,
unfortunately.
@fix
fix T5938
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
there is no corresponding code to unset this global pointer when the module
is unloaded, so this will crash if elm_shutdown is ever called
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
there is no check for the existence of this file so this will error most times
from it not existing
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Summary:
When theme is applied text is reset and cursor position is set to 0.
This patch is recover the position to previous after text is reset.
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Reviewers: cedric, jpeg, woohyun, herdsman
Reviewed By: cedric
Subscribers: cedric, jpeg
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D5695
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
If a file path and key string was passed to elm_bg, we could get
the same file path and key string. Even if it failed to load the image file.
And the file path also remained its original form.
ex) Setting file path "~/image.png" => Getting file path "~/image.png"
(Not "/home/user_name/image.png")
@fix
Test Plan: Included in elementary test suite.
Reviewers: jpeg, cedric, raster
Reviewed By: cedric
Subscribers: woohyun
Differential Revision: https://phab.enlightenment.org/D5823
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
"aborted": The escape key was pressed on a single line entry. (since 1.7)
"activated": The enter key was pressed on a single line entry.
Reviewers: id213sin, jpeg, cedric, herdsman
Subscribers: cedric, jpeg
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D5728
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
We've been missed type of class name.
Add legacy class name to maintain compatibility.
@fix
Reviewers: jpeg, woohyun, Jaehyun_Cho
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5749
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
Instead of including the legacy header on the main header, just include
it where it is actually used (diff_widget.c), like in elm_code_widget.c.
Test Plan: Try to compile edi with the tarball from `make dist`. It should not fail with elm_code related errors.
Reviewers: raster, stefan_schmidt, felipealmeida
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5807
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
I did it wrong.
The "Elm_Multibuttonentry_Format_Cb" should be maintain for legacy.
efl_ui_XXX has to use efl_format interface.
@fix
Test Plan: elementary_test->multibuttonentry sample.
Reviewers: cedric, woohyun, Jaehyun
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5824
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
so the MAIN loop is actually an efl.app object. which inherits from
efl.loop. the idea is that other loops in threads will not be efl.app
objects. thread on the creator side return an efl.thread object.
inside the thread, like the mainloop, there is now an efl.appthread
object that is for all non-main-loop threads.
every thread (main loop or child) when it spawns a thread is the
parent. there are i/o pipes from parnet to child and back. so parents
are generally expected to, if they want to talk to child thread, so
use the efl.io interfaces on efl.thread, and the main loop's elf.app
class allows you to talk to stdio back to the parent process like the
efl.appthread does the same using the efl.io interfaces to talk to its
parent app or appthread. it's symmetrical
no tests here - sure. i have been holding off on tests until things
settle. that's why i haven't done them yet. those will come back in a
subsequent commit
for really quick examples on using this see:
https://phab.enlightenment.org/F2983118https://phab.enlightenment.org/F2983142
they are just my test code for this.
Please see this design document:
https://phab.enlightenment.org/w/efl-loops-threads/
This reverts commit 135154303b.
Revert "efl: move signal events from efl.loop to efl.app"
This reverts commit 3dbca39f98.
Revert "efl: add test suite for efl_app"
This reverts commit 3e94be5d73.
Revert "efl: create Efl.App class, the parent of Efl.Loop"
This reverts commit 28fe00b94e.
Go back to before efl.app because I think this should be done with
superclassing here not a parent object. reasons?
1. multiple loops per single thread make no sense. so if multilpe loop
objects they wont be contained in a single app object and then deleted
like this.
2. the app object is not really sharable in this design so it cant be
accessed from other threads
3. it makes it harder to get the main loop or app object (well 2 func
calls one calling the other and more typing. it is longer to type and
more work where it is not necessary, and again it can't work from
other threads unless we go duplicating efl.app per thread and then
what is the point of splittyign out the signal events from efl.loop
then?)
etc.
This reverts commit d764e0b279.
The whole idea of renaming the default theme is an "api break" even if
config is changed. and symlinks don't work on windows as a solution.
(well on ntfs only as only as administrator, so they don't exist).
modifying config for switch from default to dark also will break the
case where someone put ~/.elementary/themes/default.edj there and it just
is different to the system one and how their theme changes on them as
it switches to dark.
basically we can't rename a theme like this mid-flight in efl. default is
default and has to stay that name. it can change the look, but not the
name.
i think the apparent reasoning behind this is not a good one. the work on
flat is temporary. i don't think we will ever maintain multiple "default
themes" as its just far too much work.
we can maintain color SCHEMES which are just a list of colorclasses and
colors for them - that's separate to a theme and would override. right now
these things don't exist. we are not going to create a dark.edj and a
light.edj just to store differing default colorclass values. we should be
doing the above with colorclass "color palette/scheme/whatever" files
that override those named colorclasses globally on init.
so reverting because this is an api break and we shouldn't break api
unless there is really absolutely no other choice.
here the choice is to just temporarily work in a branch and modify
default and then merge the branch when done.
after this commit, efl base themes should now specify:
data.item: "efl_theme_base" "theme_name";
and overlays/extensions which match a given theme should use:
data.item: "efl_theme_match" "theme_name";
this will cause overlays and extensions with the data.item to only
be loaded when the corresponding theme is in use. note that this
should not be specified for theme-independent overlays/extensions
as it will completely block loading of themes
instead of maintaining separate lists for the file and the edje file,
maintain a single list of structs containing both of these
also dynamically manage a string list of files to preserve compat with
existing (bad) functions which return this directly
Summary: see also 73f8b3b78f
Test Plan:
1. elementary_test -to progressbar
and elementary_test -to efl.ui.progressbar
2. check that icon and text are visible
Reviewers: cedric, woohyun, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5818
Summary:
legacy part do not have MY_CLASS. if ELM_PART_OVERRIDE_PARTIAL is used for
legacy part, it call efl_super(non-legacy class).
we need super of TYPE _CLASS instead of MY_CLASS.
Test Plan:
WITH D5818
1. elementary_test -to progressbar
2. check that efl_part is working in _progressbar_part_value_set
Reviewers: cedric, woohyun, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5819
Summary: see also 73f8b3b78f
Test Plan:
1. elementary_test -to radio
2. check that icon is visible
Reviewers: cedric, woohyun, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5815
when i did the vpath transition i made a copy and paste error, that
might made a few people miss theire config and appear weird directories
~/elementary.elementary/ in theire homedirectory, sorry for that!
when there is only one object in a manager, and this object has a
redirect manager, then right now nothing will happen and nothing will be
called on the redirect manager.
With this patch the redirect manager will be unset when the manager
cannot give a correct candidate.
Summary:
redirect is out of the focus stack. we need to find redirect_entry after last
node of redirect manager instead of focus stack.
Test Plan:
1. elementary_test -to focus
2. move focus using tab key
3. check that there is focus cycle
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5811
the string might be on the stack ...
The same as in the previous commit, that path was never really tested,
caused by the fact that the *none* engine was not even running
This is a funny story:
elm_web loads modules for getting a actual elm.web object. However, when
elementary was merged into EFL someone (... :)) forgot to change the
path that is used to load intree modules, so elm.web.none was never
actaully tested ... :)
But thx to the wonderfull legacy patch its super simple to fix this :)
i spotted a segv with elm entry + efm ... sd was NULl because obj was
seemingly not valid at that point, so fix and check the smart data
returns before moving on.
this code would execute wayland path code totally unconditionally if
compiled in even if in x11 to gegt seat id info from wayland... check
if we are in wl first at runtime.
cursor_content -> textblock_cursor_content
cursor_geometry -> textblock_cursor_geometry
probably all cursor methods here should be renamed to something to
increase consistency
this class is a giant FIXME for anyone looking to do refactoring work.
the only reason it seems to exist is to provide wrappers around
efl.gfx functions and provide screen position adjustments--something
which isn't even viable under wayland
note that a test was removed here due to the corresponding method being
removed
also implement Efl_Canvas.objects_at_xy_get
note that any function which returns an iterator cannot be @const since
it's necessary to wref the object to ensure the iterator's lifetime
Summary:
For example, the widget type of elm_button was "Elm_Button".
But, the object which is created by elm_button_add() will
return its widget type "Efl.Ui.Button_Legacy".
It is not legacy name. It should be fixed to return "Elm_Button".
I don't know when but eolian start to make class name with ".".
So, it should be converted to "_" for all widgets.
@fix
Test Plan:
All test cases are included in this patch.
Run "make check"
Reviewers: raster, cedric, jpeg, taxi2se
Reviewed By: cedric
Subscribers: taxi2se, woohyun
Differential Revision: https://phab.enlightenment.org/D5782
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
when set/unset icon and text,
signal "elm,state,[part],visible/hidden" is emitted.
This is wrong because visible/hidden should be handled by
Efl.Gfx.visible, not Efl.Text nor Efl.Content.
This should be changed into elm,state,[part],set/unset"
All relating edc should be fixed.
Test Plan: run elementary_test->button, Efl.Ui.Button
Reviewers: jpeg, cedric, woohyun, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5798
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
A return value of scroller_movement_block_get has been changed by applying the commit(ffa041fe)
The API returned a value which is being exclusively before, but now it returns a composition of states.
This patch modify the api to return "A state" of block mode.
Test Plan:
1. set movement block mode as ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL for a scroller
2. get movement block mode for the scroller
3. compare the value and ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL by using == operation, not & operation
Reviewers: jpeg, cedric, woohyun, raster
Subscribers: raster
Differential Revision: https://phab.enlightenment.org/D5793
at least terminology was broken by this. perhaps other efl apps. if an
efl app has decided to manually play with focus itself, like set focus
to some obj then leav ie, this line breaks that and interferes with
the object focused whenever the window gets focus set. if there is a
focus manager at least this is a new thing and so let the focus
manager set focus, but dont set old evas focus.
this fixes the break added in 56beb861e8
it seems that focus changes to FOCUS=FALSE are causing autodel windows
to kill themself, so we only set the focus on the window if the window
manager calls focus in AND we dont have anything to focus and nothing is
focused yet.
Summary:
efl_part macros are using each widget's internally defined
default_part_get() functions to get default part name.
This might potentially cause errors when future widgets
inherits the widget but not overriding Efl.Text.text and
Efl.Content.content.
Reviewers: jpeg, cedric, woohyun, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5797
this seems to be the only place where the related components are
explicitly used
neither of these components have fork-safe connections, so there is no
benefit to calling them during quicklaunch init
Before solving following problem in Efl.Ui.Check
https://phab.enlightenment.org/T6673
The changed callback is called with opposite value,
if application is using Efl.Ui.Check with state pointer.
The reason is that the changed callback is called in
efl_ui_nstate_activate, and the value refered by state pointer
is changed only after the efl_ui_nstate_activate is called.
static void
_activate(Evas_Object *obj)
{
EFL_UI_CHECK_DATA_GET(obj, sd);
efl_ui_nstate_activate(obj);
if (sd->statep) *sd->statep = efl_ui_nstate_value_get(obj);
Efl.Ui.Text:
The EO file contains a lot of references to legacy Elm types, which are
defined in elm_general. They should be checked and moved over to
efl_ui.eot if necessary.
Efl.Ui.Multibuttonentry:
This class was originally supposed to be based on a Model Item but as of
now the API is still uncertain, so MBE itself hasn't been worked on
more. Disable this from EO-only apps until its API is fixed.
Ref T6666
The Efl.Access.Attribute is using key and value.
The value could be NULL. If the value is NULL, then following error occurs.
*error:
arguments to dbus_message_iter_append_basic() were incorrect,
assertion "_dbus_check_is_valid_utf8 (*string_p)" failed
in file ../../dbus/dbus-message.c line 2712.
This is normally a bug in some application using the D-Bus library.
Array or variant type requires that type string be written, but end_dict_entry
was written.
The overall signature expected here was 'a{ss}' and we are on byte 3 of that
signature.
This is a follow-up to a44ae48df811ff2bd085da86db1688c0f387efc4.Need to
undo the markup_get call, so that the correct code path
(_efl_ui_layout_text_set) is used. Legacy checks are in that code path.
ref T6642
Commits c07a40c745 and
429e19563d tried to fix markup retrieval by
creating a different code path for the setter and getter. However, legacy code
paths needs to be taken into consideration.
This commit fixes legacy widgets (like guide text that did not show any text
in the entry at the top of 'elementary_test').
ref T6642
Summary:
we need to consider the manager change to NULL
@ref T6616
Reviewers: bu5hm4n
Subscribers: cedric
Maniphest Tasks: T6616
Differential Revision: https://phab.enlightenment.org/D5771
Summary: the provider_find can be called before parent_set in constructor.
Test Plan:
1. EINA_LOG_LEVELS=eo:2 elementary_test -to menu
2. check that there is no warning message about efl_provider_find
Reviewers: jpeg, bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5773
This change finally introduces deferred parsing of inherits to
Eolian, after a long time and many iterations. That means instead
of parsing inherits directly as part of the main file's parse pass,
they're pushed into a queue and parsed later. The validation engine
was modified to properly fill in the remaining info afterwards.
This may introduce breakages but I haven't noticed any. It also
properly unlocks cyclic dependency support in Eolian.
Additionally, this also introduces checks for duplicates in class
inherits (class Foo(Bar, Bar) is no longer possible) and it adds
stricter name checks, so you can no longer have a class Foo.Bar
and refer to it as Foo_Bar in implements. This was actually never
meant to be supported, but the check was previously broken.
@feature
Summary:
when Efl.Ui.Image has an image,
efl_file_set(efl_added, NULL, NULL) is not working.
I think this should remove prevous image and go back to empty image.
@fix
Reviewers: jpeg, cedric, eunue, woohyun, Jaehyun_Cho
Subscribers: Blackmole
Differential Revision: https://phab.enlightenment.org/D5742
The elm_layout_text_get is using efl_text_markup_get by following commit.
commit c07a40c745
elm: make elm_object_text_get return markup info as well.
This commit solves following issue
https://phab.enlightenment.org/T6642
If I set object text as below
elm_object_text_set(btn, "Some<br>text");
then elm_object_text_get(btn) returns "Some text" not "Some<br>text".
So using efl_text_markup_set makes sense.
better rely on the adapter and wait for realization so the adapter is
wether created or not even created but used with content. This fixes
item content focus, crashes at startup and a freeze in genlist test!
This commit solves following issue
https://phab.enlightenment.org/T6642
If I set object text as below
elm_object_text_set(btn, "Some<br>text");
then elm_object_text_get(btn) returns "Some text" not "Some<br>text".
Window constructor is hijacked by the finalize method, which messes up
the normal order of operations. As a result, the legacy type name for a
window object was "elm_widget" rather than "elm_win".
This fixes a crash in E (as it checks the legacy type name to verify an
object's type).
See D5748
Summary:
elm_entry.eo is not installed to system directory like
"/usr/local/share/eolian/include/elementary-1", and
eolian_gen tries to refer elm_entry.eo which results in failure.
Test Plan:
Create any eo class file which inherits Efl.Ui.Layout.
eolian_gen eo_file.eo
observe eolian_gen finishes
Reviewers: jpeg, herdsman, woohyun, Jaehyun_Cho, cedric
Subscribers: conr2d, id213sin, JongminLee
Differential Revision: https://phab.enlightenment.org/D5760
Summary:
efl_ui_focus_layer_enable_set(obj, EINA_FALSE) can be called before
registered_manager assigned
Test Plan:
1. EINA_LOG_LEVELS=eo:2 elementary_test -to menu
2. terminate the elemetary_test
3. check that there is no focus_manager warning about a call to NULL
Reviewers: bu5hm4n
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5759
Summary:
For now, how to check whether a widget is legacy or not
is to check flags in private data or static flag, which is set
during elm_legacy_add.
If Efl.Ui.Legacy interface is added, it can be easilly checked
by efl_isa(obj, EFL_UI_LEGACY_INTERFACE)
Reviewers: woohyun, jpeg, cedric, Jaehyun_Cho
Subscribers: conr2d, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5748
Summary:
parent_get and smart_parent_get are called in parent_widget_get
this also remove the duplicated code
Reviewers: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5757
Summary:
"--with-elementary-base-dir" option was ignored by recent patches on elm_config.
The macro is being used in elm_theme. It should be syncronized.
The default value of the macro is ".elementary".
@fix
Test Plan: N/A
Reviewers: raster, cedric, jpeg
Reviewed By: jpeg
Differential Revision: https://phab.enlightenment.org/D5755
elementary_test -to genlist
-> LOTS of warnings, when creating the genlist, as the items aren't
ready yet. This just avoids the WRN as recalc will happen later anyway.
Following @taxi2se's recommendation. This is indeed a focus method, and
Widget already inherits from Focus.Object.
Ping @bu5hm4n who probably wants to adapt this further.
Ref T5363
This was proposed by Dave on the ML, I think it makes sense. Right now
the enum is just like the boolean, feature-wise, but it makes more sense
semantically (mode is not a bool) and allows for future extension (eg.
only apply orientation update for landscape vs. portrait modes).
There is absolutely zero testing for this in our existing codebase. Yay.
This interface has a simple 'create' method to create Efl.Canvas.Object
given a key.
This is used higher-up in Ui.Text in the next commit.
Ui text: add ability to set item factories
Added API to set an item factory object.
This is similar to the previous item providers (that worked with
callbacks).
You instantiate a factory object and set it on the Ui.Text object.
Each factory implements the "create" method from
Efl.Canvas.Text.Item_Factory.
This also includes 3 public factories (Image, Emoticon and Fallback):
- Image factory: creates images from added entries (key strings)
- Emoticon factory: creates emoticons by querying the theme
- Fallback: creates image, then falls back to emoticon
If no factory is set, then the fallback (internal) factory is used.
See the added "Ui.text Item Factory" test in elementary_test for an
example of usage.
@feature
No need to split: those two are used in all the same classes, since the
split between Orientation and Ui.Dir.
Note that the enum types remain in the main namespace.
It's not working. Just "fixing" the API for consistency.
Also, we're lacking a proper hint for "markup without images".
So I think EFL_SELECTION_FORMAT_MARKUP should be without images, while
EFL_SELECTION_FORMAT_MARKUP | EFL_SELECTION_FORMAT_IMAGE would allow
markup with images.
Ping @thiep.ha
Ref T5329
Override mode is not available in the unified api. That's because you
can't do it in Wayland.
I still think those types are stupid and should all die: Win subclasses
handle them for you. Odd types can't be used anyway.
Ref T5322
Unless it's implemented for Wayland as well, AND provides more
information than a NULL event_info, I see no point in this being an EO
event. Keep legacy as-is: a smart callback only.
Also, minor cleanups to the EO file.
Ref T5322
in the case where a connection was not actively rendering, there was nothing
which would trigger a display flush, leading to applications potentially
deadlocking
@fix
This reverts commit 3d07b90461.
Some commits should address the issues mentioned in T6579
959571b995fe346d2ee2
But to be honest I am still not sure exactly what the issue was?
Ref T6579
Summary:
Even though elm_tooltip does not support EO API, for now,
Efl.Ui.Widget will support elm_tooltip-like feature.
This change group name compatible with new group name policy.
Reviewers: jpeg, woohyun, herdsman, zmike
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5739
If the selection manager is deleted before the drop objects
are deleted, we need to remove callbacks in its destructor.
Thank @herdsman for reporting this.
Summary:
focus_user and focus_object are similar classes. by merging them into
one mixin, we can maintain consistency.
Test Plan: make check
Reviewers: bu5hm4n
Subscribers: cedric, Jaehyun_Cho, woohyun, jpeg
Differential Revision: https://phab.enlightenment.org/D5734
Summary:
Efl.Player interface simply provides play functions,
but another interface which indicates Efl.Player will play is also
needed.
Test Plan: Run elementary_test->Efl.Animation tests
Reviewers: woohyun, conr2d, Jaehyun_Cho, jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D5662
This fixes some of the warnings generated by calling functions on NULL
objects. One of the main remaining points is to avoid unwanted warnings
on non-existing parts.
Ref T6326
This allows to safely verify if a part exists, without triggering any
potential call to NULL object, or even requiring the efl_part() handle
to be created.
This is perfectly equivalent to edje_object_part_exists(), but
implemented by both edje object and elm layout.
this fixes a bug with scrollable panel not being blocked
when it is closed. scroll is blocked in _anim_stop_cb()
which is called after elm_interface_scrollable_region_bring_in().
but if panel content is already at the target position, _anim_stop_cb()
is not called. so there is a need to check content's position and
handle the exceptional case.
this fixes a bug with scrollable panel not being blocked
when it is closed. scroll is blocked in _anim_stop_cb(),
which is called after elm_interface_scrollable_region_bring_in().
but if panel content is already at the target position, _anim_stop_cb()
is not called. so there is a need to check content's position and
handle the exceptional case.
there is a need to check if callback functions already exist or not
before adding or deleting them, because they are added or deleted
at two points:
in _elm_panel_scrollable_set() and _elm_panel_elm_widget_disable().
Summary:
when the popup is deleted, some EVAS_CALLBACK_DEL callback functions
try to use already freed objects.
reorder free sequence to prevent it.
Test Plan:
1. elementary_test -to popup
2. check 'Enable popup scroll'
3. open several popup test and click Close button.
4. check that there are no error message
Reviewers: Jaehyun_Cho, bu5hm4n
Reviewed By: Jaehyun_Cho
Subscribers: cedric, jpeg, herb
Differential Revision: https://phab.enlightenment.org/D5730
After a function pointer validation branch got enabled, it turned
out that people have been writing obviously incorrect eo files
all along.
So while I have no idea if this is logically fully correct, at
least EFL builds again now...
cc @thiepha
Gcc complains here due to _wl_default_seat_id_get not accepting a
'const' Evas_Object, so to avoid the warning just case it to a normal
Evas_Object when passing in.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Send visible/hidden signal when text/content are realized.
This feature is already implemented in genlist widget,
for reacting dynamically in item layout depending on their
text/content realizations.
evas_canvas_default_device_get used here leads to an 'implicit
declaration of function warning'. Use evas_default_device_get instead
to remove warning.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
we can consider that the node is freed during focus_manager routine.
for example, efl_ui_focus_manager_redirect_set call edje event callbacks,
and a application can delete a object in the edje callback. if the object is
the focusable object of a node, focus_manager make the node freed.
the focus_manager is able to use freed node. (a good example is test_popup.c)
this prevent reusing freed pointers.
Test Plan:
1. elementary_test -to popup
2. popup-center-text + 1 button
3. Click the Close button
4. check that there is no erroe message
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, woohyun, jpeg, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5729
Summary:
clicked event will be called when alert popup's button is clicked.
But usually, clicked event means when object is clicked, not sub object is clicked.
So it is so ambiguous, event name change.
Test Plan:
1. elementary_test -to efl.ui.popup.alert
2. click button.
Reviewers: Jaehyun_Cho, herb, jpeg, cedric
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5722
Summary:
efl_ui_popup has needs_size_calc flag
to skip size calculation when it is not needed.
But efl_ui_popup_alert_text/scroll do size calc although that flag is FALSE
Test Plan:
1. elementary_test -to efl.ui.popup.alert.text
or elementary_test -to efl.ui.popup.alert.scroll
2. resize window
3. watch _sizing_eval call
Reviewers: Jaehyun_Cho, herb, jpeg, cedric
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5720