Use the e_fm2 single_click_delay option in illume's e_fm2 to allow to
configure, from the launcher settings, a click delay to prevent
un-wanted clicks.
I've added a slider to configure the delay from the settings (also if it
has some issues, check the code comments and let me know if should be
redesigned). The default value is set to 120 ms, but it works great too
for lower values.
--
Treviño's World - Life and Linux
http://www.3v1n0.net/
>From 7b4ed34a4d0ea7576d5b54ef580b30e16f802444 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Trevi=C3=B1o=20-=203v1n0?= <[email protected]>
Date: Tue, 9 Jun 2009 01:33:33 +0200
Subject: [PATCH 2/2] Add press delay support to illume
Use the e_fm2 single_click_delay option in illume e_fm2 to allow to
configure from the launcher settings a click delay to prevent
un-wanted clicks
---
src/modules/illume/e_cfg.c | 58 +++++++++++++++++++++++++++++++++++++++-
src/modules/illume/e_cfg.h | 1 +
src/modules/illume/e_mod_win.c | 1 +
3 files changed, 59 insertions(+), 1 deletions(-)
diff --git a/src/modules/illume/e_cfg.c b/src/modules/illume/e_cfg.c
index 7ae6213..3b52918 100644
--- a/src/modules/illume/e_cfg.c
+++ b/src/modules/illume/e_cfg.c
@@ -42,6 +42,7 @@ e_cfg_init(E_Module *m)
E_CONFIG_VAL(conf_edd, Illume_Cfg, launcher.mode, INT);
E_CONFIG_VAL(conf_edd, Illume_Cfg, launcher.icon_size, INT);
E_CONFIG_VAL(conf_edd, Illume_Cfg, launcher.single_click, INT);
+ E_CONFIG_VAL(conf_edd, Illume_Cfg, launcher.single_click_delay, INT);
E_CONFIG_VAL(conf_edd, Illume_Cfg, power.auto_suspend, INT);
E_CONFIG_VAL(conf_edd, Illume_Cfg, power.auto_suspend_delay, INT);
@@ -80,6 +81,7 @@ e_cfg_init(E_Module *m)
illume_cfg->launcher.mode = 0;
illume_cfg->launcher.icon_size = 120;
illume_cfg->launcher.single_click = 1;
+ illume_cfg->launcher.single_click_delay = 150;
illume_cfg->power.auto_suspend = 1;
illume_cfg->power.auto_suspend_delay = 1;
@@ -170,6 +172,14 @@ _e_cfg_launcher_change(void *data, Evas_Object *obj, void *event_info) {
_e_cfg_launcher_change_timer = ecore_timer_add(0.5, _e_cfg_launcher_change_timeout, data);
}
+Evas_Object *delay_label, *delay_slider;
+static void
+_e_cfg_launcher_click_change(void *data, Evas_Object *obj, void *event_info) {
+ e_widget_disabled_set(delay_label, !illume_cfg->launcher.single_click);
+ e_widget_disabled_set(delay_slider, !illume_cfg->launcher.single_click);
+ _e_cfg_launcher_change(data, obj, event_info);
+}
+
static void *
_e_cfg_launcher_create(E_Config_Dialog *cfd)
{ // alloc cfd->cfdata
@@ -179,6 +189,7 @@ _e_cfg_launcher_create(E_Config_Dialog *cfd)
static void
_e_cfg_launcher_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ // free cfd->cfdata
+ _e_mod_win_cfg_update(); // Reload on exit (to apply the slider value)
}
static Evas_Object *
@@ -221,7 +232,16 @@ _e_cfg_launcher_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata)
frame = e_widget_framelist_add(e, "Launch Action", 0);
o = e_widget_check_add(e, "Single press", &(illume_cfg->launcher.single_click));
e_widget_framelist_object_append(frame, o);
- evas_object_smart_callback_add(o, "changed", _e_cfg_launcher_change, NULL);
+ evas_object_smart_callback_add(o, "changed", _e_cfg_launcher_click_change, NULL);
+ o = e_widget_label_add(e, "Press delay:");
+ delay_label = o;
+ e_widget_disabled_set(o, !illume_cfg->launcher.single_click);
+ e_widget_framelist_object_append(frame, o);
+ o = e_widget_slider_add(e, 1, 0, "%1.0f ms", 0, 350, 1, 0, NULL, &(illume_cfg->launcher.single_click_delay), 150);
+ delay_slider = o;
+ //evas_object_smart_callback_add(o, "changed", _e_cfg_launcher_change, NULL); //works ??
+ e_widget_disabled_set(o, !illume_cfg->launcher.single_click);
+ e_widget_framelist_object_append(frame, o);
e_widget_list_object_append(list, frame, 1, 0, 0.0); // fill, expand, align
return list;
@@ -1374,6 +1394,40 @@ _dbcb_launcher_single_click_set(E_DBus_Object *obj, DBusMessage *msg)
return reply;
}
+// illume_cfg->launcher.single_click_delay
+static DBusMessage *
+_dbcb_launcher_single_click_delay_get(E_DBus_Object *obj, DBusMessage *msg)
+{
+ DBusMessage *reply;
+ DBusMessageIter iter;
+
+ reply = dbus_message_new_method_return(msg);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &(illume_cfg->launcher.single_click_delay));
+ return reply;
+}
+
+static DBusMessage *
+_dbcb_launcher_single_click_delay_set(E_DBus_Object *obj, DBusMessage *msg)
+{
+ DBusMessageIter iter;
+ DBusMessage *reply;
+ int val;
+
+ dbus_message_iter_init(msg, &iter);
+ dbus_message_iter_get_basic(&iter, &(val));
+ if (val >= 0)
+ {
+ illume_cfg->launcher.single_click_delay = val;
+ _e_cfg_launcher_change(NULL, NULL, NULL);
+ return dbus_message_new_method_return(msg);
+ }
+ reply = dbus_message_new_error(msg,
+ "org.enlightenment.DBus.InvalidArgument",
+ "Parameter must be greater than 0");
+ return reply;
+}
+
// e_config->screensaver_timeout 0(off)-3600
static DBusMessage *
_dbcb_screensaver_timeout_get(E_DBus_Object *obj, DBusMessage *msg)
@@ -1967,6 +2021,8 @@ static const DB_Method methods[] =
{"LauncherIconSizeSet", "i", "", _dbcb_launcher_icon_size_set},
{"LauncherSingleClickGet", "", "i", _dbcb_launcher_single_click_get},
{"LauncherSingleClickSet", "i", "", _dbcb_launcher_single_click_set},
+ {"LauncherSingleClickDelayGet", "", "i", _dbcb_launcher_single_click_delay_get},
+ {"LauncherSingleClickDelaySet", "i", "", _dbcb_launcher_single_click_delay_set},
{"ScreensaverTimeoutGet", "", "i", _dbcb_screensaver_timeout_get},
{"ScreensaverTimeoutSet", "i", "", _dbcb_screensaver_timeout_set},
{"AutosuspendTimeoutGet", "", "i", _dbcb_autosuspend_timeout_get},
diff --git a/src/modules/illume/e_cfg.h b/src/modules/illume/e_cfg.h
index 4350ca0..e3b2080 100644
--- a/src/modules/illume/e_cfg.h
+++ b/src/modules/illume/e_cfg.h
@@ -14,6 +14,7 @@ struct _Illume_Cfg
int mode;
int icon_size;
int single_click;
+ int single_click_delay;
} launcher;
struct {
diff --git a/src/modules/illume/e_mod_win.c b/src/modules/illume/e_mod_win.c
index ec873ec..40fa13d 100644
--- a/src/modules/illume/e_mod_win.c
+++ b/src/modules/illume/e_mod_win.c
@@ -992,6 +992,7 @@ _apps_fm_config(Evas_Object *o)
fmc.view.open_dirs_in_place = 1;
fmc.view.selector = 0;
fmc.view.single_click = illume_cfg->launcher.single_click;
+ fmc.view.single_click_delay = illume_cfg->launcher.single_click_delay;
fmc.view.no_subdir_jump = 1;
fmc.icon.extension.show = 0;
fmc.icon.icon.w = illume_cfg->launcher.icon_size * e_scale / 2.0;
--
1.6.3.rc0
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel