diff --git a/ChangeLog b/ChangeLog index ec53b4da3..3170d1aa0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-01-08 David H. Bronke + + * Added new config option for disabling pointer warping when performing directional focus changes using winlist + 2013-01-08 Thanatermesis * "System Default" language in wizard now displays which language it is and no longer removes language from list diff --git a/NEWS b/NEWS index 8cbfa9696..810957757 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,7 @@ Additions: Config: * Added option for disabling icons in menus * Added option for doing desklock, blanking or dimming even when showing fullscreen windows. + * Added option for disabling pointer warping when performing directional focus changes using winlist Deprecations: diff --git a/src/bin/e_config.c b/src/bin/e_config.c index edc60b609..b027f683c 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -711,6 +711,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, geometry_auto_move, INT); /**/ E_CONFIG_VAL(D, T, winlist_warp_while_selecting, INT); /**/ E_CONFIG_VAL(D, T, winlist_warp_at_end, INT); /**/ + E_CONFIG_VAL(D, T, winlist_no_warp_on_direction, INT); /**/ E_CONFIG_VAL(D, T, winlist_warp_speed, DOUBLE); /**/ E_CONFIG_VAL(D, T, winlist_scroll_animate, INT); /**/ E_CONFIG_VAL(D, T, winlist_scroll_speed, DOUBLE); /**/ @@ -1126,6 +1127,7 @@ e_config_load(void) E_CONFIG_LIMIT(e_config->geometry_auto_resize_limit, 0, 1); E_CONFIG_LIMIT(e_config->winlist_warp_while_selecting, 0, 1); E_CONFIG_LIMIT(e_config->winlist_warp_at_end, 0, 1); + E_CONFIG_LIMIT(e_config->winlist_no_warp_on_direction, 0, 1); E_CONFIG_LIMIT(e_config->winlist_warp_speed, 0.0, 1.0); E_CONFIG_LIMIT(e_config->winlist_scroll_animate, 0, 1); E_CONFIG_LIMIT(e_config->winlist_scroll_speed, 0.0, 1.0); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 5501009ed..fd7cc271d 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -38,7 +38,7 @@ typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme; /* 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 2 +#define E_CONFIG_FILE_GENERATION 3 #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH * 1000000) + E_CONFIG_FILE_GENERATION) struct _E_Config @@ -111,6 +111,7 @@ struct _E_Config int geometry_auto_resize_limit; // GUI int winlist_warp_while_selecting; // GUI int winlist_warp_at_end; // GUI + int winlist_no_warp_on_direction; // GUI double winlist_warp_speed; // GUI int winlist_scroll_animate; // GUI double winlist_scroll_speed; // GUI @@ -346,7 +347,7 @@ struct _E_Config double dim; // GUI double transition; // GUI double timer; // GUI - const char *sysdev; // GUI + const char *sysdev; // GUI unsigned char idle_dim; // GUI E_Backlight_Mode mode; /* not saved, display-only */ } backlight; diff --git a/src/bin/e_configure_option.c b/src/bin/e_configure_option.c index eded7449b..9ac9eff9b 100644 --- a/src/bin/e_configure_option.c +++ b/src/bin/e_configure_option.c @@ -1605,6 +1605,8 @@ e_configure_option_init(void) OPT_ADD(BOOL, winlist_warp_while_selecting, _("Winlist moves pointer to currently selected window while selecting"), _("border"), _("winlist"), _("focus"), _("warp"), _("pointer")); OPT_ADD(BOOL, winlist_warp_at_end, _("Winlist moves pointer to currently selected window after winlist closes"), _("border"), _("winlist"), _("focus"), _("warp"), _("pointer")); + OPT_ADD(BOOL, winlist_no_warp_on_direction, _("Disable pointer warping on winlist directional focus change"), _("border"), _("winlist"), _("focus"), _("warp"), _("pointer")); + OPT_HELP("This option, when enabled, disables pointer warping only when switching windows using a directional winlist action (up/down/left/right)"); OPT_ADD(DOUBLE, winlist_warp_speed, _("Winlist pointer warp speed while selecting"), _("border"), _("winlist"), _("focus"), _("warp"), _("pointer"), _("speed")); OPT_MINMAX_STEP_FMT(0.0, 1.0, 0.01, "%1.2f"); OPT_ADD(BOOL, winlist_scroll_animate, _("Enable winlist scroll animation"), _("border"), _("winlist"), _("animate")); diff --git a/src/modules/winlist/e_int_config_winlist.c b/src/modules/winlist/e_int_config_winlist.c index c8dd92e85..cf12fdf76 100644 --- a/src/modules/winlist/e_int_config_winlist.c +++ b/src/modules/winlist/e_int_config_winlist.c @@ -22,6 +22,7 @@ struct _E_Config_Dialog_Data int focus, raise, uncover; int warp_while_selecting; int warp_at_end; + int no_warp_on_direction; double warp_speed; int jump_desk; @@ -82,6 +83,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->warp_while_selecting = e_config->winlist_warp_while_selecting; cfdata->warp_at_end = e_config->winlist_warp_at_end; + cfdata->no_warp_on_direction = e_config->winlist_no_warp_on_direction; cfdata->warp_speed = e_config->winlist_warp_speed; cfdata->scroll_animate = e_config->winlist_scroll_animate; @@ -130,6 +132,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) DO(list_jump_desk_while_selecting, jump_desk); DO(warp_while_selecting, warp_while_selecting); DO(warp_at_end, warp_at_end); + DO(no_warp_on_direction, no_warp_on_direction); DO(warp_speed, warp_speed); DO(scroll_animate, scroll_animate); DO(scroll_speed, scroll_speed); @@ -163,6 +166,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda DO(list_jump_desk_while_selecting, jump_desk); DO(warp_while_selecting, warp_while_selecting); DO(warp_at_end, warp_at_end); + DO(no_warp_on_direction, no_warp_on_direction); DO(warp_speed, warp_speed); DO(scroll_animate, scroll_animate); DO(scroll_speed, scroll_speed); @@ -225,6 +229,10 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data &(cfdata->warp_at_end)); e_widget_on_change_hook_set(ob, _warp_changed, cfdata); e_widget_list_object_append(ol, ob, 1, 0, 0.0); + ob = e_widget_check_add(evas, _("Disable mouse warp on directional focus change"), + &(cfdata->no_warp_on_direction)); + e_widget_on_change_hook_set(ob, _warp_changed, cfdata); + e_widget_list_object_append(ol, ob, 1, 0, 0.0); ob = e_widget_check_add(evas, _("Jump to desk"), &(cfdata->jump_desk)); e_widget_list_object_append(ol, ob, 1, 0, 0.0); e_widget_toolbook_page_append(otb, NULL, _("Selecting"), ol, @@ -361,7 +369,8 @@ _warp_changed(void *data, Evas_Object *obj __UNUSED__) Evas_Object *o; Eina_Bool disabled; - disabled = ((!cfdata->warp_while_selecting) && (!cfdata->warp_at_end)); + disabled = ((!cfdata->warp_while_selecting) && (!cfdata->warp_at_end) + && (!cfdata->no_warp_on_direction)); EINA_LIST_FOREACH(cfdata->gui.disable_warp, l, o) e_widget_disabled_set(o, disabled); } diff --git a/src/modules/winlist/e_winlist.c b/src/modules/winlist/e_winlist.c index c53d7e0a5..65f89bd4c 100644 --- a/src/modules/winlist/e_winlist.c +++ b/src/modules/winlist/e_winlist.c @@ -341,7 +341,7 @@ e_winlist_hide(void) e_object_unref(E_OBJECT(bd)); } - + e_border_idler_before(); ecore_x_window_free(_input_window); @@ -501,14 +501,16 @@ e_winlist_left(E_Zone *zone) _old_warp_x = _old_warp_y = INT_MAX; } - - ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); - _win = &zone->container->win; - _warp_to = 1; - if (!_warp_timer) - _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); - if (!_animator) - _animator = ecore_animator_add(_e_winlist_animator, NULL); + if (!e_config->winlist_no_warp_on_direction) + { + ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); + _win = &zone->container->win; + _warp_to = 1; + if (!_warp_timer) + _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); + if (!_animator) + _animator = ecore_animator_add(_e_winlist_animator, NULL); + } if ((!_bd_next->lock_user_stacking) && (e_config->winlist_list_raise_while_selecting)) @@ -623,14 +625,16 @@ e_winlist_down(E_Zone *zone) _old_warp_x = _old_warp_y = INT_MAX; } - - ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); - _win = &zone->container->win; - _warp_to = 1; - if (!_warp_timer) - _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); - if (!_animator) - _animator = ecore_animator_add(_e_winlist_animator, NULL); + if (!e_config->winlist_no_warp_on_direction) + { + ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); + _win = &zone->container->win; + _warp_to = 1; + if (!_warp_timer) + _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); + if (!_animator) + _animator = ecore_animator_add(_e_winlist_animator, NULL); + } if ((!_bd_next->lock_user_stacking) && (e_config->winlist_list_raise_while_selecting)) @@ -745,14 +749,16 @@ e_winlist_up(E_Zone *zone) _old_warp_x = _old_warp_y = INT_MAX; } - - ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); - _win = &zone->container->win; - _warp_to = 1; - if (!_warp_timer) - _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); - if (!_animator) - _animator = ecore_animator_add(_e_winlist_animator, NULL); + if (!e_config->winlist_no_warp_on_direction) + { + ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); + _win = &zone->container->win; + _warp_to = 1; + if (!_warp_timer) + _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); + if (!_animator) + _animator = ecore_animator_add(_e_winlist_animator, NULL); + } if ((!_bd_next->lock_user_stacking) && (e_config->winlist_list_raise_while_selecting)) @@ -867,14 +873,16 @@ e_winlist_right(E_Zone *zone) _old_warp_x = _old_warp_y = INT_MAX; } - - ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); - _win = &zone->container->win; - _warp_to = 1; - if (!_warp_timer) - _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); - if (!_animator) - _animator = ecore_animator_add(_e_winlist_animator, NULL); + if (!e_config->winlist_no_warp_on_direction) + { + ecore_x_pointer_xy_get(zone->container->win, &_warp_x, &_warp_y); + _win = &zone->container->win; + _warp_to = 1; + if (!_warp_timer) + _warp_timer = ecore_timer_add(0.01, _e_winlist_warp_timer, NULL); + if (!_animator) + _animator = ecore_animator_add(_e_winlist_animator, NULL); + } if ((!_bd_next->lock_user_stacking) && (e_config->winlist_list_raise_while_selecting)) diff --git a/src/modules/wizard/page_060.c b/src/modules/wizard/page_060.c index be8836199..1cd5235d6 100644 --- a/src/modules/wizard/page_060.c +++ b/src/modules/wizard/page_060.c @@ -59,6 +59,7 @@ wizard_page_hide(E_Wizard_Page *pg __UNUSED__) e_config->pointer_slide = 0; e_config->winlist_warp_while_selecting = 0; e_config->winlist_warp_at_end = 0; + e_config->winlist_no_warp_on_direction = 1; } else {