de-uglify desklock gfx - make it ask for your passowrd if you havent set one

up (config dialog instead of lock) and make it a menu item for obvious access
:)


SVN revision: 20808
This commit is contained in:
Carsten Haitzler 2006-02-27 06:35:56 +00:00
parent 6491c0bad9
commit 62ca6a2cbc
5 changed files with 512 additions and 415 deletions

View File

@ -1,213 +1,210 @@
images {
image, "e17_entry_cursor.png" COMP;
image, "e17_brushed.png" COMP;
image, "e17_logo.png" COMP;
image, "e17_gadman_overlay.png" COMP;
image: "e17_brushed.png" COMP;
image: "e17_"SM"reflection_shadow_overlay.png" LOSSY 90;
image: "e17_entry_cursor.png" COMP;
image: "e17_logo.png" COMP;
image: "e17_gadman_overlay.png" COMP;
}
group
{
name, "widgets/desklock/main";
min, 640 480;
parts
{
part
{
name, "background";
type, IMAGE;
mouse_events, 0;
description
{
state, "default" 0.0;
rel1
{
relative, 0.0 0.0;
offset, 0 0;
}
rel2
{
relative, 1.0 1.0;
offset, -1 -1;
}
image
{
normal, "e17_brushed.png";
}
group {
name, "widgets/desklock/main";
parts
{
part {
name: "background_image";
description {
state: "default" 0.0;
image {
normal: "e17_brushed.png";
}
fill {
size {
relative: 0 0;
offset: 400 300;
}
}
}
}
}
part
{
name: "logo";
mouse_events, 0;
description
{
state, "default" 0.0;
min, 64 64;
max, 64 64;
//align, 0.5 0.0;
rel1
{
relative, 0.45 0.5;
offset, 0 0;
}
rel2
{
relative, 0.45 0.5;
offset, 0 0;
}
image
{
normal, "e17_logo.png";
}
part {
name: "reflection_shadow_overlay";
description {
state: "default" 0.0;
image {
normal: "e17_"SM"reflection_shadow_overlay.png";
}
}
}
}
part
{
name: "text_label1";
type: TEXT;
effect: SHADOW;
description {
state: "default" 0.0;
color: 0 0 0 255;
fixed: 0 1;
align: 0.0 0.5;
rel1
part
{
relative, 1.0 0.0;
offset, 20 0;
to, "logo";
name: "logo";
mouse_events: 0;
description
{
state: "default" 0.0;
min: 64 64;
max: 64 64;
//align: 0.5 0.0;
rel1
{
relative: 0.45 0.5;
offset: 0 0;
}
rel2
{
relative: 0.45 0.5;
offset: 0 0;
}
image
{
normal: "e17_logo.png";
}
}
}
rel2
part
{
relative, 1.0 0.3;
offset, 0 0;
to, "logo";
name: "label";
type: TEXT;
effect: SHADOW;
description {
state: "default" 0.0;
color: 0 0 0 255;
fixed: 0 1;
align: 0.0 0.5;
rel1
{
relative: 1.0 0.0;
offset: 20 0;
to: "logo";
}
rel2
{
relative: 1.0 0.3;
offset: 0 0;
to: "logo";
}
color: 0 0 0 255;
color3: 255 255 255 128;
text {
text: "Please enter your unlock password";
font: "Edje-Vera-Bold";
size: 10;
align: 0.0 0.5;
min: 1 1;
}
}
}
color: 0 0 0 255;
color3: 255 255 255 128;
text {
text: "Please enter your password to unlock:";
font: "Edje-Vera-Bold";
size: 10;
align: 0.0 0.5;
min: 1 1;
}
}
}
part
{
name, "passwd_border";
mouse_events, 0;
description
{
state, "default" 0.0;
rel1
part
{
relative, 1.0 0.3;
offset, 0 0;
to, "logo";
name: "passwd_entry_clip";
type: RECT;
mouse_events: 0;
description
{
state: "default" 0.0;
visible: 1;
rel1
{
relative: 0.0 0.0;
offset: 10 10;
to: "passwd_border";
}
rel2
{
relative: 1.0 1.0;
offset: -17 -10;
to: "passwd_border";
}
}
}
rel2
part
{
relative, 5.0 0.9;
offset, 0 0;
to, "logo";
name: "passwd";
type: TEXT;
effect: SHADOW;
clip_to: "passwd_entry_clip";
description {
state: "default" 0.0;
color: 0 0 0 255;
fixed: 0 1;
align: 0.0 0.5;
rel1
{
relative: 0.0 0.0;
offset: 0 0;
to: "passwd_entry_clip";
}
rel2
{
relative: 0.0 1.0;
offset: 0 0;
to: "passwd_entry_clip";
}
color: 0 0 0 255;
color3: 255 255 255 128;
text {
text: "****";
font: "Edje-Vera-Bold";
size: 16;
align: 0.0 0.5;
min: 1 1;
text_class: "desklock_passwd";
}
}
}
image
part
{
normal, "e17_gadman_overlay.png";
name: "cursor";
mouse_events: 0;
clip_to: "passwd_entry_clip";
description {
state: "default" 0.0;
min: 16 16;
max: 16 16;
align: 0.0 0.5;
fixed: 1 1;
rel1 {
relative: 1.0 0.0;
offset: 0 -2;
to: "passwd";
}
rel2 {
relative: 1.0 0.9;
offset: 0 0;
to: "passwd";
}
image {
normal: "e17_entry_cursor.png";
}
}
}
}
}
part
{
name, "passwd_entry_clip";
type, RECT;
mouse_events, 0;
description
{
state, "default" 0.0;
visible, 1;
rel1
part
{
relative, 0.0 0.0;
offset, 10 10;
to, "passwd_border";
name: "passwd_border";
mouse_events: 0;
description
{
state: "default" 0.0;
rel1
{
relative: 1.0 0.3;
offset: 0 0;
to: "logo";
}
rel2
{
relative: 5.0 0.9;
offset: 0 0;
to: "logo";
}
image
{
normal: "e17_gadman_overlay.png";
border: 15 15 15 15;
}
}
}
rel2
{
relative, 1.0 1.0;
offset, -17 -10;
to, "passwd_border";
}
}
}
part
{
name, "passwd";
type, TEXT;
effect, SOFT_SHADOW;
clip_to, "passwd_entry_clip";
description {
state: "default" 0.0;
color: 0 0 0 255;
fixed: 0 1;
align: 0.0 0.5;
rel1
{
relative, 0.0 0.0;
offset, 0 0;
to, "passwd_entry_clip";
}
rel2
{
relative, 0.0 1.0;
offset, 0 0;
to, "passwd_entry_clip";
}
color: 0 0 0 255;
color3: 255 255 255 128;
text {
text: "****";
font: "Edje-Vera-Bold";
size: 16;
align: 0.0 0.5;
min: 1 1;
text_class: "desklock_passwd";
}
}
}
part
{
name, "cursor";
mouse_events, 0;
clip_to, "passwd_entry_clip";
description {
state: "default" 0.0;
min: 16 16;
max: 16 16;
align: 0.0 0.5;
fixed: 1 1;
rel1 {
relative: 1.0 0.0;
offset: 0 -2;
to: "passwd";
}
rel2 {
relative: 1.0 0.9;
offset: 0 0;
to: "passwd";
}
image {
normal: "e17_entry_cursor.png";
}
}
}
}
}
}
}

View File

@ -86,5 +86,56 @@ group {
}
}
}
part {
name: "drag";
mouse_events: 1;
type: RECT;
description {
state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
}
rel2 {
relative: 1.0 0.0;
offset: -3 5;
}
color: 255 0 0 100;
}
}
part {
name: "resize_l";
mouse_events: 1;
type: RECT;
description {
state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 6;
}
rel2 {
relative: 0.0 1.0;
offset: 5 -7;
}
color: 0 0 255 100;
}
}
part {
name: "resize_r";
mouse_events: 1;
type: RECT;
description {
state: "default" 0.0;
rel1 {
relative: 1.0 0.0;
offset: -6 6;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -7;
}
color: 0 0 255 100;
}
}
}
}

