Hello all! Been a long time, so here are some patches :) - evas-configure-xcb_image_version_requirement.patch: check for xcb-image at least version 0.2.1 - e-scrollframe-correct_thumbscroll.patch: corrects thumbscroll so that scrollbars can be used correctly even if thumbscroll is activated, useful on portable device when we activate thumbscroll but still want to use scrollbars with stylus; works great with laptops' touchpads - e-config-thumbscroll_default.patch: activate thumbscroll by default :) - e-config-dpms_correct.patch: correct default values for DPMS timeouts - ecore-x-pointer_mapping_support.patch: add support for modifying pointer button mapping - e-config-pointer_mapping_support.patch: and actually use that on Enlightenment
Cheers! Chidambar "ilLogict" Zinnoury
Index: trunk/evas/configure.in
===================================================================
--- trunk/evas/configure.in (revision 35759)
+++ trunk/evas/configure.in (working copy)
@@ -389,7 +389,7 @@
if test "x$want_evas_software_xcb" = "xyes"; then
PKG_CHECK_MODULES(
XCB,
- xcb xcb-shm xcb-image pixman-1,
+ xcb xcb-shm xcb-image >= 0.2.1 pixman-1,
[
AC_DEFINE(BUILD_ENGINE_SOFTWARE_XCB, 1, [Software XCB Rendering Backend])
have_evas_software_xcb="yes"
@@ -452,7 +452,7 @@
],
[
if test "x$want_evas_sdl" = "xyes" -a "x$use_strict" = "xyes" ; then
- AC_MSG_ERROR([Sdl not found (strict dependencies checking)])
+ AC_MSG_ERROR([SDL not found (strict dependencies checking)])
fi
]
)
@@ -729,7 +729,7 @@
if test "x$want_evas_xrender_xcb" = "xyes"; then
PKG_CHECK_MODULES(
XCBRENDER,
- xcb xcb-shm xcb-render xcb-image,
+ xcb xcb-shm xcb-render xcb-image >= 0.2.1,
[
AC_DEFINE(BUILD_ENGINE_XRENDER_XCB, 1, [Xrender XCB Rendering Backend])
have_evas_xrender_xcb="yes"
Index: trunk/e/src/bin/e_scrollframe.c
===================================================================
--- trunk/e/src/bin/e_scrollframe.c (revision 35759)
+++ trunk/e/src/bin/e_scrollframe.c (working copy)
@@ -603,22 +603,23 @@
evas_event_feed_hold(e, 1, ev->timestamp, ev->data);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
sd->down.dragged = 1;
- }
- x = sd->down.sx - (ev->cur.canvas.x - sd->down.x);
- y = sd->down.sy - (ev->cur.canvas.y - sd->down.y);
- if ((sd->down.dir_x) || (sd->down.dir_y))
- {
- if (!sd->down.locked)
+ x = sd->down.sx - (ev->cur.canvas.x - sd->down.x);
+ y = sd->down.sy - (ev->cur.canvas.y - sd->down.y);
+ if ((sd->down.dir_x) || (sd->down.dir_y))
{
- printf("lock dir to x%iy%i\n", sd->down.dir_x, sd->down.dir_y);
- sd->down.locked_x = x;
- sd->down.locked_y = y;
- sd->down.locked = 1;
+ if (!sd->down.locked)
+ {
+ printf("lock dir to x%iy%i\n", sd->down.dir_x,
+ sd->down.dir_y);
+ sd->down.locked_x = x;
+ sd->down.locked_y = y;
+ sd->down.locked = 1;
+ }
+ if (sd->down.dir_x) y = sd->down.locked_y;
+ else x = sd->down.locked_x;
}
- if (sd->down.dir_x) y = sd->down.locked_y;
- else x = sd->down.locked_x;
+ e_scrollframe_child_pos_set(sd->smart_obj, x, y);
}
- e_scrollframe_child_pos_set(sd->smart_obj, x, y);
}
}
}
@@ -676,6 +677,8 @@
x = vx * (double)mx;
y = vy * (double)my;
sd->pan_func.set(sd->pan_obj, x, y);
+ if ((e_config->thumbscroll_enable) && (sd->down.now) && (!sd->down.dragged))
+ sd->down.now = 0;
}
static void
Index: trunk/e/src/bin/e_config.c
===================================================================
--- trunk/e/src/bin/e_config.c (revision 35759)
+++ trunk/e/src/bin/e_config.c (working copy)
@@ -1525,9 +1525,13 @@
IFCFGEND;
IFCFG(0x0124);
- e_config->thumbscroll_enable = 0;
+ e_config->thumbscroll_enable = 1;
e_config->thumbscroll_threshhold = 8;
e_config->thumbscroll_momentum_threshhold = 100.0;
e_config->thumbscroll_friction = 1.0;
Index: trunk/e/config/default/e.src
===================================================================
--- trunk/e/config/default/e.src (revision 35759)
+++ trunk/e/config/default/e.src (working copy)
@@ -1974,7 +1974,7 @@
value "menu_apps_show" int: 1;
value "ping_clients_interval" int: 128;
value "cache_flush_poll_interval" int: 512;
- value "thumbscroll_enable" int: 0;
+ value "thumbscroll_enable" int: 1;
value "thumbscroll_threshhold" int: 8;
value "thumbscroll_momentum_threshhold" double: 100.0;
value "thumbscroll_friction" double: 1.0;
Index: trunk/e/src/bin/e_config.c
===================================================================
--- trunk/e/src/bin/e_config.c (revision 35759)
+++ trunk/e/src/bin/e_config.c (working copy)
@@ -1456,9 +1456,9 @@
e_config->dpms_standby_enable = 0;
e_config->dpms_suspend_enable = 0;
e_config->dpms_off_enable = 0;
- e_config->dpms_standby_timeout = 0;
- e_config->dpms_suspend_timeout = 0;
- e_config->dpms_off_timeout = 0;
+ e_config->dpms_standby_timeout = 1;
+ e_config->dpms_suspend_timeout = 1;
+ e_config->dpms_off_timeout = 1;
e_config->screensaver_enable = 0;
e_config->screensaver_timeout = 0;
e_config->screensaver_interval = 5;
Index: trunk/e/config/default/e.src
===================================================================
--- trunk/e/config/default/e.src (revision 35759)
+++ trunk/e/config/default/e.src (working copy)
@@ -1890,9 +1890,9 @@
value "dpms_standby_enable" int: 0;
value "dpms_suspend_enable" int: 0;
value "dpms_off_enable" int: 0;
- value "dpms_standby_timeout" int: 0;
- value "dpms_suspend_timeout" int: 0;
- value "dpms_off_timeout" int: 0;
+ value "dpms_standby_timeout" int: 1;
+ value "dpms_suspend_timeout" int: 1;
+ value "dpms_off_timeout" int: 1;
value "clientlist_group_by" int: 0;
value "clientlist_include_all_zones" int: 0;
value "clientlist_separate_with" int: 0;
Index: trunk/ecore/src/lib/ecore_x/Ecore_X.h
===================================================================
--- trunk/ecore/src/lib/ecore_x/Ecore_X.h (revision 35759)
+++ trunk/ecore/src/lib/ecore_x/Ecore_X.h (working copy)
@@ -1577,6 +1577,10 @@
EAPI void ecore_x_pointer_control_get_prefetch(void);
EAPI void ecore_x_pointer_control_get_fetch(void);
EAPI int ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold);
+EAPI int ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
+EAPI void ecore_x_pointer_mapping_get_prefetch(void);
+EAPI void ecore_x_pointer_mapping_get_fetch(void);
+EAPI int ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
EAPI int ecore_x_pointer_grab(Ecore_X_Window win);
EAPI int ecore_x_pointer_confine_grab(Ecore_X_Window win);
EAPI void ecore_x_pointer_ungrab(void);
Index: trunk/ecore/src/lib/ecore_x/xcb/ecore_xcb.c
===================================================================
--- trunk/ecore/src/lib/ecore_x/xcb/ecore_xcb.c (revision 35759)
+++ trunk/ecore/src/lib/ecore_x/xcb/ecore_xcb.c (working copy)
@@ -1267,6 +1267,56 @@
}
EAPI int
+ecore_x_pointer_mapping_set(unsigned char *map,
+ int nmap)
+{
+ xcb_set_pointer_mapping(_ecore_xcb_conn, nmap, map);
+ return 1;
+}
+
+EAPI void
+ecore_x_pointer_mapping_get_prefetch(void)
+{
+ xcb_get_pointer_mapping_cookie_t cookie;
+
+ cookie = xcb_get_pointer_mapping_unchecked(_ecore_xcb_conn);
+ _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+EAPI void
+ecore_x_pointer_mapping_get_fetch(void)
+{
+ xcb_get_pointer_mapping_cookie_t cookie;
+ xcb_get_pointer_mapping_reply_t *reply;
+
+ cookie.sequence = _ecore_xcb_cookie_get();
+ reply = xcb_get_pointer_mapping_reply(_ecore_xcb_conn, cookie, NULL);
+ _ecore_xcb_reply_cache(reply);
+}
+
+EAPI int
+ecore_x_pointer_mapping_get(unsigned char *map,
+ int nmap)
+{
+ xcb_get_pointer_mapping_reply_t *reply;
+ int i;
+ uint8_t tmp;
+
+ reply = _ecore_xcb_reply_get();
+ if (!reply) return 0;
+
+ if (nmap > xcb_get_pointer_mapping_map_length(reply))
+ return 0;
+
+ tmp = xcb_get_pointer_mapping_map(reply);
+
+ for (i = 0; i < nmap; i++)
+ map[i] = tmp[i];
+
+ return 1;
+}
+
+EAPI int
ecore_x_pointer_grab(Ecore_X_Window window)
{
xcb_grab_pointer_cookie_t cookie;
Index: trunk/ecore/src/lib/ecore_x/xlib/ecore_x.c
===================================================================
--- trunk/ecore/src/lib/ecore_x/xlib/ecore_x.c (revision 35759)
+++ trunk/ecore/src/lib/ecore_x/xlib/ecore_x.c (working copy)
@@ -1013,7 +1013,6 @@
accel_num, accel_denom, threshold);
}
-
EAPI int
ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold)
{
@@ -1022,6 +1021,18 @@
}
EAPI int
+ecore_x_pointer_mapping_set(unsigned char *map, int nmap)
+{
+ return XSetPointerMapping(_ecore_x_disp, map, nmap);
+}
+
+EAPI int
+ecore_x_pointer_mapping_get(unsigned char *map, int nmap)
+{
+ return XGetPointerMapping(_ecore_x_disp, map, nmap);
+}
+
+EAPI int
ecore_x_pointer_grab(Ecore_X_Window win)
{
if (XGrabPointer(_ecore_x_disp, win, False,
Index: trunk/e/src/bin/e_config.h
===================================================================
--- trunk/e/src/bin/e_config.h (revision 35759)
+++ trunk/e/src/bin/e_config.h (working copy)
@@ -33,7 +33,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 0x0124
+#define E_CONFIG_FILE_GENERATION 0x0125
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0
@@ -243,6 +243,7 @@
int clientlist_limit_caption_len; // GUI
int clientlist_max_caption_len; // GUI
+ int mouse_hand; //GUI
int mouse_accel_numerator; // GUI
int mouse_accel_denominator; // GUI
int mouse_accel_threshold; // GUI
Index: trunk/e/src/bin/e_config.c
===================================================================
--- trunk/e/src/bin/e_config.c (revision 35759)
+++ trunk/e/src/bin/e_config.c (working copy)
@@ -570,6 +570,7 @@
E_CONFIG_VAL(D, T, clientlist_limit_caption_len, INT);
E_CONFIG_VAL(D, T, clientlist_max_caption_len, INT);
+ E_CONFIG_VAL(D, T, mouse_hand, INT);
E_CONFIG_VAL(D, T, mouse_accel_numerator, INT);
E_CONFIG_VAL(D, T, mouse_accel_denominator, INT);
E_CONFIG_VAL(D, T, mouse_accel_threshold, INT);
@@ -1531,6 +1532,10 @@
e_config->thumbscroll_friction = 1.0;
IFCFGEND;
+ IFCFG(0x0125);
+ e_config->mouse_hand = E_MOUSE_HAND_RIGHT;
+ IFCFGEND;
+
e_config->config_version = E_CONFIG_FILE_VERSION;
#if 0 /* example of new config */
@@ -1653,6 +1658,7 @@
E_CONFIG_LIMIT(e_config->clientlist_sort_by, 0, 3);
E_CONFIG_LIMIT(e_config->clientlist_separate_iconified_apps, 0, 2);
E_CONFIG_LIMIT(e_config->clientlist_warp_to_iconified_desktop, 0, 1);
+ E_CONFIG_LIMIT(e_config->mouse_hand, 0, 1);
E_CONFIG_LIMIT(e_config->clientlist_limit_caption_len, 0, 1);
E_CONFIG_LIMIT(e_config->clientlist_max_caption_len, 2, E_CLIENTLIST_MAX_CAPTION_LEN);
Index: trunk/e/src/bin/e_mouse.h
===================================================================
--- trunk/e/src/bin/e_mouse.h (revision 35759)
+++ trunk/e/src/bin/e_mouse.h (working copy)
@@ -1,4 +1,11 @@
#ifdef E_TYPEDEFS
+
+typedef enum _E_Mouse_Hand
+{
+ E_MOUSE_HAND_LEFT,
+ E_MOUSE_HAND_RIGHT
+} E_Mouse_Hand;
+
#else
#ifndef E_MOUSE_H
#define E_MOUSE_H
Index: e/trunk/e/src/bin/e_mouse.c
===================================================================
--- e/trunk/e/src/bin/e_mouse.c (revision 35759)
+++ e/trunk/e/src/bin/e_mouse.c (working copy)
@@ -6,10 +6,23 @@
EAPI int
e_mouse_init(void)
{
+ unsigned char map[256];
+ int n;
+
if (!ecore_x_pointer_control_set(e_config->mouse_accel_numerator,
- e_config->mouse_accel_denominator,
- e_config->mouse_accel_threshold))
- return 0;
-
+ e_config->mouse_accel_denominator,
+ e_config->mouse_accel_threshold))
+ return 0;
+
+ if (!(n = ecore_x_pointer_mapping_get(map, 256))) return 0;
+
+ if (((e_config->mouse_hand == E_MOUSE_HAND_LEFT) && (map[2] != 1)) ||
+ ((e_config->mouse_hand == E_MOUSE_HAND_RIGHT) && (map[0] != 1)))
+ {
+ const unsigned char tmp = map[0];
+ map[0] = map[2]; map[2] = tmp;
+ if (ecore_x_pointer_mapping_set(map, n)) return 0;
+ }
+
return 1;
}
Index: trunk/e/src/modules/conf_mouse/module.desktop.in
===================================================================
--- trunk/e/src/modules/conf_mouse/module.desktop.in (revision 35759)
+++ trunk/e/src/modules/conf_mouse/module.desktop.in (working copy)
@@ -1,25 +1,25 @@
[Desktop Entry]
Type=Link
-Name=Configuration - Mouse Acceleration
+Name=Configuration - Mouse Settings
Name[de]=
-Name[eo]=Agordo - Musa plirapidigo
-Name[es]=Configuración - Aceleración del mouse
-Name[fr]=
-Name[hu]=BeállÃtások - Egér sebessége
-Name[it]=Configurazione - Accelerazione mouse
+Name[eo]=
+Name[es]=
+Name[fr]=Configuration - Paramètres de la souris
+Name[hu]=
+Name[it]=
Name[ja]=
Name[pt]=
Name[pt_BR]=
Name[zh_CN]=
Name[zh_TW]=
Icon=e-module-conf_mouse
-Comment=<hilight>E17 Configuration Applet</hilight><br><br>Configure mouse cursor acceleration.
+Comment=<hilight>E17 Configuration Applet</hilight><br><br>Configure mouse settings.
Comment[de]=
-Comment[eo]=<hilight>Aplikaĵeto de E17 agordo<hilight><br><br>Agordi la musan plirapidigon.
-Comment[es]=<hilight>Applet de configuración de E17</hilight><br><br>Configure la aceleración del cursor del mouse.
-Comment[fr]=
-Comment[hu]=<hilight>E17 beállÃtó alkalmazás</hilight><br><br>Egér kurzor sebességének beállÃtása.
-Comment[it]=<hilight>Applet configurazione di E17</hilight><br><br>Configura l'accelerazione del puntatore del mouse.
+Comment[eo]=
+Comment[es]=
+Comment[fr]=<hilight>Applet de configuration de E17</hilight><br><br>Permet de configurer les paramètres du curseur de la souris.
+Comment[hu]=
+Comment[it]=
Comment[ja]=
Comment[pt]=
Comment[pt_BR]=
Index: trunk/e/src/modules/conf_mouse/e_mod_main.c
===================================================================
--- trunk/e/src/modules/conf_mouse/e_mod_main.c (revision 35759)
+++ trunk/e/src/modules/conf_mouse/e_mod_main.c (working copy)
@@ -25,14 +25,14 @@
EAPI E_Module_Api e_modapi =
{
E_MODULE_API_VERSION,
- "Configuration - Mouse Acceleration"
+ "Configuration - Mouse Settings"
};
EAPI void *
e_modapi_init(E_Module *m)
{
e_configure_registry_category_add("keyboard_and_mouse", 40, _("Keyboard & Mouse"), NULL, "enlightenment/behavior");
- e_configure_registry_item_add("keyboard_and_mouse/mouse_acceleration", 30, _("Mouse Acceleration"), NULL, "enlightenment/mouse_clean", e_int_config_mouse);
+ e_configure_registry_item_add("keyboard_and_mouse/mouse_settings", 30, _("Mouse Settings"), NULL, "enlightenment/mouse_clean", e_int_config_mouse);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
Index: trunk/e/src/modules/conf_mouse/e_int_config_mouse.c
===================================================================
--- trunk/e/src/modules/conf_mouse/e_int_config_mouse.c (revision 35759)
+++ trunk/e/src/modules/conf_mouse/e_int_config_mouse.c (working copy)
@@ -10,6 +10,7 @@
{
E_Config_Dialog *cfd;
+ int mouse_hand;
double numerator;
double denominator;
double threshold;
@@ -32,7 +33,7 @@
v->basic.create_widgets = _basic_create_widgets;
v->override_auto_apply = 1;
- cfd = e_config_dialog_new(con, _("Mouse Acceleration Settings"), "E",
+ cfd = e_config_dialog_new(con, _("Mouse Settings"), "E",
"_config_mouse_dialog",
"enlightenment/mouse_clean", 0, v, NULL);
return cfd;
@@ -41,6 +42,7 @@
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
+ cfdata->mouse_hand = e_config->mouse_hand;
cfdata->numerator = e_config->mouse_accel_numerator;
cfdata->denominator = e_config->mouse_accel_denominator;
cfdata->threshold = e_config->mouse_accel_threshold;
@@ -70,6 +72,8 @@
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
+ e_config->mouse_hand = cfdata->mouse_hand;
+
e_config->mouse_accel_numerator = cfdata->numerator;
/* Force denominator to 1 for simplicity. */
e_config->mouse_accel_denominator = 1;
@@ -86,8 +90,18 @@
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
+ E_Radio_Group *rg;
+
o = e_widget_list_add(evas, 0, 0);
+ of = e_widget_frametable_add(evas, _("Mouse Hand"), 0);
+ rg = e_widget_radio_group_new(&(cfdata->mouse_hand));
+ ob = e_widget_radio_icon_add(evas, NULL, "enlightenment/mouse_right", 48, 48, E_MOUSE_HAND_LEFT, rg);
+ e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
+ ob = e_widget_radio_icon_add(evas, NULL, "enlightenment/mouse_left", 48, 48, E_MOUSE_HAND_RIGHT, rg);
+ e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
+ e_widget_list_object_append(o, of, 1, 1, 0.5);
+
of = e_widget_framelist_add(evas, _("Mouse Acceleration"), 0);
ob = e_widget_label_add(evas, _("Acceleration"));
Index: trunk/e/src/bin/e_main.c
===================================================================
--- trunk/e/src/bin/e_main.c (revision 35759)
+++ trunk/e/src/bin/e_main.c (working copy)
@@ -843,7 +843,7 @@
/* setup mouse accel */
if (!e_mouse_init())
{
- e_error_message_show(_("Enlightenment cannot configure the mouse acceleration settings."));
+ e_error_message_show(_("Enlightenment cannot configure the mouse settings."));
_e_main_shutdown(-1);
}
Index: trunk/e/config/default/e.src
===================================================================
--- trunk/e/config/default/e.src (revision 35759)
+++ trunk/e/config/default/e.src (working copy)
@@ -1,5 +1,5 @@
group "E_Config" struct {
- value "config_version" int: 65828;
+ value "config_version" int: 65829;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_name" string: "Desktop %i, %i";
@@ -1901,6 +1901,7 @@
value "clientlist_warp_to_iconified_desktop" int: 0;
value "clientlist_limit_caption_len" int: 0;
value "clientlist_max_caption_len" int: 2;
+ value "mouse_hand" int: 1;
value "mouse_accel_numerator" int: 2;
value "mouse_accel_denominator" int: 1;
value "mouse_accel_threshold" int: 4;
signature.asc
Description: PGP signature
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
