~ubuntu-branches/ubuntu/oneiric/gnome-settings-daemon/oneiric

« back to all changes in this revision

Viewing changes to plugins/mouse/gsd-mouse-manager.c

  • Committer: Package Import Robot
  • Author(s): Rodrigo Moya
  • Date: 2011-09-19 17:05:48 UTC
  • mfrom: (1.1.51 upstream)
  • Revision ID: package-import@ubuntu.com-20110919170548-gegm8ewt6qf7v7lp
Tags: 3.1.92-0ubuntu1
* New upstream release
* debian/control:
  - Bump libcolord-dev build dependency
* debian/patches/00git_guard_against_division_by_0.patch:
* debian/patches/00git_dont_crash_if_session_not_ready.patch:
* debian/patches/00git_numlock_status.patch:
* debian/patches/00git_disconnect_callbacks.patch:
  - Remove upstream patches
* debian/patches/06_use_application_indicator.patch:
* debian/patches/16_use_synchronous_notifications.patch:
  - Rebased

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
{
186
186
        int id;
187
187
        g_object_get (G_OBJECT (device), "device-id", &id, NULL);
188
 
        if (g_hash_table_lookup (manager->priv->blacklist, GINT_TO_POINTER (id)) != NULL)
 
188
        if (g_hash_table_lookup (manager->priv->blacklist, GINT_TO_POINTER (id)) != NULL) {
 
189
                g_debug ("device %s (%d) is blacklisted", gdk_device_get_name (device), id);
189
190
                return TRUE;
 
191
        }
190
192
        return FALSE;
191
193
}
192
194
 
737
739
}
738
740
 
739
741
static void
740
 
set_touchpad_enabled (GdkDevice *device,
741
 
                      gboolean   state)
 
742
set_touchpad_disabled (GdkDevice *device)
742
743
{
743
744
        int id;
744
745
        XDevice *xdevice;
745
746
 
746
747
        g_object_get (G_OBJECT (device), "device-id", &id, NULL);
747
748
 
 
749
        g_debug ("Trying to set device disabled for \"%s\" (%d)", gdk_device_get_name (device), id);
 
750
 
748
751
        xdevice = open_gdk_device (device);
749
752
        if (xdevice == NULL)
750
753
                return;
754
757
                return;
755
758
        }
756
759
 
757
 
        if (set_device_enabled (id, state) == FALSE)
758
 
                g_warning ("Error %s device \"%s\"", (state) ? "enabling" : "disabling", gdk_device_get_name (device));
 
760
        if (set_device_enabled (id, FALSE) == FALSE)
 
761
                g_warning ("Error disabling device \"%s\" (%d)", gdk_device_get_name (device), id);
 
762
        else
 
763
                g_debug ("Disabled device \"%s\" (%d)", gdk_device_get_name (device), id);
 
764
 
 
765
        XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
 
766
}
 
767
 
 
768
static void
 
769
set_touchpad_enabled (int id)
 
770
{
 
771
        XDevice *xdevice;
 
772
 
 
773
        g_debug ("Trying to set device enabled for %d", id);
 
774
 
 
775
        gdk_error_trap_push ();
 
776
        xdevice = XOpenDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), id);
 
777
        if (gdk_error_trap_pop () != 0)
 
778
                return;
 
779
 
 
780
        if (!device_is_touchpad (xdevice)) {
 
781
                XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
 
782
                return;
 
783
        }
 
784
 
 
785
        if (set_device_enabled (id, TRUE) == FALSE)
 
786
                g_warning ("Error enabling device \"%d\"", id);
 
787
        else
 
788
                g_debug ("Enabled device %d", id);
759
789
 
760
790
        XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
761
791
}
871
901
        set_tap_to_click (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TAP_TO_CLICK), touchpad_left_handed);
872
902
        set_edge_scroll (device, g_settings_get_enum (manager->priv->touchpad_settings, KEY_SCROLL_METHOD));
873
903
        set_horiz_scroll (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_PAD_HORIZ_SCROLL));
874
 
        set_touchpad_enabled (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED));
 
904
        if (g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED) == FALSE)
 
905
                set_touchpad_disabled (device);
875
906
}
876
907
 
877
908
static void
931
962
        for (l = devices; l != NULL; l = l->next) {
932
963
                GdkDevice *device = l->data;
933
964
 
 
965
                g_message ("checking on device %s", gdk_device_get_name (device));
 
966
 
934
967
                if (device_is_blacklisted (manager, device))
935
968
                        return;
936
969
 
943
976
                } else if (g_str_equal (key, KEY_PAD_HORIZ_SCROLL)) {
944
977
                        set_horiz_scroll (device, g_settings_get_boolean (settings, key));
945
978
                } else if (g_str_equal (key, KEY_TOUCHPAD_ENABLED)) {
946
 
                        set_touchpad_enabled (device, g_settings_get_boolean (settings, key));
 
979
                        if (g_settings_get_boolean (settings, key) == FALSE)
 
980
                                set_touchpad_disabled (device);
 
981
                        else
 
982
                                set_touchpad_enabled (gdk_x11_device_get_id (device));
947
983
                } else if (g_str_equal (key, KEY_MOTION_ACCELERATION) ||
948
984
                           g_str_equal (key, KEY_MOTION_THRESHOLD)) {
949
985
                        set_motion (manager, device);
954
990
                }
955
991
        }
956
992
        g_list_free (devices);
 
993
 
 
994
        if (g_str_equal (key, KEY_TOUCHPAD_ENABLED) &&
 
995
            g_settings_get_boolean (settings, key)) {
 
996
                devices = get_disabled_devices (manager->priv->device_manager);
 
997
                for (l = devices; l != NULL; l = l->next) {
 
998
                        int device_id;
 
999
 
 
1000
                        device_id = GPOINTER_TO_INT (l->data);
 
1001
                        set_touchpad_enabled (device_id);
 
1002
                }
 
1003
                g_list_free (devices);
 
1004
        }
957
1005
}
958
1006
 
959
1007
static void
1060
1108
        }
1061
1109
        g_list_free (devices);
1062
1110
 
 
1111
        if (g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED)) {
 
1112
                devices = get_disabled_devices (manager->priv->device_manager);
 
1113
                for (l = devices; l != NULL; l = l->next) {
 
1114
                        int device_id;
 
1115
 
 
1116
                        device_id = GPOINTER_TO_INT (l->data);
 
1117
                        set_touchpad_enabled (device_id);
 
1118
                }
 
1119
                g_list_free (devices);
 
1120
        }
 
1121
 
1063
1122
        gnome_settings_profile_end (NULL);
1064
1123
 
1065
1124
        manager->priv->start_idle_id = 0;