Hello,
I thought that having the hability to automagically hide the shelves
would be nice.
Here are some patches for E and its defaut theme that enable a per-shelf
auto-hide option.
Any comments / criticisms are welcome
Regards
Albin Tonnerre (Lutin)
--- e17/apps/e/data/themes/default_shelf.edc 2006-09-01 21:31:32.000000000 +0200
+++ a17/apps/enlightenment-0.17/data/themes/default_shelf.edc 2007-02-01 01:19:37.000000000 +0100
@@ -17,6 +17,7 @@
part {
name: "base";
mouse_events: 0;
+ clip_to: "item_clip";
description {
state: "default" 0.0;
image {
@@ -184,9 +185,23 @@
}
}
part {
+ name: "item_clip";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hidden" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+ part {
name: "e.swallow.content";
mouse_events: 0;
type: SWALLOW;
+ clip_to: "item_clip";
description {
state: "default" 0.0;
rel1 {
@@ -323,6 +338,22 @@
}
programs {
program {
+ name: "hide";
+ signal: "e,state,hidden";
+ source: "e";
+ action: STATE_SET "hidden" 0.0;
+ transition: LINEAR 0.3;
+ target: "item_clip";
+ }
+ program {
+ name: "show";
+ signal: "e,state,visible";
+ source: "e";
+ transition: LINEAR 0.3;
+ action: STATE_SET "default" 0.0;
+ target: "item_clip";
+ }
+ program {
name: "orient1";
signal: "e,state,orientation,top";
source: "e";
@@ -563,6 +594,7 @@
part {
name: "base";
mouse_events: 0;
+ clip_to: "item_clip";
description {
state: "default" 0.0;
image {
@@ -730,9 +762,23 @@
}
}
part {
+ name: "item_clip";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hidden" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+ part {
name: "e.swallow.content";
mouse_events: 0;
type: SWALLOW;
+ clip_to: "item_clip";
description {
state: "default" 0.0;
rel1 {
@@ -869,6 +915,23 @@
}
programs {
program {
+ name: "hide";
+ signal: "e,state,hidden";
+ source: "e";
+ action: STATE_SET "hidden" 0.0;
+ transition: LINEAR 0.3;
+ target: "item_clip";
+ }
+ program {
+ name: "show";
+ signal: "e,state,visible";
+ source: "e";
+ transition: LINEAR 0.3;
+ action: STATE_SET "default" 0.0;
+
+ target: "item_clip";
+ }
+ program {
name: "orient1";
signal: "e,state,orientation,top";
source: "e";
@@ -1097,14 +1160,46 @@
}
parts {
part {
+ name: "item_clip";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hidden" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+ part {
name: "e.swallow.content";
mouse_events: 0;
type: SWALLOW;
+ clip_to: "item_clip";
description {
state: "default" 0.0;
}
}
}
+ programs {
+ program {
+ name: "hide";
+ signal: "e,state,hidden";
+ source: "e";
+ action: STATE_SET "hidden" 0.0;
+ transition: LINEAR 0.3;
+ target: "item_clip";
+ }
+ program {
+ name: "show";
+ signal: "e,state,visible";
+ source: "e";
+ transition: LINEAR 0.3;
+ action: STATE_SET "default" 0.0;
+ target: "item_clip";
+ }
+ }
}
group {
--- e17/apps/e/src/bin/e_config.c 2007-01-08 00:45:35.000000000 +0100
+++ e17/apps/enlightenment-0.17/src/bin/e_config.c 2007-01-31 21:16:58.000000000 +0100
@@ -121,6 +121,7 @@
E_CONFIG_VAL(D, T, style, STR);
E_CONFIG_VAL(D, T, size, INT);
E_CONFIG_VAL(D, T, overlap, INT);
+ E_CONFIG_VAL(D, T, autohide, INT);
_e_config_desktop_bg_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Background", E_Config_Desktop_Background);
#undef T
@@ -1119,7 +1120,7 @@
{
E_Config_Shelf *cf_es;
-#define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, _style, _size, _overlap) \
+#define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, _style, _size, _overlap, _autohide) \
cf_es = E_NEW(E_Config_Shelf, 1); \
cf_es->name = evas_stringshare_add(_name); \
cf_es->container = _con; \
@@ -1132,30 +1133,31 @@
cf_es->style = evas_stringshare_add(_style); \
cf_es->size = _size; \
cf_es->overlap = _overlap; \
+ cf_es->autohide = _autohide; \
e_config->shelves = evas_list_append(e_config->shelves, cf_es)
/* shelves for 4 zones on head 0 by default */
CFG_SHELF("shelf", 0, 0,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
CFG_SHELF("shelf", 0, 1,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
CFG_SHELF("shelf", 0, 2,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
CFG_SHELF("shelf", 0, 3,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
/* shelves for heada 1, 2, and 3 by default */
CFG_SHELF("shelf", 1, 0,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
CFG_SHELF("shelf", 2, 0,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
CFG_SHELF("shelf", 3, 0,
1, 200, E_GADCON_ORIENT_BOTTOM,
- 1, 0, "default", 40, 0);
+ 1, 0, "default", 40, 0, 0);
}
IFCFGEND;
--- e17/apps/e/src/bin/e_config.h 2007-01-08 00:45:35.000000000 +0100
+++ e17/apps/enlightenment-0.17/src/bin/e_config.h 2007-01-31 20:22:19.000000000 +0100
@@ -371,6 +371,7 @@
const char *style;
int size;
int overlap;
+ int autohide;
};
struct _E_Config_Mime_Icon
--- e17/apps/e/src/bin/e_int_config_shelf.c 2006-12-14 16:40:19.000000000 +0100
+++ e17/apps/enlightenment-0.17/src/bin/e_int_config_shelf.c 2007-01-31 21:07:40.000000000 +0100
@@ -236,6 +236,7 @@
cfg->style = evas_stringshare_add("default");
cfg->size = 40;
cfg->overlap = 0;
+ cfg->autohide = 0;
e_config->shelves = evas_list_append(e_config->shelves, cfg);
e_config_save_queue();
--- e17/apps/e/src/bin/e_int_shelf_config.c 2006-10-15 23:30:06.000000000 +0200
+++ e17/apps/enlightenment-0.17/src/bin/e_int_shelf_config.c 2007-01-31 23:53:18.000000000 +0100
@@ -35,6 +35,7 @@
int size;
int layering;
int overlapping;
+ int autohiding;
};
/* a nice easy setup function that does the dirty work */
@@ -115,6 +116,7 @@
cfdata->fit_size = cfdata->escfg->fit_size;
cfdata->size = cfdata->escfg->size;
cfdata->overlapping = cfdata->escfg->overlap;
+ cfdata->autohiding = cfdata->escfg->autohide;
if (cfdata->size <= 24)
cfdata->basic_size = 24;
else if (cfdata->size <= 32)
@@ -335,6 +337,12 @@
}
cfdata->escfg->overlap = cfdata->overlapping;
+ cfdata->escfg->autohide = cfdata->autohiding;
+ if ( cfdata->escfg->autohide == 1 )
+ {
+ edje_object_signal_emit(cfdata->es->o_base, "e,state,hidden", "e");
+ }
+ else edje_object_signal_emit(cfdata->es->o_base, "e,state,visible", "e");
if (restart)
{
@@ -446,6 +454,8 @@
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Allow windows to overlap the shelf"), &(cfdata->overlapping));
e_widget_framelist_object_append(of, ob);
+ ob = e_widget_check_add(evas, _("Auto-hide the shelf"), &(cfdata->autohiding));
+ e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o2, of, 1, 1, 0.5);
of = e_widget_frametable_add(evas, _("Layout"), 1);
--- e17/apps/e/src/bin/e_shelf.c 2006-12-28 15:13:15.000000000 +0100
+++ e17/apps/enlightenment-0.17/src/bin/e_shelf.c 2007-01-31 22:11:29.000000000 +0100
@@ -319,6 +319,7 @@
cf_es->fit_along = es->fit_along;
cf_es->fit_size = es->fit_size;
cf_es->overlap = 0;
+ cf_es->autohide = 0;
es->cfg = cf_es;
}
e_config_save_queue();
@@ -967,6 +968,10 @@
es = data;
ev = event_info;
edje_object_signal_emit(es->o_base, "e,state,focused", "e");
+ if (es->cfg->autohide ==1 )
+ {
+ edje_object_signal_emit(es->o_base, "e,state,visible", "e");
+ }
}
static void
@@ -977,6 +982,19 @@
es = data;
ev = event_info;
+ if (es->cfg->autohide ==1 )
+ {
+ int cx, cy;
+ evas_pointer_canvas_xy_get(es->evas, &cx, &cy);
+ int x = es->x;
+ int y = es->y;
+ int w = es->w;
+ int h = es->h;
+ if( cx <= x || cx >= x+w || cy <= y || cy >= y+h )
+ {
+ edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
+ }
+ }
edje_object_signal_emit(es->o_base, "e,state,unfocused", "e");
}
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel