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