This makes elm_layout implement:
- efl_canvas_layout_signal_message_send
- efl_canvas_layout_signal_process
This only transfers the calls from the elm widget to the internal
edje object.
PS: message_send is quite ugly in C...
Ref T5315
@feature
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
forcing a full eval here is unnecessary and broken since such an eval could
either change geometry in unexpected ways or fail to accurately change
the underlying canvas geometry
@fix
This reverts commit 9368eedd35.
The release is out so we can revert this bandaid again. In the hope to
find the real culprit and solution before the next release.
Summary:
In _elm_layout_text_set function, text_signal_emit is called.
But in that case, check text whether it is null or not null before call signal_emit.
So "text" is not null always, and text_signal_emit's parameter "visible" is also always EINA_TRUE.
Reviewers: Jaehyun_Cho, cedric, jpeg
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5049
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
Here's the reasoning:
1. We will expose as many edje APIs as possible (and meaningful)
through the elm layout class.
2. Access to internal objects is usually risky, as it allows apps
to bypass EFL in some ways, leading to potentially undefined
behaviours.
3. If the need arises we can still add a similar API back to EO,
later.
Back to #1, it seems that the need for edje_get() was mostly to
call manual sizing functions, or the missing message_send(). I will
make sure these are accessible from the layout itself.
Ref T5315
This:
efl_content_set(efl_part(scroller, "default"), obj)
worked fine, but, this:
efl_content_set(scroller, obj)
didn't work as expected.
Thanks @JackDanielz for the report.
Note: There is a problem still... "default" should not work
with efl_part. This is quite bad, actually. It should
probably be "content" instead.
This makes layout parts implement Efl.Ui.Cursor.
This also adds the missing bool returns from that interface.
This removes 7 APIs from Elm.Layout.
Ref T5315
This is an API enabling accessibility on text(block) parts
in a layout. But it is said to have many issues. I can already
see that it only changes a flag but doesn't trigger any code
to create the appropriate objects, so definitely not fully
working.
According to @kimcinoo this may remain in legacy land for now.
Those APIs can then be used by Elm.Layout, hopefully
simplifying the API.
I wonder if the APIs should be prefixed "calc_" (as is)
or "layout_calc_". The extra "layout_" prefix would make
it common with other layout APIs (eg. signals, data,
size min/max, ...).
Ref T5315
Summary:
Implement efl_provider_find function for efl_ui_win class.
This will support to search window class by efl_provider_find function.
Reviewers: jpeg, cedric, Jaehyun_Cho, thiepha, woohyun, Blackmole
Reviewed By: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D5045
This is really only a demonstration of what kind of information
we can print with efl_debug_name_get(). Hopefully this can help
debugging with printf/ERR logs and even help with live debugging
inside gdb.
This shouldn't be used for other purposes than debugging, as the
exact string format is not defined.
@feature
Currently, elementary programs crash on termination on macOS (seems
Sierra-specific). This is very nasty, looks like deep memory corruption...
Without valgrind (or like) support on Sierra, it is difficult to
pinpoint the origin of the problem.
Due to the imminient release, and after discussion with @stefan, this
kludge will allow the release to happen.
This commit MUST be reverted just after the release, so we don't
blindfold ourselves!
Ref T5245
This reverts commit 2d4d836018.
Don't pretend to fix an issue found by a static analyzer by
introducing another issue that even clang warns about.
Fixes:
elm_gesture_layer.c:2533: warning: using floating point absolute value
function 'fabs' when argument is of integer type [-Wabsolute-value]
if ((fabs(st->info.mx) > ELM_GESTURE_MINIMUM_MOMENTUM) ||
^
The elm_access a widget makes primitive object accessible. If a primitive
object is not visible, then the elm_access should NOT have state VISIBLE, and
SHOWING. From now the elm_access is checking visibility of primitive object.
this culd optentially use large offsets before accessing the ptr thus
it may not segv inthe first page but actually work if positionoffsets
are large enouh, so handle this case explicitly.
@fix
found by PVS studio
this culd optentially use large offsets before accessing the ptr thus
it may not segv inthe first page but actually work if positionoffsets
are large enouh, so handle this case explicitly.
@fix
found by PVS studio
extra check already done in if above - no need. looks like copy &
paste of the checks from above thus why it's there, but not needed.
not a bug, byt analysers dont like it so remove
found by PVS studio
according to q66 this is correcter than ptr(..).
Anyhow this still leads to a bug in cxx that crashes compilation in cxx
examples, people are notified!
When destroying any object, its parent class destructor should
be called after the subclass destructor has been called. Only
some extremely limited work may be done after the super call.
This commit makes sure that all efl_destructor() overrides in
elementary are doing operations in the right order.
Also, remove a return void.
with this we can whipe out the focus.manager field in elm.widget so for
the case that something goes wrong we only get the error message where
actually something went wrong, and not the whole bunch of follow ups
where the code assumes its registered but it isnt.
csd attempts to create sw cursors if the pointer surface doesn't exist,
so create the pointer surface before the csd to avoid duplicate cursors
#TheDisappointer
this should be unmapped so edje stops trying to render to it, though
at some point it could be optimized to not hide and just reuse the buffer
when showing again
#IGot99TicketsBut1x1AintOne
it seems like the visibility is evalulated from different parent
relations, Just because the box (that is a container of a element) is
not visible, does not mean that the element in it is also not visible,
this somehow comes back to the box beeing deleted, the children beeing
reparented in evas, but not in elm. This is for now just a quickfix,
since those calls are just for optimization.
This fixes a load of errors once the elm_test window is closed
@fix
Summary:
There are four cases where items are deleted.
1. Select item and push back button.
2. Delete "X" part of item.
3. Calling elm_object_item_del().
4. MBE deleted.
Previous logic is can't support for all cases.
below problems were there.
eina_list_remove() called twice.
list data free twice.
@fix
Test Plan: elementary_test -> multibuttonentry test.
Reviewers: jpeg, cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5030
On OSX the framespace and CSD (Client-Side Decorations) are not
supported at all... I am not able to test this case. This patch
restores the main menu functionality based on pre 1.19 themes,
where it was located inside win.edc (app content) and not in
border.edc (framespace).
Note that the initial size of a window may be wrong, eg as in
elementary_test -to "Main Menu"
Fixes T5734 (hopefully!)
Changes cursor handle name from 'Efl.Text.Cursor.Cursor_Data' to
'Efl.Text.Cursor.Cursor'.
Also, replace all usages of Efl_Canvas_Text_Cursor
with Efl_Text_Cursor_Cursor as the handle for the cursor.
This will help to focus on creating efl_ui_widget class work.
And, we need to change all the Elm_Widget_Item related logics to
factory or something else.
We are not shipping those (part of the private eo header files) and thus
we can not include those either. Simply removing them fixes the problem
I see with our ABI checker and it still passes al build tests I have.
Solves this error:
ERR<2321>:eo ../src/lib/efl/interfaces/efl_pack_layout.eo.c:1
efl_pack_layout_request() Unable to resolve op for api func
0x7fffed16dba0 for obj=(nil) ((null))
Fixes T5715
Summary:
When scrollable set TRUE,
scroller must be calculated its size except using item.
If content is removed, scroller doesn't calculate its size, so it has previous size.
So there is a empty space in this case.
@fix
Test Plan:
1. elementary_test -to popup
2. open "popup-center-title + list content + 2 button (with delete content)"
3. click "Delete" button
4. compare between scrollable set true and false
Reviewers: herb, singh.amitesh, jpeg, cedric, conr2d
Differential Revision: https://phab.enlightenment.org/D5010
We need focus edje signal when item is focused or the already
focused item realizes. its wrong to call focus signal on
_elm_genlist_item_state_update()
fixes T4969
Summary:
In visuals_set function,
check action_area is NULL, and signal emit action_area,visible/hidden
So, before call visuals_set, action_area should be deleted.
Test Plan: Actually, action area has not min size, so it couldn't be observed.
Reviewers: herb, singh.amitesh, jpeg, cedric, conr2d
Reviewed By: jpeg
Differential Revision: https://phab.enlightenment.org/D5007
After ab23a53094, evas_object_size_hint_align_set()
has stopped working on elm img and that patch was perfectly right
to do so but we don't change the old behaviour.
This patch is an effort to make evas_object_size_hint_align_set()
to work with elm img again.
make sure not to mix both eo apis and legacy apis.
Thanks to dave for reporting and jpeg to show the right fix.
fixes T4635
Inside efl_part() we don't know whether we are dealing with a text
or content API, so we can't actually guess the proper alias.
The legacy API should have already dealt with aliasing at this point.
The EO API should not use those aliases.
This in theory should only affect the EO API usage. In EO
we don't want efl_part() to be used for NULL part. In other
words, there is no "default" part in EO objects. Instead, those
functions like text_set or content_set should simply be
implemented by the object themselves.
The legacy API on the other hand will make sure that the
"part" argument is set to a non-NULL value before reaching
this point.
This is a follow-up to a4b79fdbe1.
efl_part no longer supports NULL parts.
NULL text parts are now aliased in legacy code beforehand.
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Omg this was a pain... The code is complete spaghetti and the
fact that the main menu is now in the framespace doesn't help
either. With this patch and the previous one (about ecore_evas_x)
Edi should be able to open correctly at the proper size and with
a visible menu.
This patch introduces a lot of changes so it'll need testing
before we accept it fully.
Fixes T5482
This should fix issues when the main menu is wider than the
window content. This assumes that the menu is horizontal and
aligned with the client content.
The theme should probably handle this case better but right
now I am lost in the spaghetti resizes happening between
edje, elm, evas and X...
I am not very happy with this patch, and I think border.edc
needs some love in order to make it more robust and simpler
to read.
Ref T5482
This fixes call to:
elm_layout_content_set(ly, NULL, obj);
This only affect this legacy API, not the EO interface.
Thanks Dave for the report!
Ref 59081043a8
Summary:
The entry cursor does not disappear when the user pressed(long press value change case) inc/dec button.
@fix
Test Plan: elementary_test -> spinner.
Reviewers: cedric, jpeg, woohyun
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4997
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
If content_part_{set,get,unset} are called on a widget that
is not a layout (or flip, and a few others), then some ERR
messages would be printed out.
We hide these ERR messages as all elm_object APIs should be
callable on an object for which elm_object_widget_check()
returns true.
Ref T5629
this fixes a bug in genlist when scrolling is enabled and
items at top and bottom are disabled. Focus behaviour is not normal
in case up arrow is pressed when focus is at the top enabled item
or down key is pressed when focus is at bottom enabled item.
fixes T5576
Summary:
When tooltip or content size is 0, tooltip reconfigure job is called infinitely.
This patch removes the infinite job calls.
Test Plan:
See following patch, test case "Tooltip" -> "Tooltip with no min size"
Reviewers: zmike
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4982
this seems wrong since it's using smart object geometry to determine
event-based positioning within an edje object. considering it from a user pov,
it definitely is wrong because why would you deselect items based on mouse
movement?
ref D2622
ref da81eff897
@fix