On 3/9/07, Christopher Michael <[EMAIL PROTECTED]> 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
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>

-------------------------------------------------------------------------
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