jaehwan pushed a commit to branch master.
commit f948e07a1a9aaa172afc793bd4d536fb9ef78ffc
Author: Jaehwan Kim <[email protected]>
Date: Tue Apr 16 21:06:11 2013 +0900
Scroll to highlighted item in toolbar. This is related to
ed93aa20588633d36bfcdf6e3b093923be65f4d8.
---
src/lib/elm_toolbar.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index da7033e..777cfd5 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -264,7 +264,7 @@ _items_size_fit(Evas_Object *obj, Evas_Coord *bl,
Evas_Coord view)
}
static Eina_Bool
-_elm_toolbar_item_coordinates_calc(Elm_Object_Item *item,
+_elm_toolbar_item_coordinates_calc(Elm_Toolbar_Item *item,
Elm_Toolbar_Item_Scrollto_Type type,
Evas_Coord *x,
Evas_Coord *y,
@@ -623,7 +623,7 @@ _highlight_next_item_get(Evas_Object *obj, Evas_Object
*box, Eina_Bool reverse)
static void
-_elm_toolbar_smart_event(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list
*list)
+_elm_toolbar_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Evas_Object *src = va_arg(*list, Evas_Object *);
(void) src;
@@ -633,6 +633,7 @@ _elm_toolbar_smart_event(Eo *obj EINA_UNUSED, void *_pd
EINA_UNUSED, va_list *li
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Elm_Toolbar_Item *it = NULL;
+ Evas_Coord x, y, w, h;
ELM_TOOLBAR_DATA_GET(obj, sd);
@@ -708,6 +709,10 @@ _elm_toolbar_smart_event(Eo *obj EINA_UNUSED, void *_pd
EINA_UNUSED, va_list *li
sd->highlighted_item = it;
edje_object_signal_emit(VIEW(sd->highlighted_item), "elm,highlight,on",
"elm");
+ if (_elm_toolbar_item_coordinates_calc(
+ sd->highlighted_item, ELM_TOOLBAR_ITEM_SCROLLTO_IN, &x, &y, &w, &h))
+ eo_do(obj, elm_scrollable_interface_region_bring_in(x, y, w, h));
+
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
if (ret) *ret = EINA_TRUE;
return;
@@ -3870,7 +3875,7 @@ elm_toolbar_item_show(Elm_Object_Item *it,
Elm_Toolbar_Item_Scrollto_Type type)
ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(it);
- if (_elm_toolbar_item_coordinates_calc(it, type, &x, &y, &w, &h))
+ if (_elm_toolbar_item_coordinates_calc(item, type, &x, &y, &w, &h))
eo_do(WIDGET(item), elm_scrollable_interface_content_region_show
(x, y, w, h));
}
@@ -3883,7 +3888,7 @@ elm_toolbar_item_bring_in(Elm_Object_Item *it,
Elm_Toolbar_Item_Scrollto_Type ty
ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(it);
- if (_elm_toolbar_item_coordinates_calc(it, type, &x, &y, &w, &h))
+ if (_elm_toolbar_item_coordinates_calc(item, type, &x, &y, &w, &h))
eo_do(WIDGET(item), elm_scrollable_interface_region_bring_in
(x, y, w, h));
}
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter