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

Reply via email to