Ravenlock wrote:
> Hello,
>
> Please find attached a patchset that will add a configuration panel that
> will allow a user to control the mouse acceleration in X.
>
>
> ------------------------------------------------------------------------
>
> #include "e.h"
>
> static void *_create_data(E_Config_Dialog *cfd);
> static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
> static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data
> *cfdata);
> static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas,
> E_Config_Dialog_Data *cfdata);
>
> struct _E_Config_Dialog_Data
> {
> E_Config_Dialog *cfd;
>
> double numerator;
> double denominator;
> double threshold;
> };
>
> static E_Dialog *mouse_dialog = NULL;
>
> static void
> _cb_mouse_dialog_ok(void *data, E_Dialog *dia)
> {
> e_object_del(E_OBJECT(mouse_dialog));
> mouse_dialog = NULL;
> }
>
> EAPI E_Config_Dialog *
> e_int_config_mouse(E_Container *con)
> {
> E_Config_Dialog *cfd;
> E_Config_Dialog_View *v;
>
> if (e_config_dialog_find("E", "_config_mouse_dialog"))
> return NULL;
>
> v = E_NEW(E_Config_Dialog_View, 1);
>
> v->create_cfdata = _create_data;
> v->free_cfdata = _free_data;
> v->basic.apply_cfdata = _basic_apply_data;
> v->basic.create_widgets = _basic_create_widgets;
> v->override_auto_apply = 1;
>
> cfd = e_config_dialog_new(con, _("Mouse Acceleration Settings"), "E",
> "_config_mouse_dialog", "enlightenment/mouse",
> 0, v, NULL);
> return cfd;
> }
>
> static void
> _fill_data(E_Config_Dialog_Data *cfdata)
> {
> cfdata->numerator = e_config->mouse_accel_numerator;
> cfdata->denominator = e_config->mouse_accel_denominator;
> cfdata->threshold = e_config->mouse_accel_threshold;
> }
>
> static void *
> _create_data(E_Config_Dialog *cfd)
> {
> E_Config_Dialog_Data *cfdata;
>
> cfdata = E_NEW(E_Config_Dialog_Data, 1);
> cfdata->cfd = cfd;
>
> _fill_data(cfdata);
> return cfdata;
> }
>
> static void
> _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
> {
> if (!cfdata) return;
>
> E_FREE(cfdata);
> }
>
> /* advanced window */
> static int
> _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
> {
> e_config->mouse_accel_numerator = cfdata->numerator;
> // Force denominator to 1 for simplicity.
> e_config->mouse_accel_denominator = 1; //cfdata->denominator;
> e_config->mouse_accel_threshold = cfdata->threshold;
>
> // Apply the above settings
> e_mouse_init();
>
> e_config_save_queue();
> return 1;
> }
>
> static Evas_Object *
> _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_framelist_add(evas, _("Mouse Acceleration"), 0);
>
> ob = e_widget_label_add(evas, _("Acceleration"));
> e_widget_framelist_object_append(of, ob);
> ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 1.0, 10.0, 1.0, 0,
> &(cfdata->numerator), NULL, 200);
> e_widget_framelist_object_append(of, ob);
>
> /*ob = e_widget_label_add(evas, _("Denominator"));
> e_widget_framelist_object_append(of, ob);
> ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 1.0, 10.0, 1.0, 0,
> &(cfdata->denominator), NULL, 200);
> e_widget_framelist_object_append(of, ob);*/
>
> ob = e_widget_label_add(evas, _("Threshold"));
> e_widget_framelist_object_append(of, ob);
> ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 1.0, 10.0, 1.0, 0,
> &(cfdata->threshold), NULL, 200);
> e_widget_framelist_object_append(of, ob);
>
> e_widget_list_object_append(o, of, 1, 1, 0.5);
>
> e_dialog_resizable_set(cfd->dia, 0);
> return o;
> }
>
>
> ------------------------------------------------------------------------
>
> #ifdef E_TYPEDEFS
> #else
> #ifndef E_INT_CONFIG_MOUSE_H
> #define E_INT_CONFIG_MOUSE_H
>
> EAPI E_Config_Dialog *e_int_config_mouse(E_Container *con);
>
> #endif
> #endif
>
>
> ------------------------------------------------------------------------
>
> /*
> * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
> */
> #include "e.h"
>
> EAPI int
> e_mouse_init(void)
> {
> if (!ecore_x_pointer_control_set(e_config->mouse_accel_numerator,
> e_config->mouse_accel_denominator,
> e_config->mouse_accel_threshold))
> return 0;
>
> return 1;
> }
>
>
> ------------------------------------------------------------------------
>
> #ifdef E_TYPEDEFS
> #else
> #ifndef E_MOUSE_H
> #define E_MOUSE_H
>
> EAPI int e_mouse_init(void);
>
> #endif
> #endif
>
>
> ------------------------------------------------------------------------
>
> Index: e17/apps/e/src/bin/Makefile.am
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/Makefile.am,v
> retrieving revision 1.176
> diff -u -r1.176 Makefile.am
> --- e17/apps/e/src/bin/Makefile.am 2 Mar 2007 17:00:20 -0000 1.176
> +++ e17/apps/e/src/bin/Makefile.am 10 Mar 2007 03:49:48 -0000
> @@ -187,7 +187,9 @@
> e_int_config_borders.h \
> e_int_config_desk.h \
> e_int_config_clientlist.h \
> -e_fm_prop.h
> +e_fm_prop.h \
> +e_int_config_mouse.h \
> +e_mouse.h
>
> enlightenment_src = \
> e_user.c \
> @@ -350,6 +352,8 @@
> e_int_config_desk.c \
> e_fm_prop.c \
> e_int_config_clientlist.c \
> +e_int_config_mouse.c \
> +e_mouse.c \
> $(ENLIGHTENMENTHEADERS)
>
> enlightenment_SOURCES = \
> Index: e17/apps/e/src/bin/e_config.c
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.c,v
> retrieving revision 1.228
> diff -u -r1.228 e_config.c
> --- e17/apps/e/src/bin/e_config.c 2 Mar 2007 17:00:20 -0000 1.228
> +++ e17/apps/e/src/bin/e_config.c 10 Mar 2007 03:49:49 -0000
> @@ -511,6 +511,10 @@
> E_CONFIG_VAL(D, T, clientlist_separate_iconified_apps, INT);
> E_CONFIG_VAL(D, T, clientlist_warp_to_iconified_desktop, 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);
> +
> E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT);
> E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
> E_CONFIG_VAL(D, T, desk_flip_wrap, INT);
> @@ -1337,6 +1341,12 @@
> e_config->clientlist_warp_to_iconified_desktop = 0;
> IFCFGEND;
>
> + IFCFG(0x0111);
> + e_config->mouse_accel_numerator = 2;
> + e_config->mouse_accel_denominator = 1;
> + e_config->mouse_accel_threshold = 4;
> + IFCFGEND;
> +
> e_config->config_version = E_CONFIG_FILE_VERSION;
>
> #if 0 /* example of new config */
> @@ -1455,6 +1465,10 @@
> 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_accel_numerator, 1, 10);
> + E_CONFIG_LIMIT(e_config->mouse_accel_denominator, 1, 10);
> + E_CONFIG_LIMIT(e_config->mouse_accel_threshold, 1, 10);
> +
> /* FIXME: disabled auto apply because it causes problems */
> e_config->cfgdlg_auto_apply = 0;
> /* FIXME: desklock personalized password id disabled for security reasons
> */
> Index: e17/apps/e/src/bin/e_config.h
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.h,v
> retrieving revision 1.143
> diff -u -r1.143 e_config.h
> --- e17/apps/e/src/bin/e_config.h 2 Mar 2007 17:00:20 -0000 1.143
> +++ e17/apps/e/src/bin/e_config.h 10 Mar 2007 03:49:50 -0000
> @@ -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 0x0110
> +#define E_CONFIG_FILE_GENERATION 0x0111
> #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) |
> E_CONFIG_FILE_GENERATION)
>
> #define E_EVAS_ENGINE_DEFAULT 0
> @@ -253,6 +253,10 @@
> int clientlist_separate_iconified_apps;
> int clientlist_warp_to_iconified_desktop;
>
> + int mouse_accel_numerator;
> + int mouse_accel_denominator;
> + int mouse_accel_threshold;
> +
> int display_res_restore; // GUI
> int display_res_width; // GUI
> int display_res_height; // GUI
> Index: e17/apps/e/src/bin/e_configure.c
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_configure.c,v
> retrieving revision 1.90
> diff -u -r1.90 e_configure.c
> --- e17/apps/e/src/bin/e_configure.c 21 Feb 2007 00:05:27 -0000 1.90
> +++ e17/apps/e/src/bin/e_configure.c 10 Mar 2007 03:49:50 -0000
> @@ -418,6 +418,7 @@
> cat = _e_configure_category_add(eco, _("Keyboard & Mouse"),
> "enlightenment/behavior");
> _e_configure_item_add(cat, _("Key Bindings"), "enlightenment/keys",
> e_int_config_keybindings);
> _e_configure_item_add(cat, _("Mouse Bindings"),
> "enlightenment/mouse_clean", e_int_config_mousebindings);
> + _e_configure_item_add(cat, _("Mouse Acceleration"),
> "enlightenment/mouse_clean", e_int_config_mouse);
>
> cat = _e_configure_category_add(eco, _("Windows"),
> "enlightenment/windows");
> _e_configure_item_add(cat, _("Window Display"), "enlightenment/windows",
> e_int_config_window_display);
> Index: e17/apps/e/src/bin/e_includes.h
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_includes.h,v
> retrieving revision 1.148
> diff -u -r1.148 e_includes.h
> --- e17/apps/e/src/bin/e_includes.h 21 Feb 2007 00:05:27 -0000 1.148
> +++ e17/apps/e/src/bin/e_includes.h 10 Mar 2007 03:49:50 -0000
> @@ -163,3 +163,6 @@
> #include "e_int_config_desk.h"
> #include "e_int_config_clientlist.h"
> #include "e_fm_prop.h"
> +#include "e_int_config_mouse.h"
> +#include "e_int_config_mouse.h"
> +#include "e_int_config_mouse.h"
> Index: e17/apps/e/src/bin/e_main.c
> ===================================================================
> RCS file: /var/cvs/e/e17/apps/e/src/bin/e_main.c,v
> retrieving revision 1.201
> diff -u -r1.201 e_main.c
> --- e17/apps/e/src/bin/e_main.c 2 Mar 2007 17:00:20 -0000 1.201
> +++ e17/apps/e/src/bin/e_main.c 10 Mar 2007 03:49:51 -0000
> @@ -785,6 +785,14 @@
> _e_main_shutdown(-1);
> }
>
> + TS("mouse");
> + /* setup mouse accel */
> + if (!e_mouse_init())
> + {
> + e_error_message_show(_("Enlightenment cannot configure the mouse
> acceleration settings."));
> + _e_main_shutdown(-1);
> + }
> +
> TS("desklock");
> /* setup desklock */
> if (!e_desklock_init())
>
>
> ------------------------------------------------------------------------
>
> Index: e17/libs/ecore/src/lib/ecore_x/Ecore_X.h
> ===================================================================
> RCS file: /var/cvs/e/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v
> retrieving revision 1.183
> diff -u -r1.183 Ecore_X.h
> --- e17/libs/ecore/src/lib/ecore_x/Ecore_X.h 9 Mar 2007 01:11:09 -0000
> 1.183
> +++ e17/libs/ecore/src/lib/ecore_x/Ecore_X.h 10 Mar 2007 03:53:46 -0000
> @@ -1417,7 +1417,8 @@
> EAPI void ecore_x_window_save_set_del(Ecore_X_Window win);
> EAPI Ecore_X_Window *ecore_x_window_children_get(Ecore_X_Window win, int
> *num);
>
> -
> +EAPI int ecore_x_pointer_control_set(int accel_num, int accel_denom, int
> threshold);
> +EAPI int ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int
> *threshold);
> 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: e17/libs/ecore/src/lib/ecore_x/ecore_x.c
> ===================================================================
> RCS file: /var/cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v
> retrieving revision 1.125
> diff -u -r1.125 ecore_x.c
> --- e17/libs/ecore/src/lib/ecore_x/ecore_x.c 9 Mar 2007 01:11:09 -0000
> 1.125
> +++ e17/libs/ecore/src/lib/ecore_x/ecore_x.c 10 Mar 2007 03:53:47 -0000
> @@ -1089,6 +1089,21 @@
> }
>
> EAPI int
> +ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold)
> +{
> + return XChangePointerControl(_ecore_x_disp, 1, 1,
> + accel_num, accel_denom, threshold);
> +}
> +
> +
> +EAPI int
> +ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold)
> +{
> + return XGetPointerControl(_ecore_x_disp,
> + accel_num, accel_denom, threshold);
> +}
> +
> +EAPI int
> ecore_x_pointer_grab(Ecore_X_Window win)
> {
> if (XGrabPointer(_ecore_x_disp, win, False,
>
>
Why not just add a new framelist to the Advanced section of the already
existing mouse config dialog ?
dh
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel