A small patch to make the container clipper invisible when no elements
are added to the container.


-- 

Oystein Haare
diff -ur esmart/src/container/container.c esmart-fixed/src/container/container.c
--- esmart/src/container/container.c	2003-10-18 21:18:31.000000000 +0200
+++ esmart-fixed/src/container/container.c	2003-11-01 16:49:17.000000000 +0100
@@ -351,6 +351,7 @@
   double L; // length of all objects at original size (for nonhomog)
   int num; // number of elements
   double error = 0;
+  int r,g,b;
 
   /* FIXME: add a 'changed' flag to prevent excessive recalcs */
   
@@ -377,6 +378,13 @@
 
   L = _container_elements_orig_length_get(cont);
   num = evas_list_count(cont->elements);
+  
+  
+  evas_object_color_get(cont->clipper, &r, &g, &b, NULL);
+  if(num > 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);
 
   for (l = cont->elements; l; l = l->next)
   {
diff -ur esmart/src/container/container.h esmart-fixed/src/container/container.h
--- esmart/src/container/container.h	2003-10-22 00:08:34.000000000 +0200
+++ esmart-fixed/src/container/container.h	2003-11-01 16:27:34.000000000 +0100
@@ -53,6 +53,8 @@
   } padding;
 
   double x, y, w, h;    /* geometry */
+  
+  int clipper_orig_alpha;		/* original alpha value of clipper */
 
   int spacing;          /* space between elements */
 
diff -ur esmart/src/container/container_smart.c esmart-fixed/src/container/container_smart.c
--- esmart/src/container/container_smart.c	2003-10-22 00:08:34.000000000 +0200
+++ esmart-fixed/src/container/container_smart.c	2003-11-01 16:25:57.000000000 +0100
@@ -75,6 +75,8 @@
   data->clipper = evas_object_rectangle_add(data->evas);
   evas_object_smart_member_add(obj, data->clipper);
   evas_object_repeat_events_set(data->clipper, 1);
+  
+  data->clipper_orig_alpha = 255;
 
   data->grabber = evas_object_rectangle_add(data->evas);
   evas_object_color_set(data->grabber, 40, 40, 255, 0);
@@ -279,6 +281,7 @@
   data = evas_object_smart_data_get(obj);
 
   evas_object_color_set(data->clipper, r, g, b, a);
+  data->clipper_orig_alpha = a;
 }
 
 void
diff -ur esmart/src/container/container.c esmart-fixed/src/container/container.c
--- esmart/src/container/container.c	2003-10-18 21:18:31.000000000 +0200
+++ esmart-fixed/src/container/container.c	2003-11-01 16:49:17.000000000 +0100
@@ -351,6 +351,7 @@
   double L; // length of all objects at original size (for nonhomog)
   int num; // number of elements
   double error = 0;
+  int r,g,b;
 
   /* FIXME: add a 'changed' flag to prevent excessive recalcs */
   
@@ -377,6 +378,13 @@
 
   L = _container_elements_orig_length_get(cont);
   num = evas_list_count(cont->elements);
+  
+  
+  evas_object_color_get(cont->clipper, &r, &g, &b, NULL);
+  if(num > 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);
 
   for (l = cont->elements; l; l = l->next)
   {
diff -ur esmart/src/container/container.h esmart-fixed/src/container/container.h
--- esmart/src/container/container.h	2003-10-22 00:08:34.000000000 +0200
+++ esmart-fixed/src/container/container.h	2003-11-01 16:27:34.000000000 +0100
@@ -53,6 +53,8 @@
   } padding;
 
   double x, y, w, h;    /* geometry */
+  
+  int clipper_orig_alpha;		/* original alpha value of clipper */
 
   int spacing;          /* space between elements */
 
diff -ur esmart/src/container/container_smart.c esmart-fixed/src/container/container_smart.c
--- esmart/src/container/container_smart.c	2003-10-22 00:08:34.000000000 +0200
+++ esmart-fixed/src/container/container_smart.c	2003-11-01 16:25:57.000000000 +0100
@@ -75,6 +75,8 @@
   data->clipper = evas_object_rectangle_add(data->evas);
   evas_object_smart_member_add(obj, data->clipper);
   evas_object_repeat_events_set(data->clipper, 1);
+  
+  data->clipper_orig_alpha = 255;
 
   data->grabber = evas_object_rectangle_add(data->evas);
   evas_object_color_set(data->grabber, 40, 40, 255, 0);
@@ -279,6 +281,7 @@
   data = evas_object_smart_data_get(obj);
 
   evas_object_color_set(data->clipper, r, g, b, a);
+  data->clipper_orig_alpha = a;
 }
 
 void

Reply via email to