diff options
Diffstat (limited to 'src/knot.cpp')
| -rw-r--r-- | src/knot.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/knot.cpp b/src/knot.cpp index 0f27c5581..ff21f534a 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -129,12 +129,23 @@ SPKnot::SPKnot(SPDesktop *desktop, gchar const *tip) SPKnot::~SPKnot() { auto display = gdk_display_get_default(); + +#if GTK_CHECK_VERSION(3,20,0) + auto seat = gdk_display_get_default_seat(display); + auto device = gdk_seat_get_pointer(seat); +#else auto dm = gdk_display_get_device_manager(display); auto device = gdk_device_manager_get_client_pointer(dm); - +#endif + if ((this->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 + +#if GTK_CHECK_VERSION(3,20,0) + gdk_seat_ungrab(seat); +#else gdk_device_ungrab(device, GDK_CURRENT_TIME); +#endif } if (this->_event_handler_id > 0) { |
