diff options
Diffstat (limited to 'src/device-manager.cpp')
| -rw-r--r-- | src/device-manager.cpp | 56 |
1 files changed, 22 insertions, 34 deletions
diff --git a/src/device-manager.cpp b/src/device-manager.cpp index cfb8291a0..6c8d4514c 100644 --- a/src/device-manager.cpp +++ b/src/device-manager.cpp @@ -8,18 +8,23 @@ */ #include "device-manager.h" + #include <set> #include "preferences.h" -#include <gdkmm/display.h> -#include <gtkmm/accelkey.h> + #include <glibmm/regex.h> -#if WITH_GTKMM_3_0 +#include <gtk/gtk.h> + +#include <gdkmm/display.h> +#if GTK_CHECK_VERSION(3, 20, 0) +# include <gdkmm/seat.h> +#else # include <gdkmm/devicemanager.h> #endif -#include <gtk/gtk.h> +#include <gtkmm/accelkey.h> #define noDEBUG_VERBOSE 1 @@ -47,11 +52,7 @@ static bool isValidDevice(Glib::RefPtr<Gdk::Device> device) const bool source_matches = (device->get_source() == (*it).source); const bool mode_matches = (device->get_mode() == (*it).mode); const bool num_axes_matches = (device->get_n_axes() == (*it).num_axes); -#if WITH_GTKMM_3_0 const bool num_keys_matches = (device->get_n_keys() == (*it).num_keys); -#else - const bool num_keys_matches = (gdk_device_get_n_keys(device->gobj()) == (*it).num_keys); -#endif if (name_matches && source_matches && mode_matches && num_axes_matches && num_keys_matches) @@ -175,13 +176,7 @@ public: virtual Gdk::InputMode getMode() const {return (device->get_mode());} virtual gint getNumAxes() const {return device->get_n_axes();} virtual bool hasCursor() const {return device->get_has_cursor();} - -#if WITH_GTKMM_3_0 virtual int getNumKeys() const {return device->get_n_keys();} -#else - virtual int getNumKeys() const {return gdk_device_get_n_keys(device->gobj());} -#endif - virtual Glib::ustring getLink() const {return link;} virtual void setLink( Glib::ustring const& link ) {this->link = link;} virtual gint getLiveAxes() const {return liveAxes;} @@ -326,11 +321,12 @@ DeviceManagerImpl::DeviceManagerImpl() : { Glib::RefPtr<Gdk::Display> display = Gdk::Display::get_default(); -#if WITH_GTKMM_3_0 - Glib::RefPtr<Gdk::DeviceManager> dm = display->get_device_manager(); - std::vector< Glib::RefPtr<Gdk::Device> > devList = dm->list_devices(Gdk::DEVICE_TYPE_SLAVE); +#if GTK_CHECK_VERSION(3, 20, 0) + auto seat = display->get_default_seat(); + auto devList = seat->get_slaves(Gdk::SEAT_CAPABILITY_ALL); #else - std::vector< Glib::RefPtr<Gdk::Device> > devList = display->list_devices(); + auto dm = display->get_device_manager(); + auto devList = dm->list_devices(Gdk::DEVICE_TYPE_SLAVE); #endif if (fakeList.empty()) { @@ -340,24 +336,19 @@ DeviceManagerImpl::DeviceManagerImpl() : std::set<Glib::ustring> knownIDs; - for ( std::vector< Glib::RefPtr<Gdk::Device> >::iterator dev = devList.begin(); dev != devList.end(); ++dev ) { -#if WITH_GTKMM_3_0 + for (auto dev : devList) { // GTK+ 3 has added keyboards to the list of supported devices. - if((*dev)->get_source() != Gdk::SOURCE_KEYBOARD) { -#endif + if(dev->get_source() != Gdk::SOURCE_KEYBOARD) { #if DEBUG_VERBOSE g_message("device: name[%s] source[0x%x] mode[0x%x] cursor[%s] axis count[%d] key count[%d]", dev->name, dev->source, dev->mode, dev->has_cursor?"Yes":"no", dev->num_axes, dev->num_keys); #endif - InputDeviceImpl* device = new InputDeviceImpl(*dev, knownIDs); + InputDeviceImpl* device = new InputDeviceImpl(dev, knownIDs); device->reference(); devices.push_back(Glib::RefPtr<InputDeviceImpl>(device)); - -#if WITH_GTKMM_3_0 } -#endif } } @@ -667,11 +658,12 @@ static void createFakeList() { // try to find the first *real* core pointer Glib::RefPtr<Gdk::Display> display = Gdk::Display::get_default(); -#if WITH_GTKMM_3_0 - Glib::RefPtr<Gdk::DeviceManager> dm = display->get_device_manager(); - std::vector< Glib::RefPtr<Gdk::Device> > devList = dm->list_devices(Gdk::DEVICE_TYPE_SLAVE); +#if GTK_CHECK_VERSION(3, 20, 0) + auto seat = display->get_default_seat(); + auto devList = seat->get_slaves(Gdk::SEAT_CAPABILITY_ALL); #else - std::vector< Glib::RefPtr<Gdk::Device> > devList = display->list_devices(); + auto dm = display->get_device_manager(); + auto devList = dm->list_devices(Gdk::DEVICE_TYPE_SLAVE); #endif // Set iterator to point at beginning of device list @@ -689,11 +681,7 @@ static void createFakeList() { fakeList[4].mode = device->get_mode(); fakeList[4].has_cursor = device->get_has_cursor(); fakeList[4].num_axes = device->get_n_axes(); -#if WITH_GTKMM_3_0 fakeList[4].num_keys = device->get_n_keys(); -#else - fakeList[4].num_keys = gdk_device_get_n_keys(device->gobj()); -#endif } else { fakeList[4].name = "Core Pointer"; fakeList[4].source = Gdk::SOURCE_MOUSE; |
