[gtk: 2/9] gdk: add internal `gdk_surface_get_seat_from_event()`



commit a07a69e24e7522e53edaa895d4e363a92150eaf4
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Mon Mar 30 16:55:05 2020 +0200

    gdk: add internal `gdk_surface_get_seat_from_event()`
    
    This can come handy to get the seat from a surface/event.

 gdk/gdkinternals.h |  2 ++
 gdk/gdksurface.c   | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+)
---
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index 2af0cf36ca..21f75d7dc5 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -181,6 +181,8 @@ void gdk_surface_get_unscaled_size (GdkSurface *surface,
                                     int *unscaled_width,
                                     int *unscaled_height);
 gboolean gdk_surface_handle_event (GdkEvent       *event);
+GdkSeat * gdk_surface_get_seat_from_event (GdkSurface *surface,
+                                           GdkEvent    *event);
 
 /*****************************************
  * Interfaces provided by windowing code *
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 25d6efc7a8..7432a9b348 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -3015,3 +3015,22 @@ gdk_surface_translate_coordinates (GdkSurface *from,
 
   return TRUE;
 }
+
+GdkSeat *
+gdk_surface_get_seat_from_event (GdkSurface *surface,
+                                 GdkEvent   *event)
+{
+  if (event)
+    {
+      GdkDevice *device = gdk_event_get_device (event);
+      GdkSeat *seat = NULL;
+
+      device = gdk_event_get_device (event);
+      if (device)
+        seat = gdk_device_get_seat (device);
+
+      if (seat)
+        return seat;
+    }
+  return gdk_display_get_default_seat (surface->display);
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]