Hi,
I made a patch so that hiding of the shelf is done by the shelf and not
by the theme. I think this will make it easier to have a consistent and
configurable shelf-hiding behaviour. 
I added one theme-data item to the shelf group: "hidden_state_size"
which sets the height or width for the shelf when it is in hidden
state. 


Regards,
Hannes

 
 
Index: default_shelf.edc
===================================================================
RCS file: /var/cvs/e/e17/apps/e/data/themes/default_shelf.edc,v
retrieving revision 1.16
diff -u -r1.16 default_shelf.edc
--- default_shelf.edc	4 Apr 2007 12:51:51 -0000	1.16
+++ default_shelf.edc	5 Apr 2007 18:40:31 -0000
@@ -11,105 +11,16 @@
    name: "e/shelf/default/base";
    data {
       // this tells e the border is shaped
-      item: "shaped" "1";
+      //item: "shaped" "1";
+        item: "hidden_state_size" "6";
    }
    parts {
-      part {
-	 name:          "item_clip_bottom";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 1.0;
-	       offset: 0 -2;
-	    }
-	    rel2 {
-	       relative: 1.0 2.0;
-	       offset: -1 -3;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_top";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 -1.0;
-	       offset: 0 2;
-	    }
-	    rel2 {
-	       relative: 1.0 0.0;
-	       offset: -1 1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_left";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: -1.0 0.0;
-	       offset: 2 0;
-	    }
-	    rel2 {
-	       relative: 0.0 1.0;
-	       offset: 1 -1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_right";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 1.0 0.0;
-	       offset: -2 0;
-	    }
-	    rel2 {
-	       relative: 2.0 1.0;
-	       offset: -3 -1;
-	    }
-	 }
-      }
+     
       part {
 	 name:          "base";
 	 mouse_events:  0;
-//	 clip_to:       "item_clip";
 	 description {
 	    state:    "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_h.png";
 	       border: 19 19 9 9;
@@ -126,12 +37,6 @@
 	 description {
 	    state:    "top_left" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    fill {
 	       origin {
 		  offset: -16 -6;
@@ -144,12 +49,6 @@
 	 description {
 	    state:    "top_right" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 -6;
@@ -162,12 +61,6 @@
 	 description {
 	    state:    "bottom" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 0;
@@ -180,12 +73,6 @@
 	 description {
 	    state:    "bottom_left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: -16 0;
@@ -198,12 +85,6 @@
 	 description {
 	    state:    "bottom_right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 0;
@@ -216,12 +97,6 @@
 	 description {
 	    state:    "left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -238,12 +113,6 @@
 	 description {
 	    state:    "left_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -260,12 +129,6 @@
 	 description {
 	    state:    "left_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -282,12 +145,6 @@
 	 description {
 	    state:    "right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -304,12 +161,6 @@
 	 description {
 	    state:    "right_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -326,12 +177,6 @@
 	 description {
 	    state:    "right_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg_v.png";
 	       border: 9 9 19 19;
@@ -353,12 +198,10 @@
 	 description {
 	    state:    "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_top";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -367,12 +210,10 @@
 	    state:    "top_left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_top";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -381,12 +222,10 @@
 	    state:    "top_right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_top";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -395,12 +234,10 @@
 	    state:    "bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -409,12 +246,10 @@
 	    state:    "bottom_left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   2   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -423,12 +258,10 @@
 	    state:    "bottom_right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -437,12 +270,10 @@
 	    state:    "left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -451,12 +282,10 @@
 	    state:    "left_top" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -465,12 +294,10 @@
 	    state:    "left_bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -479,12 +306,10 @@
 	    state:    "right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -493,12 +318,10 @@
 	    state:    "right_top" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -507,12 +330,10 @@
 	    state:    "right_bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -520,28 +341,7 @@
       }
    }
    programs {
-      program {
-	 name:    "hide";
-	 signal:  "e,state,hidden";
-	 source:  "e";
-	 action:  STATE_SET "hidden" 0.0;
-	 transition: ACCELERATE 0.3;
-	 target:  "item_clip_bottom";
-	 target:  "item_clip_top";
-	 target:  "item_clip_left";
-	 target:  "item_clip_right";
-      }
-      program {
-	 name:    "show";
-	 signal:  "e,state,visible";
-	 source:  "e";
-	 transition: DECELERATE 0.3;
-	 action:  STATE_SET "default" 0.0;
-	 target:  "item_clip_bottom";
-	 target:  "item_clip_top";
-	 target:  "item_clip_left";
-	 target:  "item_clip_right";
-      }
+
       program {
 	 name:    "orient1";
 	 signal:  "e,state,orientation,top";
@@ -777,104 +577,15 @@
    data {
       // this tells e the border is shaped
       item: "shaped" "1";
+      item: "hidden_state_size" "6";
    }
    parts {
-      part {
-	 name:          "item_clip_bottom";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 1.0;
-	       offset: 0 -2;
-	    }
-	    rel2 {
-	       relative: 1.0 2.0;
-	       offset: -1 -3;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_top";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 -1.0;
-	       offset: 0 2;
-	    }
-	    rel2 {
-	       relative: 1.0 0.0;
-	       offset: -1 1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_left";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: -1.0 0.0;
-	       offset: 2 0;
-	    }
-	    rel2 {
-	       relative: 0.0 1.0;
-	       offset: 1 -1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_right";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 1.0 0.0;
-	       offset: -2 0;
-	    }
-	    rel2 {
-	       relative: 2.0 1.0;
-	       offset: -3 -1;
-	    }
-	 }
-      }
+     
       part {
 	 name:          "base";
 	 mouse_events:  0;
-//	 clip_to:       "item_clip";
 	 description {
 	    state:    "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_h.png";
 	       border: 19 19 9 9;
@@ -891,12 +602,6 @@
 	 description {
 	    state:    "top_left" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    fill {
 	       origin {
 		  offset: -16 -6;
@@ -909,12 +614,6 @@
 	 description {
 	    state:    "top_right" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 -6;
@@ -927,12 +626,6 @@
 	 description {
 	    state:    "bottom" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 0;
@@ -945,12 +638,6 @@
 	 description {
 	    state:    "bottom_left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: -16 0;
@@ -963,12 +650,6 @@
 	 description {
 	    state:    "bottom_right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	    fill {
 	       origin {
 		  offset: 0 0;
@@ -981,12 +662,6 @@
 	 description {
 	    state:    "left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1003,12 +678,6 @@
 	 description {
 	    state:    "left_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1025,12 +694,6 @@
 	 description {
 	    state:    "left_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1047,12 +710,6 @@
 	 description {
 	    state:    "right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1069,12 +726,6 @@
 	 description {
 	    state:    "right_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1091,12 +742,6 @@
 	 description {
 	    state:    "right_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	    image {
 	       normal: "e17_shelf_bg2_v.png";
 	       border: 9 9 19 19;
@@ -1114,16 +759,13 @@
       part {
 	 name:          "e.swallow.content";
 	 type:          SWALLOW;
-//	 clip_to:       "item_clip";
 	 description {
 	    state:    "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_top";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -1132,12 +774,10 @@
 	    state:    "top_left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_top";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -1146,12 +786,10 @@
 	    state:    "top_right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_top";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
-	    rel2 {
-	       to: "item_clip_top";
+	    rel2 {;
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -1160,12 +798,10 @@
 	    state:    "bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -1174,12 +810,10 @@
 	    state:    "bottom_left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   2   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -19   -3;
 	    }
@@ -1188,12 +822,10 @@
 	    state:    "bottom_right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_bottom";
 	       relative: 0.0  0.0;
 	       offset:   18   2;
 	    }
 	    rel2 {
-	       to: "item_clip_bottom";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -1202,12 +834,10 @@
 	    state:    "left" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -1216,12 +846,10 @@
 	    state:    "left_top" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -1230,12 +858,10 @@
 	    state:    "left_bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_left";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_left";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -1244,12 +870,10 @@
 	    state:    "right" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -1258,12 +882,10 @@
 	    state:    "right_top" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    2;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -19;
 	    }
@@ -1272,12 +894,10 @@
 	    state:    "right_bottom" 0.0;
 	    inherit:  "default" 0.0;
 	    rel1 {
-	       to: "item_clip_right";
 	       relative: 0.0  0.0;
 	       offset:   2    18;
 	    }
 	    rel2 {
-	       to: "item_clip_right";
 	       relative: 1.0  1.0;
 	       offset:   -3   -3;
 	    }
@@ -1285,7 +905,7 @@
       }
    }
    programs {
-      program {
+    /*  program {
 	 name:    "hide";
 	 signal:  "e,state,hidden";
 	 source:  "e";
@@ -1306,7 +926,7 @@
 	 target:  "item_clip_top";
 	 target:  "item_clip_left";
 	 target:  "item_clip_right";
-      }
+      }*/
       program {
 	 name:    "orient1";
 	 signal:  "e,state,orientation,top";
@@ -1531,96 +1151,13 @@
    data {
       // this tells e the border is shaped
       item: "shaped" "1";
+      item: "hidden_state_size" "6";
    }
    parts {
-      part {
-	 name:          "item_clip_bottom";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 1.0;
-	       offset: 0 -2;
-	    }
-	    rel2 {
-	       relative: 1.0 2.0;
-	       offset: -1 -3;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_top";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 0.0 -1.0;
-	       offset: 0 2;
-	    }
-	    rel2 {
-	       relative: 1.0 0.0;
-	       offset: -1 1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_left";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: -1.0 0.0;
-	       offset: 2 0;
-	    }
-	    rel2 {
-	       relative: 0.0 1.0;
-	       offset: 1 -1;
-	    }
-	 }
-      }
-      part {
-	 name:          "item_clip_right";
-	 type:          RECT;
-	 mouse_events:  0;
-	 description {
-	    state:    "default" 0.0;
-	    color: 255 255 255 0;
-	 }
-	 description {
-	    state:    "hidden" 0.0;
-	    inherit: "default" 0.0;
-	    rel1 {
-	       relative: 1.0 0.0;
-	       offset: -2 0;
-	    }
-	    rel2 {
-	       relative: 2.0 1.0;
-	       offset: -3 -1;
-	    }
-	 }
-      }
+    
       part {
 	 name:          "e.swallow.content";
 	 type:          SWALLOW;
-//	 clip_to:       "item_clip";
 	 description {
 	    state:    "default" 0.0;
 	    rel1 {
@@ -1636,131 +1173,58 @@
 	 mouse_events:  1;
 	 type:          RECT;
 	 repeat_events: 1;
-//	 clip_to:       "item_clip";
 	 description {
 	    state:    "default" 0.0;
 	    color:    255 255 255 0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	 }
 	 description {
 	    state:    "top_left" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	 }
 	 description {
 	    state:    "top_right" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_top";
-	    }
-	    rel2 {
-	       to: "item_clip_top";
-	    }
 	 }
 	 description {
 	    state:    "bottom" 0.0;
 	    inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	 }
 	 description {
 	    state:    "bottom_left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	 }
 	 description {
 	    state:    "bottom_right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_bottom";
-	    }
-	    rel2 {
-	       to: "item_clip_bottom";
-	    }
 	 }
 	 description {
 	    state:    "left" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	 }
 	 description {
 	    state:    "left_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	 }
 	 description {
 	    state:    "left_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_left";
-	    }
-	    rel2 {
-	       to: "item_clip_left";
-	    }
 	 }
 	 description {
 	    state:    "right" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	 }
 	 description {
 	    state:    "right_top" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	 }
 	 description {
 	    state:    "right_bottom" 0.0;
             inherit:  "default" 0.0;
-	    rel1 {
-	       to: "item_clip_right";
-	    }
-	    rel2 {
-	       to: "item_clip_right";
-	    }
 	 }
       }
    }
    programs {
-      program {
+     /* program {
 	 name:    "hide";
 	 signal:  "e,state,hidden";
 	 source:  "e";
@@ -1781,7 +1245,7 @@
 	 target:  "item_clip_top";
 	 target:  "item_clip_left";
 	 target:  "item_clip_right";
-      }
+      }*/
       program {
 	 name:    "orient1";
 	 signal:  "e,state,orientation,top";
Index: e_shelf.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_shelf.c,v
retrieving revision 1.51
diff -u -r1.51 e_shelf.c
--- e_shelf.c	25 Mar 2007 22:45:00 -0000	1.51
+++ e_shelf.c	5 Apr 2007 18:38:03 -0000
@@ -134,7 +134,7 @@
    evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_UP, _e_shelf_cb_mouse_up, es);
    evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_IN, _e_shelf_cb_mouse_in, es);
    evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_OUT, _e_shelf_cb_mouse_out, es);
-   
+
    es->o_base = edje_object_add(es->evas);
    es->name = evas_stringshare_add(name);
    snprintf(buf, sizeof(buf), "e/shelf/%s/base", es->style);
@@ -165,6 +165,7 @@
    e_gadcon_min_size_request_callback_set(es->gadcon,
 					  _e_shelf_gadcon_min_size_request,
 					  es);
+
    e_gadcon_size_request_callback_set(es->gadcon,
 				      _e_shelf_gadcon_size_request,
 				      es);
@@ -187,6 +188,19 @@
    
    shelves = evas_list_append(shelves, es);
    shelves = evas_list_sort(shelves, -1, _e_shelf_cb_id_sort);
+   
+   es->hide_step = 0;
+   es->hide_timer = NULL;
+   es->hide_animator = NULL;
+  
+   const char * option;
+   option =  edje_object_data_get(es->o_base, "hidden_state_size");
+   es->hidden_state_size = 0;
+   if (option)
+     es->hidden_state_size = atoi(option);
+   else if (es->hidden_state_size < 2)
+     es->hidden_state_size = 2;
+   
    return es;
 }
 
@@ -468,6 +482,8 @@
       default:
 	break;
      }
+   es->hide_step = 0;
+   
    e_shelf_move_resize(es, es->x, es->y, es->w, es->h);
 }
 
@@ -493,6 +509,15 @@
    if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf))
      e_theme_edje_object_set(es->o_base, "base/theme/shelf", 
 			     "e/shelf/default/base");
+   
+   const char * option;
+   option =  edje_object_data_get(es->o_base, "hidden_state_size");
+   es->hidden_state_size = 0;
+   if (option)
+     es->hidden_state_size = atoi(option);
+   else if (es->hidden_state_size < 2)
+     es->hidden_state_size = 2;
+   
    e_gadcon_unpopulate(es->gadcon);
    e_gadcon_populate(es->gadcon);
 }
@@ -534,6 +559,12 @@
 	ecore_timer_del(es->hide_timer);
 	es->hide_timer = NULL;
      }
+   if (es->hide_animator)
+     {
+	ecore_timer_del(es->hide_animator);
+	es->hide_animator = NULL;
+     }
+   
    if (es->menu)
      {
 	e_menu_post_deactivate_callback_set(es->menu, NULL, NULL);
@@ -689,7 +720,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = (es->zone->h - nh) / 2;
-	nx = 0;
+	// nx = 0;
 	break;
       case E_GADCON_ORIENT_RIGHT:
 	if (!es->fit_along) nh = es->h;
@@ -697,7 +728,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = (es->zone->h - nh) / 2;
-	nx = es->zone->w - nw;
+	// nx = es->zone->w - nw;
 	break;
       case E_GADCON_ORIENT_TOP:
 	if (!es->fit_along) nw = es->w;
@@ -705,7 +736,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nw != es->w) nx = (es->zone->w - nw) / 2;
-	ny = 0;
+	// ny = 0;
 	break;
       case E_GADCON_ORIENT_BOTTOM:
 	if (!es->fit_along) nw = es->w;
@@ -713,7 +744,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nw != es->w) nx = (es->zone->w - nw) / 2;
-	ny = es->zone->h - nh;
+	//ny = es->zone->h - nh;
 	break;
       case E_GADCON_ORIENT_CORNER_TL:
 	if (!es->fit_along) nw = es->w;
@@ -721,7 +752,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nw != es->w) nx = 0;
-	ny = 0;
+	// ny = 0;
 	break;
       case E_GADCON_ORIENT_CORNER_TR:
 	if (!es->fit_along) nw = es->w;
@@ -729,7 +760,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	nx = es->zone->w - nw;
-	ny = 0;
+	// ny = 0;
 	break;
       case E_GADCON_ORIENT_CORNER_BL:
 	if (!es->fit_along) nw = es->w;
@@ -737,7 +768,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nw != es->w) nx = 0;
-	ny = es->zone->h - nh;
+	// ny = es->zone->h - nh;
 	break;
       case E_GADCON_ORIENT_CORNER_BR:
 	if (!es->fit_along) nw = es->w;
@@ -745,7 +776,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	nx = es->zone->w - nw;
-	ny = es->zone->h - nh;
+	//ny = es->zone->h - nh;
 	break;
       case E_GADCON_ORIENT_CORNER_LT:
 	if (!es->fit_along) nh = es->h;
@@ -753,7 +784,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = 0;
-	nx = 0;
+	// nx = 0;
 	break;
       case E_GADCON_ORIENT_CORNER_RT:
 	if (!es->fit_along) nh = es->h;
@@ -761,7 +792,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = 0;
-	nx = es->zone->w - nw;
+	// nx = es->zone->w - nw;
 	break;
       case E_GADCON_ORIENT_CORNER_LB:
 	if (!es->fit_along) nh = es->h;
@@ -769,7 +800,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = es->zone->h - nh;
-	nx = 0;
+	// nx = 0;
 	break;
       case E_GADCON_ORIENT_CORNER_RB:
 	if (!es->fit_along) nh = es->h;
@@ -777,7 +808,7 @@
 	if (nw > es->zone->w) nw = es->zone->w;
 	if (nh > es->zone->h) nh = es->zone->h;
 	if (nh != es->h) ny = es->zone->h - nh;
-	nx = es->zone->w - nw;
+	// nx = es->zone->w - nw;
 	break;
       default:
 	break;
@@ -966,46 +997,165 @@
    ev = event_info;
 }
 
-static void
-_e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static int _e_shelf_cb_hide_animator(void *data);
+
+static int
+_e_shelf_cb_hide_timer(void *data)
 {
-   Evas_Event_Mouse_In *ev;
    E_Shelf *es;
    
    es = data;
-   ev = event_info;
-   edje_object_signal_emit(es->o_base, "e,state,focused", "e");
-   if (es->cfg->autohide)
-     {
-	if (es->hidden)
-	  {
-	     es->hidden = 0;
-	     edje_object_signal_emit(es->o_base, "e,state,visible", "e");
-	  }
-     }
-   if (es->hide_timer)
-     {
+
+   if(!es->hide_animator)
+      es->hide_animator = ecore_timer_add(0.015, _e_shelf_cb_hide_animator, es);
+   
+   edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
+
+   if(es->hide_timer)
+     {    
 	ecore_timer_del(es->hide_timer);
 	es->hide_timer = NULL;
      }
+   return 1;
 }
 
+
 static int
-_e_shelf_cb_hide_timer(void *data)
+_e_shelf_cb_hide_animator(void *data)
 {
    E_Shelf *es;
    
    es = data;
-   if (!e_menu_grab_window_get())
-     {
-	if (!es->hidden)
-	  {
-	     edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
-	  }
-     }
-   es->hide_timer = NULL;
-   es->hidden = 1;
-   return 0;
+   
+   /* printf("hide state: %d\n", es->hide_step); */
+  
+   switch(es->gadcon->orient)
+   {
+      case E_GADCON_ORIENT_TOP:
+      case E_GADCON_ORIENT_CORNER_TL:
+      case E_GADCON_ORIENT_CORNER_TR:
+	 if(es->hidden)
+	 {
+	    if(es->hide_step < es->h - es->hidden_state_size)
+	    {
+	       e_shelf_move(es, es->x, es->y - 2);
+	       es->hide_step += 2;	       
+	    }
+	    else goto end;
+	 }
+	 else
+	 {
+	    if(es->hide_step >= 2)
+	    {
+	       e_shelf_move(es, es->x, es->y + 2);
+	       es->hide_step -= 2;	       
+	    }
+	    else goto end;
+	 }
+	 break;
+      case E_GADCON_ORIENT_BOTTOM:
+      case E_GADCON_ORIENT_CORNER_BL:
+      case E_GADCON_ORIENT_CORNER_BR:
+	 if(es->hidden)
+	 {
+	    if(es->hide_step < es->h - es->hidden_state_size )
+	    {
+	       e_shelf_move(es, es->x, es->y + 2);
+	       es->hide_step += 2;	       
+	    }
+	    else goto end;
+	 }
+	 else
+	 {
+	    if(es->hide_step >= 2)
+	    {
+	       e_shelf_move(es, es->x, es->y - 2);
+	       es->hide_step -= 2;	       
+	    }
+	    else goto end;
+	 }
+ 
+	 break;
+      case E_GADCON_ORIENT_LEFT:
+      case E_GADCON_ORIENT_CORNER_LB:
+      case E_GADCON_ORIENT_CORNER_LT:
+	 if(es->hidden)
+	 {
+	    if(es->hide_step < es->w - es->hidden_state_size)
+	    {
+	       e_shelf_move(es, es->x - 2, es->y);
+	       es->hide_step += 2;	       
+	    }
+	    else goto end;
+	 }
+	 else
+	 {
+	    if(es->hide_step >= 2)
+	    {
+	       e_shelf_move(es, es->x + 2, es->y);
+	       es->hide_step -= 2;	       
+	    }
+	    else goto end;
+	 }
+ 
+	 break; 
+      case E_GADCON_ORIENT_RIGHT:
+      case E_GADCON_ORIENT_CORNER_RB:
+      case E_GADCON_ORIENT_CORNER_RT:
+	 if(es->hidden)
+	 {
+	    if(es->hide_step < es->w - es->hidden_state_size)
+	    {
+	       e_shelf_move(es, es->x + 2, es->y);
+	       es->hide_step += 2;	       
+	    }
+	    else goto end;
+	 }
+	 else
+	 {
+	    if(es->hide_step >= 2)
+	    {
+	       e_shelf_move(es, es->x - 2, es->y);
+	       es->hide_step -= 2;	       
+	    }
+	    else goto end;
+	 }
+	 break; 
+      default:
+	 break;
+   }
+   return 1;
+
+  end:
+   ecore_timer_del(es->hide_animator);
+   es->hide_animator = NULL;
+   return 1;
+}
+
+
+static void
+_e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_In *ev;
+   E_Shelf *es;
+   
+   es = data;
+   ev = event_info;
+   edje_object_signal_emit(es->o_base, "e,state,focused", "e");
+   if (es->cfg->autohide)
+   {
+      if (es->hidden) 
+      {  
+	 es->hidden = 0;
+	 if(!es->hide_animator)
+	    es->hide_animator = ecore_timer_add(0.015, _e_shelf_cb_hide_animator, es);
+	 if(es->hide_timer)
+	 {    
+	    ecore_timer_del(es->hide_timer);
+	    es->hide_timer = NULL;
+	 }
+      }
+   }
 }
 
 static void
@@ -1017,16 +1167,20 @@
    es = data;
    ev = event_info;
    if (es->cfg->autohide)
-     {
-	Evas_Coord x, y, w, h;
+   {
+      Evas_Coord x, y, w, h;
 	
-	evas_object_geometry_get(es->o_base, &x, &y, &w, &h);
-	if (!E_INSIDE(ev->canvas.x, ev->canvas.y, x, y, w, h))
-	  {
-	     if (es->hide_timer) ecore_timer_del(es->hide_timer);
-	     es->hide_timer = ecore_timer_add(0.25, _e_shelf_cb_hide_timer, es);
-	  }
-     }
+      evas_object_geometry_get(es->o_base, &x, &y, &w, &h);
+      if (!E_INSIDE(ev->canvas.x, ev->canvas.y, x, y, w, h))
+      {
+	 if(!es->hidden)
+	 {	
+	    es->hidden = 1; 
+	    if(!es->hide_timer)
+	       es->hide_timer = ecore_timer_add(1.0, _e_shelf_cb_hide_timer, es);
+	 }
+      }	
+   }
    edje_object_signal_emit(es->o_base, "e,state,unfocused", "e");
 }
 
Index: e_shelf.h
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_shelf.h,v
retrieving revision 1.17
diff -u -r1.17 e_shelf.h
--- e_shelf.h	2 Mar 2007 17:00:20 -0000	1.17
+++ e_shelf.h	5 Apr 2007 18:38:03 -0000
@@ -28,12 +28,15 @@
    const char          *style;
    E_Config_Shelf      *cfg;
    unsigned char        fit_along : 1;
-   unsigned char        fit_size : 1;
-   unsigned char        hidden : 1;
+   unsigned char        fit_size  : 1;
+   unsigned char        hidden    : 1;
    int                  size;
    E_Config_Dialog     *config_dialog;
    E_Menu              *menu;
    Ecore_Timer         *hide_timer;
+   Ecore_Timer         *hide_animator;
+   int                  hide_step;
+   int                  hidden_state_size;
 };
 
 EAPI int              e_shelf_init(void);
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to