elm_smart_scroller now propagates the events, fixes tooltips in scrolled stuff.

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
This commit is contained in:
Gustavo Sverzut Barbieri 2010-09-16 21:33:10 +00:00
parent 5e11f54d20
commit 0a034e8fe5
2 changed files with 12 additions and 2 deletions

View File

@ -178,7 +178,7 @@ _tt_visible_lock_toggle(void *data __UNUSED__, Evas_Object *obj, void *event_inf
void
test_tooltip(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win, *bg, *bx, *tb, *bt, *lst;
Evas_Object *win, *bg, *bx, *tb, *bt, *se, *lst;
Elm_Toolbar_Item *ti;
Elm_List_Item *li;
@ -268,6 +268,16 @@ test_tooltip(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
elm_box_pack_end(bx, bt);
evas_object_show(bt);
se = elm_scrolled_entry_add(win);
evas_object_size_hint_weight_set(se, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(se, EVAS_HINT_FILL, 0.5);
elm_scrolled_entry_scrollbar_policy_set(se, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_scrolled_entry_entry_set(se, "Hello, some scrolled entry here!");
elm_object_tooltip_text_set(se, "Type something here!");
elm_scrolled_entry_single_line_set(se, 1);
elm_box_pack_end(bx, se);
evas_object_show(se);
lst = elm_list_add(win);
li = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_text_set(li, "Something useful here?");

View File

@ -2309,9 +2309,9 @@ _smart_add(Evas_Object *obj)
sd->one_dir_at_a_time = 1;
evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, _smart_event_key_down, sd);
evas_object_propagate_events_set(obj, 0);
o = edje_object_add(evas_object_evas_get(obj));
evas_object_propagate_events_set(o, 0);
sd->edje_obj = o;
// FIXME: null parent obj ... :(
_elm_theme_object_set(NULL, o, "scroller", "base", "default");