Hi,
attached a little patch which delays the password input after the
screensaver timeout locks your screen. I found it helpful when I didn't
create any input event awhile and the timed out screensaver force me to
enter my password while sitting in front of the computer.
The patch only applies correctly after applying the "desklock config
dialog fix" I send before.
Bye,
Thomas
--
Stark, Thomas <[EMAIL PROTECTED]>
diff -Nur cvs/e17/apps/e/src/bin/e_config.c build/e17/apps/e/src/bin/e_config.c
--- cvs/e17/apps/e/src/bin/e_config.c 2007-03-17 10:27:15.000000000 +0100
+++ build/e17/apps/e/src/bin/e_config.c 2007-03-17 12:19:46.000000000 +0100
@@ -483,6 +483,7 @@
E_CONFIG_VAL(D, T, desklock_autolock_screensaver, INT);
E_CONFIG_VAL(D, T, desklock_autolock_idle, INT);
E_CONFIG_VAL(D, T, desklock_autolock_idle_timeout, DOUBLE);
+ E_CONFIG_VAL(D, T, desklock_softlock_timeout, DOUBLE);
E_CONFIG_VAL(D, T, desklock_use_custom_desklock, INT);
E_CONFIG_VAL(D, T, desklock_custom_desklock_cmd, STR);
E_CONFIG_VAL(D, T, display_res_restore, INT);
@@ -1342,6 +1343,10 @@
e_config->clientlist_include_all_zones = 0;
IFCFGEND;
+ IFCFG(0x0112);
+ e_config->desklock_softlock_timeout = 0;
+ IFCFGEND;
+
e_config->config_version = E_CONFIG_FILE_VERSION;
#if 0 /* example of new config */
@@ -1429,6 +1434,7 @@
E_CONFIG_LIMIT(e_config->desklock_autolock_screensaver, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_autolock_idle, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_autolock_idle_timeout, 1.0, 5400.0);
+ E_CONFIG_LIMIT(e_config->desklock_softlock_timeout, 0, 60);
E_CONFIG_LIMIT(e_config->desklock_use_custom_desklock, 0, 1);
E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1);
E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192);
diff -Nur cvs/e17/apps/e/src/bin/e_config.h build/e17/apps/e/src/bin/e_config.h
--- cvs/e17/apps/e/src/bin/e_config.h 2007-03-17 10:27:15.000000000 +0100
+++ build/e17/apps/e/src/bin/e_config.h 2007-03-17 12:19:46.000000000 +0100
@@ -52,7 +52,7 @@
/* increment this whenever a new set of config values are added but the users
* config doesn't need to be wiped - simply new values need to be put in
*/
-#define E_CONFIG_FILE_GENERATION 0x0111
+#define E_CONFIG_FILE_GENERATION 0x0112
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0
@@ -230,6 +230,7 @@
int desklock_autolock_screensaver; // GUI
int desklock_autolock_idle; // GUI
double desklock_autolock_idle_timeout; // GUI
+ double desklock_softlock_timeout; // GUI
int desklock_use_custom_desklock; //GUI
const char *desklock_custom_desklock_cmd; // GUI
diff -Nur cvs/e17/apps/e/src/bin/e_desklock.c build/e17/apps/e/src/bin/e_desklock.c
--- cvs/e17/apps/e/src/bin/e_desklock.c 2007-03-17 10:27:15.000000000 +0100
+++ build/e17/apps/e/src/bin/e_desklock.c 2007-03-17 12:27:15.000000000 +0100
@@ -55,7 +55,9 @@
static Ecore_Exe *_e_custom_desklock_exe = NULL;
static Ecore_Event_Handler *_e_custom_desklock_exe_handler = NULL;
static Ecore_Timer *_e_desklock_idle_timer = NULL;
+static Ecore_Timer *_e_desklock_softlock_timer = NULL;
static int _e_desklock_user_idle = 0;
+static int _e_desklock_softlock_enabled = 0;
/***********************************************************************/
@@ -66,6 +68,7 @@
static int _e_desklock_cb_mouse_move(void *data, int type, void *event);
static int _e_desklock_cb_custom_desklock_exit(void *data, int type, void *event);
static int _e_desklock_cb_idle_timer(void *data);
+static int _e_desklock_cb_softlock_timer(void *data);
static void _e_desklock_passwd_update();
static void _e_desklock_backspace();
@@ -98,6 +101,17 @@
EAPI int
e_desklock_shutdown(void)
{
+ if (_e_desklock_idle_timer)
+ {
+ ecore_timer_del(_e_desklock_idle_timer);
+ _e_desklock_idle_timer = NULL;
+ }
+ if (_e_desklock_softlock_timer)
+ {
+ ecore_timer_del(_e_desklock_softlock_timer);
+ _e_desklock_softlock_timer = NULL;
+ }
+
e_desklock_hide();
if (e_config->desklock_background)
e_filereg_deregister(e_config->desklock_background);
@@ -106,6 +120,26 @@
}
EAPI int
+e_desklock_softlock_show(void)
+{
+ if (_e_desklock_softlock_timer)
+ {
+ ecore_timer_del(_e_desklock_softlock_timer);
+ _e_desklock_softlock_timer = NULL;
+ }
+
+ if (e_config->desklock_softlock_timeout > 0)
+ {
+ _e_desklock_softlock_timer = ecore_timer_add(e_config->desklock_softlock_timeout, _e_desklock_cb_softlock_timer, NULL);
+ _e_desklock_softlock_enabled = 1;
+ }
+ else
+ _e_desklock_softlock_enabled = 0;
+
+ return e_desklock_show();
+}
+
+EAPI int
e_desklock_show(void)
{
Evas_List *managers, *l, *l2, *l3;
@@ -347,6 +381,8 @@
{
E_Desklock_Popup_Data *edp;
+ _e_desklock_softlock_enabled = 0;
+
if ((!edd) && (!_e_custom_desklock_exe)) return;
if (e_config->desklock_use_custom_desklock)
@@ -397,6 +433,17 @@
ev = event;
if (ev->win != edd->elock_wnd) return 1;
+ if (_e_desklock_softlock_enabled)
+ {
+ if (_e_desklock_softlock_timer)
+ {
+ ecore_timer_del(_e_desklock_softlock_timer);
+ _e_desklock_softlock_timer = NULL;
+ }
+ e_desklock_hide();
+ return 1;
+ }
+
if (!strcmp(ev->keysymbol, "Escape"))
;
else if (!strcmp(ev->keysymbol, "KP_Enter"))
@@ -834,3 +881,11 @@
/* Make sure our timer persists. */
return 1;
}
+
+static int
+_e_desklock_cb_softlock_timer(void *data)
+{
+ _e_desklock_softlock_enabled = 0;
+
+ return 1;
+}
diff -Nur cvs/e17/apps/e/src/bin/e_desklock.h build/e17/apps/e/src/bin/e_desklock.h
--- cvs/e17/apps/e/src/bin/e_desklock.h 2006-04-18 05:14:29.000000000 +0200
+++ build/e17/apps/e/src/bin/e_desklock.h 2007-03-17 12:19:46.000000000 +0100
@@ -7,6 +7,7 @@
EAPI int e_desklock_shutdown(void);
EAPI int e_desklock_show(void);
+EAPI int e_desklock_softlock_show(void);
EAPI void e_desklock_hide(void);
#endif
diff -Nur cvs/e17/apps/e/src/bin/e_int_config_desklock.c build/e17/apps/e/src/bin/e_int_config_desklock.c
--- cvs/e17/apps/e/src/bin/e_int_config_desklock.c 2007-03-17 12:23:07.000000000 +0100
+++ build/e17/apps/e/src/bin/e_int_config_desklock.c 2007-03-17 12:20:40.000000000 +0100
@@ -45,6 +45,7 @@
char *bg;
int custom_lock;
char *custom_lock_cmd;
+ double softlock_time;
int login_zone;
int zone;
};
@@ -104,6 +105,7 @@
cfdata->screensaver_lock = e_config->desklock_autolock_screensaver;
cfdata->auto_lock = e_config->desklock_autolock_idle;
cfdata->idle_time = e_config->desklock_autolock_idle_timeout / 60;
+ cfdata->softlock_time = e_config->desklock_softlock_timeout;
if (e_config->desklock_login_box_zone >= 0)
{
cfdata->login_zone = 0;
@@ -156,6 +158,12 @@
ow = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
&(cfdata->idle_time), NULL, 100);
e_widget_framelist_object_append(of, ow);
+ ow = e_widget_label_add(evas, _("Prompt for password when time exceeded"));
+ e_widget_disabled_set(ow, !cfdata->use_xscreensaver);
+ e_widget_framelist_object_append(of, ow);
+ ow = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), 0.0, 60.0, 1.0, 0,
+ &(cfdata->softlock_time), NULL, 100);
+ e_widget_framelist_object_append(of, ow);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
}
@@ -166,6 +174,7 @@
e_config->desklock_autolock_screensaver = cfdata->screensaver_lock;
e_config->desklock_autolock_idle = cfdata->auto_lock;
e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60;
+ e_config->desklock_softlock_timeout = cfdata->softlock_time;
e_config_save_queue();
return 1;
}
@@ -342,6 +351,7 @@
e_config->desklock_autolock_screensaver = cfdata->screensaver_lock;
e_config->desklock_autolock_idle = cfdata->auto_lock;
e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60;
+ e_config->desklock_softlock_timeout = cfdata->softlock_time;
if (cfdata->bg)
{
diff -Nur cvs/e17/apps/e/src/bin/e_manager.c build/e17/apps/e/src/bin/e_manager.c
--- cvs/e17/apps/e/src/bin/e_manager.c 2007-02-13 22:14:47.000000000 +0100
+++ build/e17/apps/e/src/bin/e_manager.c 2007-03-17 12:19:46.000000000 +0100
@@ -755,7 +755,7 @@
if (e->on)
{
if (e_config->desklock_autolock_screensaver)
- e_desklock_show();
+ e_desklock_softlock_show();
}
return 1;
}
-------------------------------------------------------------------------
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