diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2015-02-12 22:03:38 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2015-02-12 22:03:38 +0000 |
| commit | b4613f06621c368e0df8b880d2e4490ac73c2284 (patch) | |
| tree | f8c3e0e370675e0c037a72b5dbce4902c7571811 /src | |
| parent | use up-to-date document units when intiallizing viewbox during a file load (diff) | |
| download | inkscape-b4613f06621c368e0df8b880d2e4490ac73c2284.tar.gz inkscape-b4613f06621c368e0df8b880d2e4490ac73c2284.zip | |
desktop-events: Get rid of GList usage.
(bzr r13919)
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop-events.cpp | 41 | ||||
| -rw-r--r-- | src/desktop-events.h | 2 |
2 files changed, 23 insertions, 20 deletions
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index 5dbe0f8dc..e80e5f6c1 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -17,13 +17,19 @@ #endif #include <map> #include <string> + #include "ui/dialog/guides.h" +#include "desktop-events.h" + +#if WITH_GTKMM_3_0 +# include <gdkmm/devicemanager.h> +#endif + #include <2geom/line.h> #include <2geom/angle.h> #include <glibmm/i18n.h> #include "desktop.h" -#include "desktop-events.h" #include "ui/dialog-events.h" #include "display/canvas-axonomgrid.h" @@ -611,36 +617,35 @@ static GdkInputSource lastType = GDK_SOURCE_MOUSE; static void init_extended() { - std::string avoidName = "pad"; + Glib::ustring avoidName("pad"); + Glib::RefPtr<Gdk::Display> display = Gdk::Display::get_default(); #if GTK_CHECK_VERSION(3,0,0) - GdkDisplay *display = gdk_display_get_default(); - GdkDeviceManager *dm = gdk_display_get_device_manager(display); - GList* devices = gdk_device_manager_list_devices(dm, GDK_DEVICE_TYPE_SLAVE); + Glib::RefPtr<const Gdk::DeviceManager> dm = display->get_device_manager(); + std::vector< Glib::RefPtr<const Gdk::Device> > devices = dm->list_devices(Gdk::DEVICE_TYPE_SLAVE); #else - GList* devices = gdk_devices_list(); + std::vector< Glib::RefPtr<const Gdk::Device> > devices = display->list_devices(); #endif - if ( devices ) { - for ( GList* curr = devices; curr; curr = g_list_next(curr) ) { - GdkDevice* dev = reinterpret_cast<GdkDevice*>(curr->data); - gchar const *devName = gdk_device_get_name(dev); - GdkInputSource devSrc = gdk_device_get_source(dev); + if ( !devices.empty() ) { + for ( std::vector< Glib::RefPtr<const Gdk::Device> >::const_iterator dev = devices.begin(); dev != devices.end(); ++dev ) { + Glib::ustring const devName = (*dev)->get_name(); + Gdk::InputSource devSrc = (*dev)->get_source(); - if ( devName + if ( !devName.empty() && (avoidName != devName) - && (devSrc != GDK_SOURCE_MOUSE) ) { + && (devSrc != Gdk::SOURCE_MOUSE) ) { // g_message("Adding '%s' as [%d]", devName, devSrc); // Set the initial tool for the device switch ( devSrc ) { - case GDK_SOURCE_PEN: + case Gdk::SOURCE_PEN: toolToUse[devName] = TOOLS_CALLIGRAPHIC; break; - case GDK_SOURCE_ERASER: + case Gdk::SOURCE_ERASER: toolToUse[devName] = TOOLS_ERASER; break; - case GDK_SOURCE_CURSOR: + case Gdk::SOURCE_CURSOR: toolToUse[devName] = TOOLS_SELECT; break; default: @@ -651,10 +656,6 @@ static void init_extended() } } } - -#if GTK_CHECK_VERSION(3,0,0) - g_list_free(devices); -#endif } diff --git a/src/desktop-events.h b/src/desktop-events.h index dc85e563b..8dae9b406 100644 --- a/src/desktop-events.h +++ b/src/desktop-events.h @@ -13,6 +13,8 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#include <glib.h> + class SPDesktop; struct SPDesktopWidget; struct SPCanvasItem; |
