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
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to