diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c index 64915873c..a3fcc8509 100644 --- a/src/bin/e_desklock.c +++ b/src/bin/e_desklock.c @@ -141,7 +141,8 @@ _user_wallpaper_get(void) EAPI int e_desklock_show_autolocked(void) { - _e_desklock_autolock_time = ecore_loop_time_get(); + if (_e_desklock_autolock_time < 1.0) + _e_desklock_autolock_time = ecore_loop_time_get(); return e_desklock_show(); } @@ -927,7 +928,7 @@ _e_desklock_cb_idle_poller(void *data) idle = ecore_x_screensaver_idle_time_get(); max = e_config->desklock_autolock_idle_timeout; if (_e_desklock_ask_presentation_count > 0) - max *= _e_desklock_ask_presentation_count; + max *= (1 + _e_desklock_ask_presentation_count); /* If we have exceeded our idle time... */ if (idle >= max) @@ -1003,6 +1004,18 @@ _e_desklock_ask_presentation_no_forever(void *data __UNUSED__, E_Dialog *dia) _e_desklock_ask_presentation_count = 0; } +static void +_e_desklock_ask_presentation_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event) +{ + Evas_Event_Key_Down *ev = event; + E_Dialog *dia = data; + + if (strcmp(ev->keyname, "Return") == 0) + _e_desklock_ask_presentation_yes(NULL, dia); + else if (strcmp(ev->keyname, "Escape") == 0) + _e_desklock_ask_presentation_no(NULL, dia); +} + static void _e_desklock_ask_presentation_mode(void) { @@ -1048,5 +1061,9 @@ _e_desklock_ask_presentation_mode(void) e_win_centered_set(dia->win, 1); e_dialog_show(dia); + evas_object_event_callback_add + (dia->bg_object, EVAS_CALLBACK_KEY_DOWN, + _e_desklock_ask_presentation_key_down, dia); + _e_desklock_ask_presentation_dia = dia; } diff --git a/src/bin/e_screensaver.c b/src/bin/e_screensaver.c index fa3d4ba53..4d241bc5d 100644 --- a/src/bin/e_screensaver.c +++ b/src/bin/e_screensaver.c @@ -45,7 +45,7 @@ _e_screensaver_ask_presentation_no_increase(void *data __UNUSED__, E_Dialog *dia int timeout, interval, blanking, expose; _e_screensaver_ask_presentation_count++; - timeout = e_config->screensaver_timeout * _e_screensaver_ask_presentation_count; + timeout = e_config->screensaver_timeout * (1 + _e_screensaver_ask_presentation_count); interval = e_config->screensaver_interval; blanking = e_config->screensaver_blanking; expose = e_config->screensaver_expose; @@ -63,6 +63,18 @@ _e_screensaver_ask_presentation_no_forever(void *data __UNUSED__, E_Dialog *dia) _e_screensaver_ask_presentation_count = 0; } +static void +_e_screensaver_ask_presentation_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event) +{ + Evas_Event_Key_Down *ev = event; + E_Dialog *dia = data; + + if (strcmp(ev->keyname, "Return") == 0) + _e_screensaver_ask_presentation_yes(NULL, dia); + else if (strcmp(ev->keyname, "Escape") == 0) + _e_screensaver_ask_presentation_no(NULL, dia); +} + static void _e_screensaver_ask_presentation_mode(void) { @@ -108,6 +120,10 @@ _e_screensaver_ask_presentation_mode(void) e_win_centered_set(dia->win, 1); e_dialog_show(dia); + evas_object_event_callback_add + (dia->bg_object, EVAS_CALLBACK_KEY_DOWN, + _e_screensaver_ask_presentation_key_down, dia); + _e_screensaver_ask_presentation_dia = dia; }