add config option for disabling pointer warp when performing directional focus change in winlist, patch by David H. Bronke

ticket #2098


SVN revision: 82409
This commit is contained in:
Mike Blumenkrantz 2013-01-08 11:51:56 +00:00
parent bede9e08bf
commit 31e2299a67
8 changed files with 64 additions and 36 deletions

View File

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

1
NEWS
View File

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

View File

@ -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);

View File

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

View File

@ -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"));

View File

@ -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);
}

View File

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

View File

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