X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fdevicetracker.cpp;h=8bd9a4686a10786fe86a4b1781963a7ecc83bf1b;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=2f661ddc301e20447a206dbf4a0e0f7c3754b733;hpb=7e1b3e8ecf46144d377f338b075967baa4b08ba6;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/devicetracker.cpp b/synfig-studio/trunk/src/gtkmm/devicetracker.cpp index 2f661dd..8bd9a46 100644 --- a/synfig-studio/trunk/src/gtkmm/devicetracker.cpp +++ b/synfig-studio/trunk/src/gtkmm/devicetracker.cpp @@ -116,42 +116,26 @@ DeviceTracker::save_preferences() } void -DeviceTracker::set_device_mode(const synfig::String & id, - InputDevice::Mode mode) +DeviceTracker::load_preferences() { - for (GList * itr = gdk_devices_list(); itr; itr = g_list_next(itr)) + GList * device_list = gdk_devices_list(); + for (GList * itr = device_list; itr; itr = g_list_next(itr)) { - GdkDevice * device = reinterpret_cast(itr->data); - if (id == device->name) - gdk_device_set_mode(device, GdkInputMode(mode)); - } -} + GdkDevice * gdk_device = reinterpret_cast(itr->data); -void -DeviceTracker::set_device_axes(const synfig::String & id, - const std::vector axes) -{ - for (GList * itr = gdk_devices_list(); itr; itr = g_list_next(itr)) - { - GdkDevice * device = reinterpret_cast(itr->data); - if (id == device->name) { - for (int axis = 0; axis < (int) axes.size(); axis++) - gdk_device_set_axis_use(device, axis, GdkAxisUse(axes[axis])); - } - } -} + InputDevice::Handle synfig_device = synfigapp::Main::find_input_device(gdk_device->name); + if (synfig_device == NULL) + continue; -void -DeviceTracker::set_device_keys(const synfig::String & id, - const std::vector keys) -{ - for (GList * itr = gdk_devices_list(); itr; itr = g_list_next(itr)) - { - GdkDevice * device = reinterpret_cast(itr->data); - if (id == device->name) { - for (int key = 0; key < (int) keys.size(); key++) - gdk_device_set_key(device, key, keys[key].keyval, - GdkModifierType(keys[key].modifiers)); - } + gdk_device_set_mode(gdk_device, GdkInputMode(synfig_device->get_mode())); + + const std::vector axes = synfig_device->get_axes(); + for (int axis = 0; axis < (int) axes.size(); axis++) + gdk_device_set_axis_use(gdk_device, axis, GdkAxisUse(axes[axis])); + + const std::vector keys = synfig_device->get_keys(); + for (int key = 0; key < (int) keys.size(); key++) + gdk_device_set_key(gdk_device, key, keys[key].keyval, + GdkModifierType(keys[key].modifiers)); } }