From 8dfb88b669c0f1de3f36d32729adad25f31a46d1 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 15 Apr 2015 13:05:53 +0200 Subject: [PATCH] backend: Apply the right settings to the right input devices Since 8769b3d55, the checks performed on which update_* function was called for each device got quite more lax, leading to failed asserts on code that assumed the previous behavior. Change update_[mouse|touchpad|trackball]_* to bail out early if the device received has not the right type, and remove the asserts. https://bugzilla.gnome.org/show_bug.cgi?id=747886 --- src/backends/meta-input-settings.c | 31 +++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c index 004044e19..05870a16a 100644 --- a/src/backends/meta-input-settings.c +++ b/src/backends/meta-input-settings.c @@ -209,6 +209,10 @@ update_touchpad_left_handed (MetaInputSettings *input_settings, MetaInputSettingsPrivate *priv; gboolean enabled = FALSE; + 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); handedness = g_settings_get_enum (priv->touchpad_settings, "left-handed"); @@ -230,7 +234,6 @@ update_touchpad_left_handed (MetaInputSettings *input_settings, if (device) { - g_assert (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHPAD_DEVICE); settings_device_set_bool_setting (input_settings, device, input_settings_class->set_left_handed, enabled); @@ -251,13 +254,16 @@ update_mouse_left_handed (MetaInputSettings *input_settings, MetaInputSettingsPrivate *priv; gboolean enabled; + if (device && + clutter_input_device_get_device_type (device) != CLUTTER_POINTER_DEVICE) + return; + priv = meta_input_settings_get_instance_private (input_settings); input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings); enabled = g_settings_get_boolean (priv->mouse_settings, "left-handed"); if (device) { - g_assert (clutter_input_device_get_device_type (device) == CLUTTER_POINTER_DEVICE); settings_device_set_bool_setting (input_settings, device, input_settings_class->set_left_handed, enabled); @@ -366,6 +372,10 @@ update_touchpad_tap_enabled (MetaInputSettings *input_settings, MetaInputSettingsPrivate *priv; gboolean enabled; + 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); enabled = g_settings_get_boolean (priv->touchpad_settings, "tap-to-click"); @@ -392,6 +402,10 @@ update_touchpad_scroll_method (MetaInputSettings *input_settings, GDesktopTouchpadScrollMethod method; 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); method = g_settings_get_enum (priv->touchpad_settings, "scroll-method"); @@ -418,6 +432,10 @@ update_touchpad_click_method (MetaInputSettings *input_settings, GDesktopTouchpadScrollMethod method; 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); method = g_settings_get_enum (priv->touchpad_settings, "click-method"); @@ -444,6 +462,10 @@ update_touchpad_send_events (MetaInputSettings *input_settings, MetaInputSettingsPrivate *priv; GDesktopDeviceSendEvents mode; + 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); mode = g_settings_get_enum (priv->touchpad_settings, "send-events"); @@ -486,13 +508,16 @@ update_trackball_scroll_button (MetaInputSettings *input_settings, MetaInputSettingsPrivate *priv; guint button; + if (device && !device_is_trackball (device)) + return; + priv = meta_input_settings_get_instance_private (input_settings); input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings); /* This key is 'i' in the schema but it also specifies a minimum * range of 0 so the cast here is safe. */ button = (guint) g_settings_get_int (priv->trackball_settings, "scroll-wheel-emulation-button"); - if (device && device_is_trackball (device)) + if (device) { input_settings_class->set_scroll_button (input_settings, device, button); }