diff --git a/data/themes/default_desklock.edc b/data/themes/default_desklock.edc index 9d16cfcac..359abc1a6 100644 --- a/data/themes/default_desklock.edc +++ b/data/themes/default_desklock.edc @@ -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"; - } - } - } - } - } + } +} diff --git a/data/themes/default_shelf.edc b/data/themes/default_shelf.edc index 8ec48ebf2..46cd6b5fb 100644 --- a/data/themes/default_shelf.edc +++ b/data/themes/default_shelf.edc @@ -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; + } + } } } diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c index d36976e18..e007da306 100644 --- a/src/bin/e_desklock.c +++ b/src/bin/e_desklock.c @@ -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() { diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index ec15e92a2..58a0169ac 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -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)) { diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index 0b1337a6d..0919d0f7a 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -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);