Enlightenment CVS committal
Author : atmosphere
Project : e17
Module : proto
Dir : e17/proto/esmart/src/container
Modified Files:
container.c container.h container_element.c container_plugin.c
container_private.h container_smart.c
Log Message:
added two functions to the container plugin
post_init : basically allows you to add callbacks and plugin specific stuff,
once at the startup
changed : this gets called every time the container is modified, item
appended/deleted/scrolled etc.
You should be able to do whatever you want from the plugin side now :)
Also fix the broken transparency setting. Visibility of the container is
always transparent if there are 0 elements.
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- container.c 15 Jan 2004 03:52:01 -0000 1.11
+++ container.c 24 Jan 2004 20:19:37 -0000 1.12
@@ -100,6 +100,7 @@
else if (cont->scroll_offset > 0)
cont->scroll_offset = 0;
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -112,6 +113,7 @@
if (cont->scroll_offset == scroll_offset) return;
cont->scroll_offset = scroll_offset;
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -163,6 +165,7 @@
cont->fill = fill;
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -186,6 +189,7 @@
cont->spacing = spacing;
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -362,6 +366,18 @@
}
void
+_container_elements_changed(Container *cont)
+{
+ int r, g, b;
+ evas_object_color_get(cont->clipper, &r, &g, &b, NULL);
+ if(evas_list_count(cont->elements) > 0)
+ evas_object_color_set(cont->clipper, r, g, b, cont->clipper_orig_alpha);
+ else
+ evas_object_color_set(cont->clipper, r, g, b, 0);
+ if (cont->plugin && cont->plugin->changed)
+ cont->plugin->changed(cont);
+}
+void
_container_elements_fix(Container *cont)
{
if (cont->plugin && cont->plugin->layout)
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- container.h 14 Jan 2004 04:32:02 -0000 1.11
+++ container.h 24 Jan 2004 20:19:43 -0000 1.12
@@ -116,6 +116,9 @@
void (*scroll_start)(Container *cont, double velocity);
void (*scroll_stop)(Container *cont);
void (*scroll_to)(Container *cont, Container_Element *el);
+
+ void (*post_init)(Container *cont);
+ void (*changed)(Container *cont);
};
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_element.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- container_element.c 13 Jan 2004 18:46:29 -0000 1.5
+++ container_element.c 24 Jan 2004 20:20:48 -0000 1.6
@@ -16,6 +16,7 @@
cont->elements = evas_list_append(cont->elements, el);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -32,6 +33,7 @@
cont->elements = evas_list_prepend(cont->elements, el);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -53,6 +55,7 @@
cont->elements = evas_list_append_relative(cont->elements, el, rel);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -74,6 +77,7 @@
cont->elements = evas_list_prepend_relative(cont->elements, el, rel);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
}
@@ -91,6 +95,7 @@
el = evas_object_data_get(element, "Container_Element");
cont->elements = evas_list_remove(cont->elements, el);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
_container_scale_scroll(cont, old_length);
}
@@ -113,6 +118,7 @@
cont->elements = evas_list_remove(cont->elements, el);
free (el);
+ _container_elements_changed(cont);
_container_elements_fix(cont);
_container_scale_scroll(cont, old_length);
}
@@ -136,6 +142,7 @@
cont->elements = evas_list_remove(cont->elements, el);
free(el);
}
+ _container_elements_changed(cont);
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_plugin.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- container_plugin.c 16 Jan 2004 16:50:37 -0000 1.8
+++ container_plugin.c 24 Jan 2004 20:20:52 -0000 1.9
@@ -151,7 +151,9 @@
return 0;
}
}
-
+ if(cont->plugin->post_init)
+ cont->plugin->post_init(cont);
+
return 1;
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_private.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- container_private.h 13 Jan 2004 19:26:41 -0000 1.3
+++ container_private.h 24 Jan 2004 20:20:54 -0000 1.4
@@ -6,6 +6,7 @@
Container *_container_fetch(Evas_Object *obj);
Container_Element *_container_element_new(Container *cont, Evas_Object *obj);
void _container_elements_fix(Container *cont);
+void _container_elements_changed(Container *cont);
double _container_elements_orig_length_get(Container *cont);
void _cb_container(void *data, Evas *e, Evas_Object *obj, void *event_info);
void _cb_element_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_smart.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- container_smart.c 13 Jan 2004 19:49:02 -0000 1.10
+++ container_smart.c 24 Jan 2004 20:20:55 -0000 1.11
@@ -86,6 +86,7 @@
data->clipper = evas_object_rectangle_add(data->evas);
evas_object_smart_member_add(obj, data->clipper);
evas_object_repeat_events_set(data->clipper, 1);
+ evas_object_color_set(data->clipper, 255, 255, 255, 0);
data->clipper_orig_alpha = 255;
@@ -93,6 +94,9 @@
evas_object_color_set(data->grabber, 40, 40, 255, 0);
evas_object_repeat_events_set(data->grabber, 1);
evas_object_smart_member_add(obj, data->grabber);
+ /*
+ evas_object_clip_set(data->grabber, data->clipper);
+ */
evas_object_event_callback_add(data->grabber, EVAS_CALLBACK_MOUSE_DOWN,
_cb_container, data);
evas_object_event_callback_add(data->grabber, EVAS_CALLBACK_MOUSE_UP,
_cb_container, data);
@@ -222,13 +226,13 @@
data = evas_object_smart_data_get(obj);
if((data->x == x) && (data->y == y))
return;
-
evas_object_move(data->clipper, x, y);
evas_object_move(data->grabber, x, y);
data->x = x;
data->y = y;
-
+
+ _container_elements_changed(data);
_container_elements_fix(data);
}
@@ -247,13 +251,10 @@
evas_object_resize(data->clipper, w, h);
evas_object_resize(data->grabber, w, h);
-// data->scroll_offset = 0;
-
-
-
data->w = w;
data->h = h;
+ _container_elements_changed(data);
_container_elements_fix(data);
_container_scale_scroll(data, old_length);
}
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs