I was told that the scrollable interface is being redesigned for EO.
This API definitely does not belong to the base Widget class, as it's
quite specific to item-based scrollable widgets, such as lists and
grids. Since Elm.Interface_Scrollable is itself being revamped, it is a
good place to move that EO API for now.
Ref T5363
1. Uniformize the API, which is now for internal use:
This uses the same enum as scroller "movement_block" instead
of 2 separate properties. Less APIs, more consistence.
2. Remove scroll_lock x/y from EO widget. I was told it is not going to
exist in the upcoming scrollable interface.
3. Remove scroll hold/freeze getters.
scroll hold/freeze push/pop are still there but it remains to be seen
how the EO scrollable interface will exploit them. Right now they are
full of bugs.
Ref T5363
This also includes the drag_child_lock APIs. This had nothing to do with
dragging beyond maybe the case where scrolling is done by thumbscroll
(ie. finger drag).
Note that the EAPI were called already scroll_lock, not drag_lock.
Ref T5363
restrict mapping /dev/zero to only eina files having a sigbus
reported. the mmap was before all our file access used eina_file i
think thus the raw mmap of it. now walk all eina files and find the
candidate and only then if it exists flag is as having a faulty i/o
backing and map the zerto pages then return, otherwise call abort.
more restricted mapping and perhaps a fix for not trapping non-efl
issues.
@fix
since we have a sigbusd handler that flags an eina file with io errors
it has to walk the file cache and every file... taking locks. if those
locks were taking already in the current thread the sighandler was
called in... we'd deadlock. since this basicallly never happens (when
do we see i/o errors really? not much)... we never saw this as it'd
also reauire this race condition to happen too. but it is a problem
waiting to happen. this fixes that by moving to recrusive locks.
@fix
Summary:
Do not harcode numbers that make no immediate sense.
Additionally: add some wont-hurt doc note and fix
two related typos.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5145
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This is a very informative document but is much longer than it needs to
be. Tighten it up by condensing redundant information and expressing
the ideas more efficiently. Focus more on Evas and what it is than what
it isn't. Avoid explaining general graphics concepts like immediate
vs. retained, replacing with synopses. Switch from 2nd person to 3rd
person (i.e. don't say You/Your) to be less awkward, since we don't
really know why the reader is reading it. Simplify the compilation
directions; these are pretty standard, and most people won't be manually
linking to Evas anyway.
While this shortens the document considerably, it retains the
important key points, and makes it far more readable.
Reviewers: cedric
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5130
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
evas_textgrid_cellrow_get() is supposed to return NULL if the row index
fed to the function is outside of the textgrid's range. It was instead
returning garbage pointer.
@fix
When running elementary_test with ELM_ENGINE='buffer', we got a crash.
The removal of PS3 backend patch didn't remove ELM_SOFTWARE_PSL1GHT and
didn't shift the _elm_engines indexes.
ELM_SOFTWARE_DDRAW stayed at the index 13 (value NULL) instead of moving
to index 12.
A strcmp with NULL occurred, leading to the crash.
@Cedric, I excuse you to not have run Exactness your code before pushing
:P
Text on path (textpath) allows application to make text follow a path.
The path can be a efl_gfx_path or a circle.
Thank hermet for initializing this work.
@feature
This function is meant to be used by the widgets themselves, or internal
features such as elm_access.
Also remove const tag: this function call is definitely modifying the
widget (panning around and all that).
Ref T5363
We use a temporary file for espeak (the accessibility text-to-speech
engine we use), and then we remove and close the file. But the fd was
not reset to -1 which meant that later on the previous fd was closed
again (this is kinda weird), but that fd was now invalid. Or rather it
was reused by ecore animator, closing the read-end of the pipe
(timer_fd_read). This caused SIGPIPE in the animator code.
Thanks strace and gdb for helping me figure out this. :)
@fix
This fixes a case where an object is hidden before the first render.
When called from elementary. the visible intercept code would be called
before evas object's visible_set, bypassing the line setting visible_set
to true.
As a consequence the object would be visible even when explicitly
requested as hidden.
Thanks @JackDanielZ for the report!
This is also another protected and beta API. Meant to be overridden by
subclasses, but belongs to a still unstable API.
The difference between the internal legacy and the EO API is really bad.
Same as with activate (previous commit).
Ref T5363
Renamed to on_disabled_update.
Also passed in the new state of disabled. It's more convenient this way,
than having the subclasses call disabled_get.
Also simplify some code...
Ref T5363
Renamed to on_orientation_update
This internal / virtual function is in fact not overridden anywhere. Not
sure it is necessary to expose it in EO API?
Ref T5363
a nested compositor will have a mismatch between canvas seat id and
compositor seat id, so this attempts to perform matching based on the
order that they are listed, which should be identical
@fix
gl_generic_context_find() returns the gl shared context struct but
this is not just a read-only operation. It in turn calls window_use
which may call make_current. This can invalidate the work of evas gl
when the API tried to switch to a specific context.
This fixes evas gl with multiple outputs.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
For now, do not use Evas_Canvas3D in multi output context, it won't work.
The update code for Evas_Canvas3D_Node might trigger rendering logic, which
is opposite to what the scene graph logic should do. It require to much
reshuffle around to handle that case at the moment. So I am just adding a
warning.
This backend has received no patch and maintenance from anyone who could
actually test it over the last few years. After talking with KaKaRoTo it
is best to remove it. If anyone want to take over its maintenance, you
are welcome to revert this patch.
Summary:
Widgets that don't have content like as genlist, gengrid.
They don't have geometry of content also.
So position of pan will be used when calculating postion to scroll.
Test Plan:
tested in elementary_test and check working properly.
this may be the problem when extern pan set on scrollable interface.
Reviewers: SanghyeonLee, cedric, felipealmeida, larry, bu5hm4n
Reviewed By: SanghyeonLee
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5127
Small patch to allow setting pointer acceleration profile (for
wayland) from within Enlightenment.
ref T4736
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Small patch to add a new API function which can be called from
Enlightenment in order to allow setting pointer acceleration speed.
ref T4736
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Small patch to add an API which can be called to set pointer
acceleration speed under Wayland.
ref T4736
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The 'c->w' field gets manipulated for querying cutoffs of text with its
boundaries. Better to keep it a read-only field, to reduce confusion.
Also updated querying internal functions for better readability.
Summary: I had added some information about texture size limitations to Elm image API reference.
Test Plan: Doxygen Revision
Reviewers: raster, cedric, stefan, jpeg, Jaehyun_Cho
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D5106
These helpers are similar to eina_value_X_new(), however do not
allocate the Eina_Value, rather return it.
These are useful when the value struct storage was already there but
needs to be initialized in a single line, like as stack variables or
when returning a value.
these utilities are very useful, but names became too long. Since they
do not conflict with anything else, shorten them.
Since they were available before as inline function, provide a macro
to rename them for old source that's compiled against newer library.
EINA_VALUE_EMPTY is basically a zeroed Eina_Value, handy for declaring
and returning.
To cope with the rest of efl, free/del/flush on NULL shouldn't
complain, so flusing an empty value should be quiet.
Also prefix with widget.
I want to rename this as child rather than sub. It's inconsistent with
the other parent/child hierarchies. Anyway the various hierarchies are
confusing, so let's keep this name :)
Ref T5363
... and others. this leads to crashes if x ops are busy in a thread or
engine evas thread shutdown happens to call engine calls that then do
x calls... should apply in general to wl too. fixes some segv's on
shutdown given the new gl thread patches.
@fix
Wherever the EO API is used, i.e. efl_add() is used to create evas
objects, we can skip the calls to set fill/expand.
This new set of defaults indeed saves ~60 loc in the tests (out of 115
objects created). I found only 3 cases where the align had to be set
manually (to the old default of 0.5).
See 1a1b8bc451
And e8b7f5f255
Ref T5301
Summary: In state_changed_cb2 callback function, obj is used. so it should not be EINA_UNUSED
Reviewers: Jaehyun_Cho, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5122
Summary:
When text set NULL, size is not changed even text is removed.
So, fix that case logic
1. send text,hidden signal
2. remove text
3. call sizing eval to resize layout
Test Plan:
1. run elementary_test -to check
2. change value last check object
3. compare before and after
Reviewers: Jaehyun_Cho, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5086
Fake: This should never have had the fake_canvas_set API. It already can
not work after efl_finalize. And Ecore_Evas isn't part of EO API so it
doesn't make sense at this point to try to expose the fake window as
part of EO API.
Socket: This is the only type of window that implements socket_listen.
So we can just move this function to a new subclass.
NOTE: Socket & plug are currently broken, even in 1.20 (at least for me)!
Ref T5322
I'm not sure about the name for focus_allow:
- can_focus
- focusable
- focus_allow
- ???
Also, it looks like focus should just be the evas object function
overridden.
Ref T5363
This changes the name used in the config file, without changing the
system config files yet. This restores key bindings for:
- Win
- Image
- Video
- Photocam
See also the previous commit.
It was discussed a while ago that Zoomable was a poor name in some
languages, like python.
This changes, in Efl.Ui, to use underscores:
- Image.Zoomable
- Grid.Static
- Box.Flow
- Box.Stack
Zoom +/- doesn't work well as this is a multiplication factor.
Test scenario:
- elementary_test -to Photocam
Then click on the image, and press + or - on the keyboard.
@fix
This factorizes the code and makes most widgets handle key down events
in the same way:
- check that the object is not disabled, event is not on hold
- figure out the key binding based on the class name
- mark event as on hold
The class name is usually MY_CLASS_NAME but in some cases it was
MY_CLASS_NAME_LEGACY which may be different from the EO class name (eg.
elm_win vs. Efl.Ui.Win). In that case the key bindings are broken.
This breaks key bindings for the following widgets:
- Win (focus)
- Image ("clicked")
- Video (move, play)
This fixes key bindings for the following widgets:
- Nstate
Some widgets remain broken:
- Photocam / Efl.Ui.Image.Zoomable
A patch will be applied to restore the key bindings for the above
breaks.
This is an internal function that should probably become an overridable
protected method, as it's required for proper event handling in widgets.
Next step: use eo_event_info in the widgets implementations. Then remove
legacy event struct.
Ref T5363
This is a semi experimental patch to set the default weight
of objects to (1, 1), i.e. EXPAND. This seems like a more
sensible default value than no weight. Some objects may not
need the expand weight, but this seems to be the minority,
not the majority.
Ref T5301
Summary:
Some of locale formats convert as extension format.
For example,
uk_UA d_t_fmt is "%a, %d-%b-%Y %X %z".
The %X will convert as %T.
The %T format has to convert one more time to convert as %H:%M:%S.
ref : https://lh.2xlibre.net/locale/uk_UA/
We need to parse the format recursively to support that kind of case.
@fix
Test Plan:
Change the locale as uk_UA.
Run elementary_test -> datetime
See the time field is not appear.
Reviewers: jpeg, cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5021
This is to pretend the object is visible when it's been added with
efl_add but evas hasn't started rendering yet (it's in the queue).
This code is not enabled (yet?) although I think it could very well be
(I don't observe the same bugs as I did the first time I tried this
patch).
Test scenario: ephoto without a recent patch (47fe2b9ab03c151b0f4).
Before any further explanation, ephoto was definitely misusing the
aspect API here. A label most definitely shouldn't be sized based on an
aspect ratio, that's just crazy (you really want to make it as tall as
it's wide?)
If a box has an aspected item, it needs to run its min calc loop twice:
1. Once to determine the "true" min size in the direction of the box
(ie. in X in case of a horizontal box), and
2. Once more in order to apply the aspect ratio to aspected items and
augment the perpendicular min size (ie. Y for horizontal).
After that, it can go and layout the items based on the available size.
As we may guess from the above description (1) determines min W and
(2) determines min H (in horizontal mode).
BUT, there were two problems:
- The wrong item min size was used inside the 2nd loop (the code was
not symmetrical between horizontal and vertical modes). These are the
changes in _smart_extents_non_homogeneous_calc.
- The box min length was based on the actual size of aspected items,
rather than their min size. This goes against the observation. These
are the changes in _smart_extents_calculate.
Ref T5888
@fix
The intent of the "configure complete" event is to indicate that the
window is configured and ready to receive buffers.
For "windows" like mouse cursors, that's immediate - let them know.
Abstract frame callbacks through ecore_wl2_window so we can add them in
multiple places without having the wayland compositor generate more than
one.
Also allows us to keep a callback registered over hide/unhide of a window
easily.
locks are not the same as modifiers, and the corresponding event flag must
be set based on whichever value(s) are set instead of yolo mixing and matching
@fix
ref T5737
It seems that cc overlays that didn't change got lost in the process of
saving elm_config and then reloading it (automatically happens because
the file changed... which we just wrote to).
Fixes T3682
This only skips writing the profile name to
~/.elementary/config/profile.cfg
This allows easier testing of elementaryt apps (and E) with custom
profiles.
export ELM_PROFILE_NOSAVE=1
This makes sure that
elementary_test -to "Window Plug"
exits nicely (with the exit policy on all window close) instead of
hanging forever with an invisible window.
@fix
Socket & Plug were broken after 38e6780262.
Multiple problems here:
- The invalid path was used for the lock file.
- The invalid buffer ID was used for unlock in render_post. That's
because the buffer was switched during output_flush which happens
before render_post. So the buffer would remain locked forever on the
server side (unless maybe some animation was happening there).
@fix
Summary:
Fixes some basic punctuation and grammar errors, corrects spelling and
word order/choice in various places.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5098
Summary:
It is not necessary to specify @brief since the first line will
automatically be used, but if it is used it should be only for the brief
description, not the detailed description.
Also reformat other docs in this file to follow convention for the brief
docs.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5101
Objects show should happen as early as possible during the render cycle,
as it affects smart objects calculation and everything else.
Thanks @JackDanielZ for the report!
Fixes T5880
Issue: If the item has weight and non-filled align, item is not resized.
This patch fixes this issue.
Test: elementary_test -> ui.box -> Equal weight. Buttons Btn1, BtnA, B, C
do not resize when resize the window.
ref T5487
Since the EO APIs are defined as weak symbols, invalid definitions of
EAPI lead to runtime crashes on non-public APIs. This is a fix following
a series of changes wrt. EAPI definitions.
There is a problem with the previous version. The object can still be
alive due to the use of manual_free in evas. So you wouldn't be able
for example to remove a callback from an object that hasn't been
destroyed yet. If that callback is triggered by the destruction
of the object, you would end up with an unexpected and impossible to
prevent effect of access after free on a callback that you had removed.
Not sure if that still solve the original problem that the code was
trying to prevent in Ecore_Evas.