Now it returns the bool value to free the widget item.
Some widget items(i,e genlist) should not be deleted directly when elm_object_item_del is called.
So, if the pre_hook function returns EINA_FALSE, then the widget item will not be deleted.
SVN revision: 67565
win_resize_object_add(win, subobj);
object_content_set(otherobj, subobj);
object_del(win);
ERR<21326>:elm-externals elm_widget.c:978 elm_widget_sub_object_del() removing sub object 0xdeadbeef (some_stupid_widget) from parent 0xRRRRRRRR (win), but elm-parent is different 0xFUCKTHIS (NOT EVEN A WIDGET)!
SVN revision: 65884
Firstly, for efficiency, we add a Job to calculate the whole canvas. Jobs implicitly coallate work per event loop.
Calcuation of object can be a reasonably intensive set of work.
In the job callback we calculate the whole canvas with evas_smart_objects_calculate() to ensure that all objects have the correct geometry at this point.
Reviewed by Raster.
SVN revision: 65509
Besides we free the object pointed by esd, we NEED the right pointer's
value to unregister the signal with
edje_object_signal_callback_del_full().
SVN revision: 64415
First things first, I'm not sure I'm setting the right variable on
the setlocale() call, so someone more knowledgeable can look at it and fix it.
How this works, you say? Just like elm_object_text_part_set(), except now it
will pass the string given through dgettext() with the given domain (NULL
means it uses whatever the app set with textdomain()), and when changing
language with elm_language_set(), it will re-set the strings with a new
translation.
SVN revision: 64179
Hi all,
I found few memory related issues in elementary package when performed static analysis on it.
These issues include:
Array indices getting out of bounds, freed memory address being passed to a function as parameter, memory not getting cleaned up because of earlier return statement.
Issues details:
1. In elm_widget.c inside function elm_widget_signal_callback_del(), it is possible that freed memory address esd is passed to the sd->callback_del_func(). I think it should be data, not esd.
Moreover what if the callback frees memory for data, then the other problem is that the return value is data from the function elm_widget_signal_callback_del() which in my opinion can be a problem.
2. Inside directory src/edje_externals for files elm_genlist.c, elm_notify.c, elm_list.c, elm_thumb.c and elm_map.c, array indices can go beyound bounary.
sizeof() operator for an array of character pointers will return [number of elements in the array * size of (char*)], basically 4 times the number of elements which has been taken care in assertion inside src/edje_extenarnals
while performing assertion but has been missed in the next statement in the loop condition.
3. In file src/lib/elm_config.c inside function _elm_config_profiles_list, freeing of file iterator has been missed out.
Please review the attached patch and let me know your opinion.
Thanks.
Regards,
Rajeev
SVN revision: 63550
[E-devel] [patch] elm_widget - elm_widget_type_unregister
Dear developers.
This patch is adding a api to elm_widget.
In elm_widget, there is an api to register widget type to elementary's own
list.
However it doesn't provide unregister api.
So I made this patch.
Most of case, it's not needed. But in some case, it's useful.
(such as elm objects in DSO, if a DSO unloaded, registered widtype is
invalidated)
Thank you
SVN revision: 62099
But wonder, is it really needed the auto casting macros?
Why user not just use the elm_widget_item directly
and make their item data structures dangled to elm_widget_item just like smart object?
SVN revision: 62079
these bad boys are so big and pixelthirsty they can't be constrained by a regular canvas or window, they use OVERRIDE REDIRECT WINDOWS. not only that, they totally exceed the boundaries of what a reasonable function name length could be. 50 character function name limit? puh-leeze. these guys don't care what side of the screen they're even on so long as they get to wade into the thick of the action and block out each and every crappy non-efl application behind them. and that's when they're in good moods. you don't even want to know what happens when you piss these guys off.
SVN revision: 61735
elm_widget_show_region_set to set the show region always. Earlier, the
API expects some change, to redo the job. Patch by Prince Kumar Dubey
<prince.dubey@samsung.com>
------- Original Message -------
Sender : PRINCE KUMAR DUBEY<prince.dubey@samsung.com>
Date : 2011-05-20 17:41 (GMT+09:00)
Title : [E-devel] [Patch] elm_conform patch
Hi Mr Seo,
Can you please send the attached patch of elm_conformant to EFL ope-src community.
Change Log:
Eina_Bool parameter is added to API elm_widget_show_region_set to set
the show region always. Earlier, the API expects some change, to redo the job.
This enhancement is already approved by raster in gerrit review.
Thank you.
Regards,
Prince
SVN revision: 61148
Subject: [E-devel] [Patch] elm_widget_focus_steal should be executed
only with "can_focus" object.
I think elm_widget_focus_steal function should be executed only with
"can_focus" widget object.
("Cannot_focus" object has no right to steal focus from others !!)
SVN revision: 59733
Subject: [E-devel] [Patch] Focus issue in elm_widget.c
I've checked there were some focus problems when an object is hidden.
So I made patch for that ~
SVN revision: 57898
After a widget is created(obj = elm_widget_add), the object does not have any parent object.
However if user call elm_widget_sub_object_add(parent, obj), then CRI will be happened.
So the exception should be there.
SVN revision: 57667
* Added elm_mirrored_get/set to set the system mirrored mode
* Added elm_widget_mirrored/get/set to set each widget's mirrored mode.
* Added code to set the system mirrored mode from translations to elementary and added translations for all the rtl languages. (a trick to load according to locale).
* Future commits will include specific widgets mirrored mode handling.
Work by Aharon Hillel and Tom Hacohen.
SVN revision: 56673
Subject: Re: [E-devel] [PATCH] elm widget: make show_region_set
function call all region show functions set by parents
I'm trying to send several patches that I've changed.
This is just the beginning of my patch rushes..
'elm_widget_show_region_set' function works fine in the simple case (any
widget inside one scroller) however, in the complex parent-child case
(such
as entry in the box in the horizontal scroller in the layout in the
vertical
scroller) it doesn't work correctly because all show region functions
set by
scrollers are not called.
So I changed it to call all show region functions set by its parents
widgets
if exist.
Please review the attached patch file and feel free to give me any
kind of
feedback.
SVN revision: 55592
elm_widget_disabled_set was calling focus_jump and it broke the focus tree.
Now, using focus_cycle to pass focus to next object.
Added test to disable focused button in test_focus.
SVN revision: 55408
add.del items will try and stick to viewing an acnhor item. it also
handles wrapping text properly now if style has such a thing - a test
style with that is there too (message style) for now - found isasue in
edje with textblock styles - doesnt change on state change. but anyway
- re-wrapping text works.. and it progressively processes the genlist
blocks to re-calc sizes etc. etc. so you dont block and so-on. i5ts
not too shabby. as for that - store has a generic struct type reader
now and is being tested... and get rid of unused var.
SVN revision: 54738
they CAN be focused :) see conform 2 test. focuse the entry in the
pager then dlete the pager page (pop). before focus vanished. now it
goes back to the top entry as you'd expect.
SVN revision: 54486
There's still a little bugger that can be noticed with the Scroller 2 test
and elm_conform still needs to handle this as scroller does.
SVN revision: 53778
In Window show, the focus is given to first focusable object, or to
window if no exist focusable object. So, suggest create the widgets
before show the window.
If pager is focused, it give the focus to top page in each promote.
SVN revision: 53733
Added set, get, unset, prepend and append (relative or not).
Set - overwrite the custom chain
Unset - Delete the custom chain
Get- Return the custom chain
Append - append after the relative object or in the end
Prepend - prepend before the relative object or in the start
SVN revision: 53115
Before, the focus_cycle try pass the focus to next, and try again if
need loop the objects. Now, the focus cycle return possible next
object and if is necessary loop or not to focus this returned object.
SVN revision: 53111
This Debug search all subobjects from one object and put in file all
sub-tree of elementary objects as dot language in file. After you can
use dot(from graphviz) to generate PNG, SVG,... diagram of objects.
SVN revision: 53035
Now Widgets can control between children interation or receive focus
itself. And focus_cycle has now one default code.
And don't pass focus to disabled widgets
SVN revision: 52959
With this commit is now possible to not use theme's cursor (default behevior)
that could be overriding cursors defined by the engine.
SVN revision: 52761
Basically, get the group from widget theme, using the string passed to
elm_object_cursor_set, get hot spots x and y from the theme (keeps the object
and these two integers on cursor struct).
Cursor is set with ecore_evas_object_cursor_set()
Some functions to change style were added to the api.
SVN revision: 52760
There's currently in Elementary a way for widgets that die to revert
focus to whoever had it first, but it was broken in some cases.
SVN revision: 52550
The Elm Widgets aren't disposed exactly as trees of Evas Objects, so
need store widget parents separated from Evas Smart Object parents.
The Evas propagation events don't satisfy all use cases. Like managing
events in elm_win or try if one parent manage the event before manage
it.
In this, I add hook to each widget manage their interested events or
from their child.
SVN revision: 52527
There's still work to do here, particularly in the theme, but it has
something nice and fun to see the code working.
The idea behind this:
Window tracks focused object and sends the highlight object(s) to it. These
are simple edje objects, one on top, one below the focused widget for nice
effects. Widgets can choose to ignore the highlight and this will be sent to
the parent object, if it doesn't ignore it as well.
About the bottom object, it doesn't work now. For the most part, focused
widget will always be a member of some smart object, so stacking won't work
and the desired effect is nowhere to be seen. This will be worked out later.
To be done now:
- Let the theme for a widget define its own highlight, disabling if needed
the standard one for those objects.
- Needed base in code to allow animations when switching focus. All in theme.
- Properly test all widgets and fix some things that will most likely work
in weird ways, given the nature of Evas/Edje and how Elementary makes use
of them.
- Forgot the rest, stay tuned, test, report, give ideas, plant a tree.
Work started by glima, continued with some refactors by me when he
decided he needed vacations.
SVN revision: 52524
Widgets can have customized cursors setting it with elm_object_cursor_set.
Widget's item can use elm_X_item_cursor_set to set a different cursor
for each item.
It will work only if HAVE_ELEMENTARY_X for now, but support for themeable
cursors is planned.
SVN revision: 52382
Now owner widget (elm_widget) is just used to listen for theme changes
and create/destroy the tooltip data. The actual mouse events operates
on all Evas_Object and is the one where tooltip data is actually
stored.
The public API is basically the same, just the event_info is now NULL
to avoid confusion.
The internal API introduces elm_object_sub_tooltip_content_cb_set()
and as the first parameter the eventarea. While this may be confusing,
as the second parameter is the actual elementary object, it is the one
that all other calls receive, like elm_object_tooltip_hide() or
elm_object_tooltip_unset(), thus it does make sense to have such order.
Also internal API, elm_widget_item_tooltip_* functions were
added. They are a variation of the widget API to handle its items, as
such the func() gets one more parameter: item, and the del_cb() gets
the item as event_info (that's why the public widget version got
event_info always NULL, to not confuse with this one!)
Widgets with items that makes sense to have tooltips got extra API:
* toolbar
* list
* gengrid
* genlist
SVN revision: 52173
Tooltips are set using elm_object_tooltip_content_cb_set(), that
returns the desired Evas_Object to use as contents, or using the
helper function elm_object_tooltip_text_set() that uses that
underneath.
The behavior is controlled part on elm_config, theme and user
application. In elm_config one defines the tooltip timeout. The theme
defines the padding around cursor x/y and window border x/y, as well
as the look and feel. Last but not least, the user application may
want to change the tooltip style with elm_object_tooltip_style_set().
Have fun!
This code was initially written by Tiago Falcao and Fabiano Fidencio,
I did some API review and changed some bits.
TODO: elm widget item support, like with toolbar items.
SVN revision: 52150
Lots of widgets have items that are not Evas_Object of type elm_widget
per se, like Elm_List_Item or Elm_Toolbar_Item. They all have, or
should have, some common attributes and functions such as data,
del_cb, a view object and a parent/owner widget. Thus this is being
provided and will be later used in future patches.
Right now I opted to hide elm_widget_item_del_cb_set(),
elm_widget_item_data_get(), elm_widget_item_data_set() inside
elm_priv.h and keep the old functions as wrappers to the new. But
maybe in future we can remove them and have the user to call the
common function.
Future extensions will use this base, such as tooltip support.
SVN revision: 52116
elm_object_signal_listen add callback(s) for edje object(s) of the widget.
elm_object_signal_unlisten delete this callback.
They're general functions, and every widget should set hooks for these.
It will improve elm extension flexibility. We have already
elm_object_signal_emit to send signals for the widgets theme, adding callbacks
is an expected step.
It provides a way to support sound on widgets. For example, in the elm extension
we could emit "file_to_play", "play", and add a callback with
elm_object_signal_listen for "*", "play". The callback function could use
the signal received to request the file to be played by the backend
sound system.
Certainly we should look for a better way to provide support for sound
on edje, but for now, it does the work. And anyway, it's only a use case
for these new functions.
SVN revision: 49868
This function sends a signal to the edje object of the obj.
It's a general function, and every widget should set a hook for this.
I'm setting a hook only for the spinner now, but soon I will work on other widgets.
SVN revision: 49681
is parent of an Evas_Object.
With these in place, one can check if the given object is an elmentary
widget and query for the first widget that is parent, so we can add
them and keep focus chain correct, useful for Edje externals, patch to
follow.
SVN revision: 47374
This plays well with edje's own deferred calculations. Usually size
hints are set on children and edje will flag itself as dirty, but real
calculations are deferred to "calculate" phase before rendering.
For now this unbreaks elm_layout with contents... but other types such
as GROUP, BOX and TABLE remain broken: when they change their internal
state (ie: child object is packed into box or table), this will not
trigger elm_layout.
That said, we need a better solution. Maybe ask edje to emit signals
when one of its children change hints (it already listen to this
anyway), in this case elm_layout should listen to those instead of
connecting directly to objects given through elm_layout_content_set().
SVN revision: 43752
If there is no parent or no scale set we should report the global
value, not try to get from the existent parent that would fail the
API_ENTRY and thus return 1.0.
SVN revision: 41022
* casts: remove internal "Item" and use "Elm_XXXX_Item" for carousel,
list, genlist and toolbar.
* warning: fix const on lots of getter apis, the object should be
const, and not the return! Of course lists that are returned and
are not supposed to be modified are still returned as const, but
maybe we should return iterators!
* list/genlist: fix selected_set() to be a bit (marginally)
faster. Do not operate if state has not changed and if it did
changed we're sure we're not in the object->selected list.
SVN revision: 39208
add tests for these
add tests for inheriting scaling factor from parent
fix test app to use list now instead of box+buttons (cleaner)
SVN revision: 38909