Enlightenment CVS committal
Author : rephorm
Project : e17
Module : proto
Dir : e17/proto/esmart/src/container
Modified Files:
container.h container_element.c container_smart.c
container_util.c
Log Message:
put e_container_scroll_set/get() in the header file.
these can be used to do custom scrolling
also, adjust the scroll_offset on resize to keep you in the same position relative to
the elements. if the length of all the elements becomes smaller than the size of the
container, it will reset the offset to 0 to prevent scrolling from getting frozen out.
do the same thing on element remove. (i haven't tested this yet, not sure exactly how
it will work)
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- container.h 19 Oct 2003 23:14:51 -0000 1.5
+++ container.h 21 Oct 2003 22:08:34 -0000 1.6
@@ -144,6 +144,9 @@
void e_container_scroll_stop(Evas_Object *container);
void e_container_scroll(Evas_Object *container, int val);
+void e_container_scroll_offset_set(Evas_Object *container, int val);
+int e_container_scroll_offset_get(Evas_Object *container);
+
/* callbacks */
void e_container_callback_order_change_set(Evas_Object *obj,
void (*func)(void *data),
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_element.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- container_element.c 14 Sep 2003 00:30:38 -0000 1.1
+++ container_element.c 21 Oct 2003 22:08:34 -0000 1.2
@@ -81,14 +81,18 @@
{
Container *cont;
Container_Element *el;
+ int old_length;
cont = _container_fetch(container);
if (!cont) return;
+ old_length = e_container_elements_length_get(container);
+
el = evas_object_data_get(element, "Container_Element");
cont->elements = evas_list_remove(cont->elements, el);
_container_elements_fix(cont);
+ _container_scale_scroll(cont, old_length);
}
Evas_List *e_container_elements_get(Evas_Object *container)
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_smart.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- container_smart.c 12 Oct 2003 01:43:54 -0000 1.4
+++ container_smart.c 21 Oct 2003 22:08:34 -0000 1.5
@@ -226,20 +226,26 @@
_container_resize(Evas_Object *obj, double w, double h)
{
Container *data;
+ double old_length;
data = evas_object_smart_data_get(obj);
if (w == data->w && h == data->h) return;
+ old_length = e_container_elements_length_get(obj);
+
evas_object_resize(data->clipper, w, h);
evas_object_resize(data->grabber, w, h);
- data->scroll_offset = 0;
+// data->scroll_offset = 0;
+
+
data->w = w;
data->h = h;
_container_elements_fix(data);
+ _container_scale_scroll(data, old_length);
}
void
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_util.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- container_util.c 14 Sep 2003 00:30:38 -0000 1.1
+++ container_util.c 21 Oct 2003 22:08:34 -0000 1.2
@@ -14,3 +14,22 @@
return cont;
}
+void
+_container_scale_scroll(Container *cont, double old_length)
+{
+ int new_scroll;
+ double new_length;
+
+ new_length = e_container_elements_length_get(cont->obj);
+
+ if (new_length < (cont->direction ? cont->h : cont->w))
+ {
+ new_scroll = 0;
+ }
+ else
+ new_scroll = cont->scroll_offset * (new_length / old_length);
+
+ e_container_scroll_offset_set(cont->obj, new_scroll);
+
+
+}
-------------------------------------------------------
This SF.net email is sponsored by OSDN developer relations
Here's your chance to show off your extensive product knowledge
We want to know what you know. Tell us and you have a chance to win $100
http://www.zoomerang.com/survey.zgi?HRPT1X3RYQNC5V4MLNSV3E54
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs