backends: Re-add support for edge scrolling with some touchpads
Add support for setting edge-scrolling separately from two-finger scrolling. We now have 2 separate boolean settings for those, with the Mouse panel in gnome-control-center allowing to set only one of those at a time, but nothing precludes both being set in the configuration. We need to handle: - two-finger-scrolling-enabled and edge-scrolling-enabled settings both being set. - those 2 settings being change out-of-order - two-finger-scrolling being set on a device that doesn't support it - edge-scrolling-enabled on a device that doesn't support it And the combinations of one touchpad supporting just one of edge scrolling and two-finger scrolling and another vice-versa. https://bugzilla.gnome.org/show_bug.cgi?id=768245
This commit is contained in:
@ -449,6 +449,36 @@ update_touchpad_edge_scroll (MetaInputSettings *input_settings,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
update_touchpad_two_finger_scroll (MetaInputSettings *input_settings,
|
||||
ClutterInputDevice *device)
|
||||
{
|
||||
MetaInputSettingsClass *input_settings_class;
|
||||
gboolean two_finger_scroll_enabled;
|
||||
MetaInputSettingsPrivate *priv;
|
||||
|
||||
if (device &&
|
||||
clutter_input_device_get_device_type (device) != CLUTTER_TOUCHPAD_DEVICE)
|
||||
return;
|
||||
|
||||
priv = meta_input_settings_get_instance_private (input_settings);
|
||||
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
|
||||
two_finger_scroll_enabled = g_settings_get_boolean (priv->touchpad_settings, "two-finger-scrolling-enabled");
|
||||
|
||||
if (device)
|
||||
{
|
||||
settings_device_set_bool_setting (input_settings, device,
|
||||
input_settings_class->set_two_finger_scroll,
|
||||
two_finger_scroll_enabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
settings_set_bool_setting (input_settings, CLUTTER_TOUCHPAD_DEVICE,
|
||||
(ConfigBoolFunc) input_settings_class->set_two_finger_scroll,
|
||||
two_finger_scroll_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
update_touchpad_click_method (MetaInputSettings *input_settings,
|
||||
ClutterInputDevice *device)
|
||||
@ -837,6 +867,8 @@ meta_input_settings_changed_cb (GSettings *settings,
|
||||
update_touchpad_send_events (input_settings, NULL);
|
||||
else if (strcmp (key, "edge-scrolling-enabled") == 0)
|
||||
update_touchpad_edge_scroll (input_settings, NULL);
|
||||
else if (strcmp (key, "two-finger-scrolling-enabled") == 0)
|
||||
update_touchpad_two_finger_scroll (input_settings, NULL);
|
||||
else if (strcmp (key, "click-method") == 0)
|
||||
update_touchpad_click_method (input_settings, NULL);
|
||||
}
|
||||
@ -1150,6 +1182,7 @@ apply_device_settings (MetaInputSettings *input_settings,
|
||||
update_touchpad_tap_enabled (input_settings, device);
|
||||
update_touchpad_send_events (input_settings, device);
|
||||
update_touchpad_edge_scroll (input_settings, device);
|
||||
update_touchpad_two_finger_scroll (input_settings, device);
|
||||
update_touchpad_click_method (input_settings, device);
|
||||
|
||||
update_trackball_scroll_button (input_settings, device);
|
||||
|
Reference in New Issue
Block a user