From 0a034e8fe52e001514de513f9964d007247a1122 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Thu, 16 Sep 2010 21:33:10 +0000 Subject: [PATCH] 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 --- legacy/elementary/src/bin/test_tooltip.c | 12 +++++++++++- legacy/elementary/src/lib/els_scroller.c | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/bin/test_tooltip.c b/legacy/elementary/src/bin/test_tooltip.c index f74ab0be70..d6bdfd31af 100644 --- a/legacy/elementary/src/bin/test_tooltip.c +++ b/legacy/elementary/src/bin/test_tooltip.c @@ -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?"); diff --git a/legacy/elementary/src/lib/els_scroller.c b/legacy/elementary/src/lib/els_scroller.c index c452f6edd2..792a528766 100644 --- a/legacy/elementary/src/lib/els_scroller.c +++ b/legacy/elementary/src/lib/els_scroller.c @@ -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");