View File

@ -1,27 +1,24 @@
#include "e.h"
#define ELOCK_POPUP_LAYER 10000
#define PASSWD_LEN 256
/**************************** private data ******************************/
typedef struct _E_Desklock_Data E_Desklock_Data;
typedef struct _E_Desklock_Popup_Data E_Desklock_Popup_Data;
struct _E_Desklock_Popup_Data
{
E_Popup *popup_wnd;
Evas_Object *bg_object;
E_Popup *popup_wnd;
Evas_Object *bg_object;
};
struct _E_Desklock_Data
{
Evas_List *elock_wnd_list;
Ecore_X_Window elock_wnd;
Evas_List *handlers;
char passwd[PASSWD_LEN];
Evas_List *elock_wnd_list;
Ecore_X_Window elock_wnd;
Evas_List *handlers;
char passwd[PASSWD_LEN];
};
static E_Desklock_Data *edd = NULL;
@ -41,211 +38,228 @@ static void _e_desklock_delete();
EAPI int
e_desklock_show(void)
{
Evas_List *managers, *l, *l2, *l3;
//E_Zone *zone = NULL;
int m = 0, c = 0, z = 0;
Evas_List *managers, *l, *l2, *l3;
int m = 0, c = 0, z = 0;
E_Desklock_Popup_Data *edp;
E_Desklock_Popup_Data *edp;
if (!edd)
{
edd = E_NEW(E_Desklock_Data, 1);
if (!edd) return 0;
edd->elock_wnd_list = NULL;
edd->elock_wnd = 0;
edd->handlers = NULL;
edd->passwd[0] = 0;
}
managers = e_manager_list();
for (l = managers; l; l = l->next)
{
E_Manager *man;
m ++;
man = l->data;
for (l2 = man->containers; l2; l2 = l2->next)
{
E_Container *con;
c ++;
con = l2->data;
for (l3 = con->zones; l3; l3 = l3->next)
{
E_Zone *zone;
zone = l3->data;
if (!edd->elock_wnd)
{
edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
ecore_x_window_show(edd->elock_wnd);
e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd);
}
edp = E_NEW(E_Desklock_Popup_Data, 1);
if (edp)
{
edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h);
evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000,
ecore_x_current_time_get(), NULL);
e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER);
evas_event_freeze(edp->popup_wnd->evas);
edp->bg_object = edje_object_add(edp->popup_wnd->evas);
//FIXME: This should come from config file
e_theme_edje_object_set(edp->bg_object, "base/theme/desklock",
"widgets/desklock/main");
evas_object_move(edp->bg_object, 0, 0);
evas_object_resize(edp->bg_object, zone->w, zone->h);
evas_object_show(edp->bg_object);
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
evas_event_thaw(edp->popup_wnd->evas);
e_popup_show(edp->popup_wnd);
edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp);
}
}
}
}
/* handlers */
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN,
_e_desklock_cb_key_down, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
_e_desklock_cb_mouse_down, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP,
_e_desklock_cb_mouse_up, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL,
_e_desklock_cb_mouse_wheel,
NULL));
//elock_wnd_idler = ecore_idler_add(_e_desklock_idler, NULL);
_e_desklock_passwd_update();
return 1;
if (!e_config->desklock_personal_passwd)
{
E_Zone *zone;
zone = e_util_zone_current_get(e_manager_current_get());
if (zone)
{
E_Config_Dialog *cfd;
cfd = e_int_config_desklock(zone->container);
}
return 0;
}
if (!edd)
{
edd = E_NEW(E_Desklock_Data, 1);
if (!edd) return 0;
edd->elock_wnd_list = NULL;
edd->elock_wnd = 0;
edd->handlers = NULL;
edd->passwd[0] = 0;
}
managers = e_manager_list();
for (l = managers; l; l = l->next)
{
E_Manager *man;
m++;
man = l->data;
for (l2 = man->containers; l2; l2 = l2->next)
{
E_Container *con;
c++;
con = l2->data;
for (l3 = con->zones; l3; l3 = l3->next)
{
E_Zone *zone;
zone = l3->data;
if (!edd->elock_wnd)
{
edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
ecore_x_window_show(edd->elock_wnd);
e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd);
}
edp = E_NEW(E_Desklock_Popup_Data, 1);
if (edp)
{
edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h);
evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000,
ecore_x_current_time_get(), NULL);
e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER);
evas_event_freeze(edp->popup_wnd->evas);
edp->bg_object = edje_object_add(edp->popup_wnd->evas);
//FIXME: This should come from config file
e_theme_edje_object_set(edp->bg_object,
"base/theme/desklock",
"widgets/desklock/main");
evas_object_move(edp->bg_object, 0, 0);
evas_object_resize(edp->bg_object, zone->w, zone->h);
evas_object_show(edp->bg_object);
edje_object_part_text_set(edp->bg_object, "title",
_("Please enter your unlock password"));
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
evas_event_thaw(edp->popup_wnd->evas);
e_popup_show(edp->popup_wnd);
edd->elock_wnd_list = evas_list_append(edd->elock_wnd_list, edp);
}
}
}
}
/* handlers */
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN,
_e_desklock_cb_key_down, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
_e_desklock_cb_mouse_down, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP,
_e_desklock_cb_mouse_up, NULL));
edd->handlers = evas_list_append(edd->handlers,
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL,
_e_desklock_cb_mouse_wheel,
NULL));
//elock_wnd_idler = ecore_idler_add(_e_desklock_idler, NULL);
_e_desklock_passwd_update();
return 1;
}
EAPI void
e_desklock_hide(void)
{
E_Desklock_Popup_Data *edp;
if (!edd) return;
while (edd->elock_wnd_list)
{
edp = edd->elock_wnd_list->data;
if (edp)
{
e_popup_hide(edp->popup_wnd);
evas_event_freeze(edp->popup_wnd->evas);
evas_object_del(edp->bg_object);
evas_event_thaw(edp->popup_wnd->evas);
e_object_del(E_OBJECT(edp->popup_wnd));
E_FREE(edp);
}
edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list);
}
while (edd->handlers)
{
ecore_event_handler_del(edd->handlers->data);
edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers);
}
e_grabinput_release(edd->elock_wnd, edd->elock_wnd);
ecore_x_window_del(edd->elock_wnd);
E_FREE(edd);
edd = NULL;
E_Desklock_Popup_Data *edp;
if (!edd) return;
while (edd->elock_wnd_list)
{
edp = edd->elock_wnd_list->data;
if (edp)
{
e_popup_hide(edp->popup_wnd);
evas_event_freeze(edp->popup_wnd->evas);
evas_object_del(edp->bg_object);
evas_event_thaw(edp->popup_wnd->evas);
e_object_del(E_OBJECT(edp->popup_wnd));
E_FREE(edp);
}
edd->elock_wnd_list = evas_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list);
}
while (edd->handlers)
{
ecore_event_handler_del(edd->handlers->data);
edd->handlers = evas_list_remove_list(edd->handlers, edd->handlers);
}
e_grabinput_release(edd->elock_wnd, edd->elock_wnd);
ecore_x_window_del(edd->elock_wnd);
E_FREE(edd);
edd = NULL;
}
static int
_e_desklock_cb_key_down(void *data, int type, void *event)
{
Ecore_X_Event_Key_Down *ev;
ev = event;
if (ev->win != edd->elock_wnd) return 1;
if (!strcmp(ev->keysymbol, "Escape"))
Ecore_X_Event_Key_Down *ev;
ev = event;
if (ev->win != edd->elock_wnd) return 1;
if (!strcmp(ev->keysymbol, "Escape"))
;
else if (!strcmp(ev->keysymbol, "KP_Enter"))
{
// here we have to go to auth
if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0)
{
e_desklock_hide();
return 1;
}
else
; // report about invalid password
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
_e_desklock_passwd_update();
}
else if (!strcmp(ev->keysymbol, "Return"))
{
// here we have to go to auth
if (strcmp(edd->passwd, e_config->desklock_personal_passwd) == 0)
{
e_desklock_hide();
return 1;
}
else
; // report about invalid password
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
_e_desklock_passwd_update();
}
else if (!strcmp(ev->keysymbol, "BackSpace"))
_e_desklock_backspace();
else if (!strcmp(ev->keysymbol, "Delete"))
_e_desklock_delete();
else
{
// here we have to grab a password
if (ev->key_compose)
{
if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose))))
{
strcat(edd->passwd, ev->key_compose);
_e_desklock_passwd_update();
}
}
}
return 1;
else if (!strcmp(ev->keysymbol, "KP_Enter"))
{
// here we have to go to auth
if (!strcmp(edd->passwd, e_config->desklock_personal_passwd))
{
e_desklock_hide();
return 1;
}
else
; // report about invalid password
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
_e_desklock_passwd_update();
}
else if (!strcmp(ev->keysymbol, "Return"))
{
// here we have to go to auth
if ((e_config->desklock_personal_passwd) &&
(!strcmp(edd->passwd, e_config->desklock_personal_passwd)))
{
e_desklock_hide();
return 1;
}
else
; // report about invalid password
memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN);
_e_desklock_passwd_update();
}
else if (!strcmp(ev->keysymbol, "BackSpace"))
_e_desklock_backspace();
else if (!strcmp(ev->keysymbol, "Delete"))
_e_desklock_delete();
else
{
// here we have to grab a password
if (ev->key_compose)
{
if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->key_compose))))
{
strcat(edd->passwd, ev->key_compose);
_e_desklock_passwd_update();
}
}
}
return 1;
}
static int
_e_desklock_cb_mouse_down(void *data, int type, void *event)
{
return 1;
return 1;
}
static int
_e_desklock_cb_mouse_up(void *data, int type, void *event)
{
return 1;
return 1;
}
static int
_e_desklock_cb_mouse_wheel(void *data, int type, void *event)
{
return 1;
return 1;
}
static int
_e_desklock_idler(void *data)
{
return 1;
return 1;
}
EAPI int
@ -261,38 +275,37 @@ e_desklock_init(void)
//#undef T
//#undef D
return 1;
return 1;
}
EAPI int
e_desklock_shutdown(void)
{
e_desklock_hide();
return 1;
e_desklock_hide();
return 1;
}
static void
_e_desklock_passwd_update()
{
int ii;
char passwd_hidden[PASSWD_LEN * 3]="";
E_Desklock_Popup_Data *edp;
Evas_List *l;
if (!edd) return;
for (ii = 0; ii < strlen(edd->passwd); ii ++)
{
passwd_hidden[ii] = '*';
passwd_hidden[ii+1] = 0;
}
for (l = edd->elock_wnd_list; l; l = l->next)
{
edp = l->data;
edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden);
}
return;
int ii;
char passwd_hidden[PASSWD_LEN * 3]="";
E_Desklock_Popup_Data *edp;
Evas_List *l;
if (!edd) return;
for (ii = 0; ii < strlen(edd->passwd); ii ++)
{
passwd_hidden[ii] = '*';
passwd_hidden[ii+1] = 0;
}
for (l = edd->elock_wnd_list; l; l = l->next)
{
edp = l->data;
edje_object_part_text_set(edp->bg_object, "passwd", passwd_hidden);
}
}
static void
@ -301,18 +314,19 @@ _e_desklock_backspace()
int len, val, pos;
if (!edd) return;
len = strlen(edd->passwd);
if (len > 0)
{
pos = evas_string_char_prev_get(edd->passwd, len, &val);
if ((pos < len) && (pos >= 0))
{
edd->passwd[pos] = 0;
_e_desklock_passwd_update();
}
}
len = strlen(edd->passwd);
if (len > 0)
{
pos = evas_string_char_prev_get(edd->passwd, len, &val);
if ((pos < len) && (pos >= 0))
{
edd->passwd[pos] = 0;
_e_desklock_passwd_update();
}
}
}
static void
_e_desklock_delete()
{

View File

@ -25,6 +25,8 @@ static void _e_int_menus_main_del_hook (void *obj);
static void _e_int_menus_main_about (void *data, E_Menu *m, E_Menu_Item *mi);
static int _e_int_menus_main_run_defer_cb (void *data);
static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi);
static int _e_int_menus_main_lock_defer_cb (void *data);
static void _e_int_menus_main_lock (void *data, E_Menu *m, E_Menu_Item*mi);
static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_int_menus_apps_scan (E_Menu *m);
@ -401,6 +403,22 @@ _e_int_menus_main_run(void *data, E_Menu *m, E_Menu_Item *mi)
ecore_idle_enterer_add(_e_int_menus_main_run_defer_cb, m->zone);
}
/* FIXME: this is a workaround for menus' haveing a key grab ANd exebuf
* wanting one too
*/
static int
_e_int_menus_main_lock_defer_cb(void *data)
{
e_desklock_show();
return 0;
}
static void
_e_int_menus_main_lock(void *data, E_Menu *m, E_Menu_Item *mi)
{
ecore_idle_enterer_add(_e_int_menus_main_lock_defer_cb, m->zone);
}
static void
_e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi)
{
@ -540,6 +558,15 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
E_Menu *root;
e_menu_pre_activate_callback_set(m, NULL, NULL);
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Lock Screen"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/lock");
e_menu_item_callback_set(mi, _e_int_menus_main_lock, NULL);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
root = e_menu_root_get(m);
if ((root) && (root->zone))
{

View File

@ -9,6 +9,13 @@ static void _e_shelf_config_port(E_Config_Shelf_Config *cf1, E_Config_Shelf_Conf
static Evas_List *shelves = NULL;
static int shelf_id = 0;
/* FIXME: shelves need to do this:
* 1. allow them to be moved, resized etc. etc.
* 2. have a configuration panel per shelf to select if its inline, layer etc.
* 3. catch all right clicks not on modules for right click context menu
* 4. a global config dialog that lists shelves u have to configure them
*/
/* externally accessible functions */
EAPI int
e_shelf_init(void)
@ -131,7 +138,8 @@ e_shelf_zone_new(E_Zone *zone, char *name, char *style, int popup, int layer)
snprintf(buf, sizeof(buf), "shelf/%s/base", es->style);
evas_object_resize(es->o_base, es->w, es->h);
if (!e_theme_edje_object_set(es->o_base, "base/theme/shelf", buf))
e_theme_edje_object_set(es->o_base, "base/theme/shelf", "shelf/default/base");
e_theme_edje_object_set(es->o_base, "base/theme/shelf",
"shelf/default/base");
if (es->popup)
{
evas_object_show(es->o_base);