summaryrefslogtreecommitdiffstats
path: root/src/knot.cpp
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-06-23 12:55:01 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-06-23 12:55:01 +0000
commit3105af2e1edcb50e3d2e67f04f859165de2f5951 (patch)
tree68822dae76f1ff07ec91b8b958e28e7b265cfe5a /src/knot.cpp
parentFix missing glibmm header (diff)
downloadinkscape-3105af2e1edcb50e3d2e67f04f859165de2f5951.tar.gz
inkscape-3105af2e1edcb50e3d2e67f04f859165de2f5951.zip
Migrate to new device pointer API for GTK+ 3
(bzr r11511)
Diffstat (limited to 'src/knot.cpp')
-rw-r--r--src/knot.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/knot.cpp b/src/knot.cpp
index e6fd5c044..7a20f0c28 100644
--- a/src/knot.cpp
+++ b/src/knot.cpp
@@ -227,10 +227,21 @@ static void sp_knot_dispose(GObject *object)
{
SPKnot *knot = static_cast<SPKnot *>(object);
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkDisplay *display = gdk_display_get_default();
+ GdkDeviceManager *dm = gdk_display_get_device_manager(display);
+ GdkDevice *device = gdk_device_manager_get_client_pointer(dm);
+
+ if ((knot->flags & SP_KNOT_GRABBED) && gdk_display_device_is_grabbed(display, device)) {
+ // This happens e.g. when deleting a node in node tool while dragging it
+ gdk_device_ungrab(device, GDK_CURRENT_TIME);
+ }
+#else
if ((knot->flags & SP_KNOT_GRABBED) && gdk_pointer_is_grabbed ()) {
// This happens e.g. when deleting a node in node tool while dragging it
gdk_pointer_ungrab (GDK_CURRENT_TIME);
}
+#endif
if (knot->_event_handler_id > 0)
{