From aa355036c49a59627e5e3a024496dcca9ca12f12 Mon Sep 17 00:00:00 2001 From: rephorm Date: Thu, 7 Jun 2007 03:49:09 +0000 Subject: [PATCH] when going back to categories list, scroll to the category we were just in get rid of some warnings SVN revision: 30269 --- src/bin/e_ilist.c | 20 ++++++++++++++++++++ src/bin/e_ilist.h | 1 + src/bin/e_int_config_apps.c | 4 ++++ src/bin/e_widget_framelist.c | 4 ++-- src/bin/e_widget_framelist.h | 4 ++-- src/bin/e_widget_ilist.c | 20 ++++++++++++++++++++ src/bin/e_widget_ilist.h | 1 + 7 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/bin/e_ilist.c b/src/bin/e_ilist.c index 8c3b15414..e1f18ef5f 100644 --- a/src/bin/e_ilist.c +++ b/src/bin/e_ilist.c @@ -1,3 +1,6 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ #include "e.h" #define SMART_NAME "e_ilist" @@ -403,6 +406,23 @@ e_ilist_nth_is_header(Evas_Object *obj, int n) return 0; } +EAPI void +e_ilist_nth_geometry_get(Evas_Object *obj, int n, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +{ + E_Ilist_Item *si; + int error; + + API_ENTRY return; + if (!sd->items) return; + + si = evas_list_nth(sd->items, n); + if (!si) return; + + evas_object_geometry_get(si->o_base, x, y, w, h); + *x -= sd->x; + *y -= sd->y; +} + EAPI void e_ilist_icon_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) { diff --git a/src/bin/e_ilist.h b/src/bin/e_ilist.h index d914c3b70..b528b51e1 100644 --- a/src/bin/e_ilist.h +++ b/src/bin/e_ilist.h @@ -44,6 +44,7 @@ EAPI void e_ilist_nth_label_set (Evas_Object *obj, int n, const EAPI Evas_Object *e_ilist_nth_icon_get (Evas_Object *obj, int n); EAPI void e_ilist_nth_icon_set (Evas_Object *obj, int n, Evas_Object *icon); EAPI int e_ilist_nth_is_header (Evas_Object *obj, int n); +EAPI void e_ilist_nth_geometry_get (Evas_Object *obj, int n, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void e_ilist_icon_size_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h); EAPI Evas_List *e_ilist_items_get (Evas_Object *obj); EAPI void e_ilist_multi_select (Evas_Object *obj, int n); diff --git a/src/bin/e_int_config_apps.c b/src/bin/e_int_config_apps.c index cb6bd2413..3c4f5f8b1 100644 --- a/src/bin/e_int_config_apps.c +++ b/src/bin/e_int_config_apps.c @@ -44,6 +44,7 @@ struct _E_Config_Dialog_Data Evas_Object *o_add, *o_del, *o_categories; Ecore_List *apps; const char *category; + int category_n; char *fav, *app; }; @@ -491,6 +492,7 @@ _category_cb_selected(void *data) cfdata = data; + cfdata->category_n = e_widget_ilist_selected_get(cfdata->o_apps); if (cfdata->category) ecore_string_release(cfdata->category); cfdata->category = ecore_string_instance(cfdata->app); _fill_apps(cfdata); @@ -525,6 +527,8 @@ _cb_categories(void *data, void *data2) if (cfdata->category) ecore_string_release(cfdata->category); cfdata->category = NULL; _fill_categories(cfdata); + e_widget_ilist_nth_show(cfdata->o_apps, cfdata->category_n, 1); + cfdata->category_n = 0; } static void diff --git a/src/bin/e_widget_framelist.c b/src/bin/e_widget_framelist.c index cea980227..4fd668251 100644 --- a/src/bin/e_widget_framelist.c +++ b/src/bin/e_widget_framelist.c @@ -16,7 +16,7 @@ static void _e_wid_disable_hook(Evas_Object *obj); /* externally accessible functions */ EAPI Evas_Object * -e_widget_framelist_add(Evas *evas, char *label, int horiz) +e_widget_framelist_add(Evas *evas, const char *label, int horiz) { Evas_Object *obj, *o; E_Widget_Data *wd; @@ -88,7 +88,7 @@ e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double val } EAPI void -e_widget_framelist_label_set(Evas_Object *obj, char *label) +e_widget_framelist_label_set(Evas_Object *obj, const char *label) { E_Widget_Data *wd; diff --git a/src/bin/e_widget_framelist.h b/src/bin/e_widget_framelist.h index 0ee1bcf7a..2129cafc3 100644 --- a/src/bin/e_widget_framelist.h +++ b/src/bin/e_widget_framelist.h @@ -6,10 +6,10 @@ #ifndef E_WIDGET_FRAMELIST_H #define E_WIDGET_FRAMELIST_H -EAPI Evas_Object *e_widget_framelist_add(Evas *evas, char *label, int horiz); +EAPI Evas_Object *e_widget_framelist_add(Evas *evas, const char *label, int horiz); EAPI void e_widget_framelist_object_append(Evas_Object *obj, Evas_Object *sobj); EAPI void e_widget_framelist_content_align_set(Evas_Object *obj, double halign, double valign); -EAPI void e_widget_framelist_label_set(Evas_Object *obj, char *label); +EAPI void e_widget_framelist_label_set(Evas_Object *obj, const char *label); #endif #endif diff --git a/src/bin/e_widget_ilist.c b/src/bin/e_widget_ilist.c index 61d5094f1..a1f190031 100644 --- a/src/bin/e_widget_ilist.c +++ b/src/bin/e_widget_ilist.c @@ -242,6 +242,26 @@ e_widget_ilist_nth_data_get(Evas_Object *obj, int n) return wcb->data; } +/** + * Show the nth element of an ilist + * @param obj the ilist + * @param n the number of the element to show + * @param top if true, place this item at the top, otherwise scroll just + * enough to show the element (from the current position). + */ +EAPI void +e_widget_ilist_nth_show(Evas_Object *obj, int n, int top) +{ + E_Widget_Data *wd; + Evas_Coord x, y, w, h; + wd = e_widget_data_get(obj); + e_ilist_nth_geometry_get(wd->o_ilist, n, &x, &y, &w, &h); + if (top) + e_scrollframe_child_pos_set(wd->o_scrollframe, x, y); + else + e_scrollframe_child_region_show(wd->o_scrollframe, x, y, w, h); +} + EAPI void e_widget_ilist_selected_set(Evas_Object *obj, int n) { diff --git a/src/bin/e_widget_ilist.h b/src/bin/e_widget_ilist.h index 1e03f84c0..92f590ffc 100644 --- a/src/bin/e_widget_ilist.h +++ b/src/bin/e_widget_ilist.h @@ -22,6 +22,7 @@ EAPI const char *e_widget_ilist_nth_label_get(Evas_Object *obj, int n); EAPI void e_widget_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon); EAPI Evas_Object *e_widget_ilist_nth_icon_get(Evas_Object *obj, int n); EAPI void *e_widget_ilist_nth_data_get(Evas_Object *obj, int n); +EAPI void e_widget_ilist_nth_show(Evas_Object *obj, int n, int top); EAPI void e_widget_ilist_selected_set(Evas_Object *obj, int n); EAPI int e_widget_ilist_selected_get(Evas_Object *obj); EAPI const char *e_widget_ilist_selected_label_get(Evas_Object *obj);