From: Nathan I. <nin...@gm...> - 2007-03-10 07:45:11
|
On 3/9/07, Christopher Michael <cpm...@co...> wrote: > 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 > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > |