Subject: Re: [E-devel] Transition Layout for elm_box
There are 2 simple problems with the committed code. First, it would
be better to locate the struct _Elm_Box_Transition in elm_box.c
instead of Elementary.h.in, because users should create it with
elm_box_transition_new and changing its contents can be dangerous. And
second, in struct _Transition_Animation_Data, I declared 4 coordinate
variables as int, instead of using Evas_Coords.
I am sending both patches attached.
SVN revision: 52560
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
Subject: patch for indentation and using enum in elementary
I send the patch for elementary.
In this patch, I fixed the indentation of Elementary.h.in.
In addition, I use EINA_TRUE or EINA_FALSE instead of 1 or 0.
EVAS_HINT_EXPAND and EVA_HINT_FILL is used instead of 1.0 and -1.0.
Thanks.
SVN revision: 52447
Calling resize_object_del() when a resize_object died calls
elm_widget_sub_object_del(), which sets the parent of the (now dead)
widget to NULL. The problem is that this breaks some of the
stuff done in the smart_del() method in the smart class for widgets,
like reverting focus to whoever held it previously.
SVN revision: 52387
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
don't connect twice to the same object (happened whenever not using
sub-items), then the callback was being called twice.
also set the dead object pointer to NULL, so we avoid operating on it
any further.
SVN revision: 52354
The els_scroller.c:_smart_add() as disabling event propagation on
itself, that way an owner object (ie: elm_scroller,
elm_scrolled_entry, elm_list, ...) was not getting the mouse events it
gets, thus any evas_object_event_callback_add(..., EVAS_CALLBACK_MOUSE_*...)
were not working (effectively breaking tooltips).
Seems that the reason to do so was double-event reporting. It could
happen as the elm_smart_scroller has an event_obj that repeats event,
thus the object behind it, the edje_object, could get and possibly
repeat them as well.
As we are sure event_obj always get the events, but not sure of the
edje, as it depend on user contents, the logic is now changed to stop
propagation of the edje instead (it still processes the events! just
not propagates to elm_smart_scroller).
I hope this patch does not break anything, but please check your software!
SVN revision: 52350
It was elm_panes_horizontal_is, but grep shows no matches.
So I'm guessing horiztonal_get.
Seems was originally comited by watchwolf when the file was added.
SVN revision: 52287
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
Whenever object starts hiding Elementary sends "elm,action,hide", so
when it aborts such action it must always emit "elm,action,show" and
the best place to do this is at _elm_tooltip_hide_anim_stop().
Note: _elm_tooltip_hide() calls _elm_tooltip_hide_anim_stop() and thus
would show the object, but this is void as right after that the
tooltip object is deleted and thus the signal is never processed and
as we don't go back to main loop, nothing changes on screen.
SVN revision: 52167
I always wished tooltips would be less boring, and so we have them all
fancy and nice :-)
* tooltip theme can request a timeout before hiding. This means we
can fade out the tooltips nicely.
* tooltip theme get enough information to track its origin. The
current theme will show a small tip where it was created, and
dynamically follows it. The graphics kinda suck, but I tried to
achieve a cartoon-like buble using Inkscape.
* label style is set to "tooltip". I'm providing a default with
dark-gray text and 8 as size.
SVN revision: 52166
The Elm_Object_Layer is a convenience enumeration to help standardize
values so we don't ride into problems in future.
Tooltip has now its own layer, so set it there and avoid newly created
objects being created on top of them (usually they show on top of
everything as they are the last created, thus the topmost on the
default layer)
SVN revision: 52158
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
This patch changes all Elm_*_Item to use new infrastructure of
Elm_Widget_Item. This patch is basically a find-and-replace, but even
that was a bit tricky since every code had different names for the
same things, particularly for "view" and "widget" the names ranged
from "o"/"obj" to "base"/"o", quite confusing!
It is worth noting that Genlist and variants that adopted its "item
class" style such as Gengrid and Slideshow already provide a "del()"
callback there and I'm keeping them, however we should reconsider if
it is good to remove them and use elm_widget_item_del_cb_set()
instead. The drawback is that onde would have to set it, while the
other is done automatically when you create the object with the
class. Nonetheless this patch already introduces support to use
elm_widget_item_pre_notify_del(), but it will be void in such code as
nobody ever sets it.
Some new setters and getters were introduced to normalize code... and
they would be required once people write python-bindings for them,
like index and carousel.
SVN revision: 52118
IF we're replacing the pan_obj, then we should disconnect from the old
in order to avoid receive useless callbacks... actually if it is an
external pan object and we die and it does not, we may end crashing
due it calling function callbacks with garbage data.
SVN revision: 52117
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
At del_hook() stuff are already gone and invalid access may
happen. Doing it from del_pre_hook you still have things working nice.
Also refactor the destructor to do recursion and stop allocate list
nodes to avoid it... simpler.
SVN revision: 52114
The correct way is to use EINA_INLIST_CONTAINER_GET() that allows the
Eina_Inlist structure to be moved around in the structure. Right now
it did work fine, but I want to change the Elm_Genlist_Item later and
this change will be required and it is better to come in a separate
patch.
SVN revision: 52112
From _del_pre_hook() we first delete pan_smart and then call
elm_genlist_clear() to rip off children, however genlist_clear was
always doing evas_object_smart_callback_call() on it.
SVN revision: 52111
Like was already done to other widgets by bdilly, this patch adds the
possibility to send signals to elm_gengrid's theme.
P.S: lfelipe, ahi esta mi primer commit :P
SVN revision: 52109
Im going to clear the fileselector widget, I will make the theme use
a layout instead of a fixed box and also I will clear the api that have
silly names atm
If you have suggestions please speak now
DaveMDS
SVN revision: 51966
this is clear when building with -fvisibility=hidden and it breaks
with undefined reference as elm_selection_get() is not marked as EAPI.
SVN revision: 51956
This is not doing much now, just the version field in the struct,
some stuff stolen from E and a base to use when new things are added.
There are some comments in the code about what to do in certain cases
that E does not have, like a system update, new config and apps linked
to the old version still running when the config Atoms are updated. These
things we'll probably be addressed as they are needed, as well as come
clean up in quick code I ditched in there, but it would be good to do so
with more feedback from the good guys around that like to break SVN
every now and then.
Since the commit message is already long enough, I'm adding some more crap
just for the sake of doing so. I could go with some tl;dr thing as well,
but I don't feel like resuming what's up there.
Have a nice day.
SVN revision: 51843
A calendar is a widget that allows the user to select a date. It has
support to adding marks (holidays and checks by default). The calendar
is displayed month at a time.
Weekdays names and the function used to format month and year to
be displayed can be set, giving more flexibility to this widget.
SVN revision: 51584
Apply badzero.cocci, badnull.coci and badnull2.cocci
This should convert all cases where there's a comparison to NULL to simpler
forms. This patch applies the following transformations:
code before patch ||code after patch
===============================================================
return a == NULL; return !a;
return a != NULL; return !!a;
func(a == NULL); func(!a);
func(a != NULL); func(!!a);
b = a == NULL; b = !a;
b = a != NULL; b = !!a;
b = a == NULL ? c : d; b = !a ? c : d;
b = a != NULL ? c : d; b = a ? c : d;
other cases:
a == NULL !a
a != NULL a
SVN revision: 51487
1. Selection now works with the buttons in elementary_test.
2. Selection with ctrl+v does not print ERR:elementary elm_widget.c:1373 _elm_widget_type_check() Passing Object: (nil), of type: '(unknown)' when expecting type: 'entry' anymore.
SVN revision: 51216