Enlightenment CVS committal Author : titan Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_widget_scrollframe.c e_widget_scrollframe.h Log Message: Add a new api for a simple scrollframe that manages pans size on its own. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_scrollframe.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_widget_scrollframe.c 28 Jul 2006 11:36:10 -0000 1.3 +++ e_widget_scrollframe.c 12 Aug 2006 21:53:26 -0000 1.4 @@ -12,9 +12,42 @@ static void _e_wid_del_hook(Evas_Object *obj); static void _e_wid_focus_hook(Evas_Object *obj); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); - +static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, +void *event_info); /* externally accessible functions */ EAPI Evas_Object * +e_widget_scrollframe_simple_add(Evas *evas, Evas_Object *child) +{ + E_Widget_Data *wd; + Evas_Object *obj, *o; + + obj = e_widget_add(evas); + + e_widget_del_hook_set(obj, _e_wid_del_hook); + e_widget_focus_hook_set(obj, _e_wid_focus_hook); + wd = calloc(1, sizeof(wd)); + e_widget_data_set(obj, wd); + + o = e_scrollframe_add(evas); + e_scrollframe_policy_set(o, E_SCROLLFRAME_POLICY_AUTO, + E_SCROLLFRAME_POLICY_AUTO); + wd->o_scrollframe = o; + evas_object_show(o); + e_widget_sub_object_add(obj, o); + e_widget_resize_object_set(obj, o); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); + + e_scrollframe_child_set(wd->o_scrollframe, child); + evas_object_show(child); + wd->o_child = child; + e_widget_sub_object_add(obj, child); + evas_object_event_callback_add(wd->o_scrollframe, EVAS_CALLBACK_RESIZE, + _e_wid_cb_scrollframe_resize, wd->o_child); + + return wd->o_scrollframe; +} + +EAPI Evas_Object * e_widget_scrollframe_pan_add(Evas *evas, Evas_Object *pan, void (*pan_set) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*pan_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y), void (*pan_max_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y), void (*pan_child_size_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)) { Evas_Object *obj, *o; @@ -101,3 +134,18 @@ { e_widget_focus_steal(data); } + +static void +_e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Coord mw, mh, vw, vh, w, h; + + e_scrollframe_child_viewport_size_get(obj, &vw, &vh); + e_widget_min_size_get(data, &mw, &mh); + evas_object_geometry_get(data, NULL, NULL, &w, &h); + if (vw >= mw) + { + if (w != vw) evas_object_resize(data, vw, h); + } +} + =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_scrollframe.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_widget_scrollframe.h 22 Jul 2006 21:48:24 -0000 1.2 +++ e_widget_scrollframe.h 12 Aug 2006 21:53:26 -0000 1.3 @@ -7,6 +7,7 @@ #define E_WIDGET_SCROLLFRAME_H EAPI Evas_Object *e_widget_scrollframe_pan_add(Evas *evas, Evas_Object *pan, void (*pan_set) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*pan_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y), void (*pan_max_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y), void (*pan_child_size_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)); +EAPI Evas_Object *e_widget_scrollframe_simple_add(Evas *evas, Evas_Object *child); EAPI void e_widget_scrollframe_child_pos_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y); EAPI void e_widget_scrollframe_child_pos_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); EAPI void e_widget_scrollframe_child_region_show(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs