changeset 2278:18028fa53ef2

GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 03 Feb 2021 00:20:01 +0000
parents ba81894924cb
children 70d666a0636f
files gtk4/dw.c
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gtk4/dw.c	Tue Feb 02 18:35:26 2021 +0000
+++ b/gtk4/dw.c	Wed Feb 03 00:20:01 2021 +0000
@@ -466,7 +466,7 @@
    if(work.window)
    {
       int (*motionfunc)(HWND, int, int, int, void *) = work.func;
-      GdkEvent *event = gtk_event_controller_get_current_event(GDK_EVENT_CONTROLLER(controller));
+      GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
       GdkModifierType state = gdk_event_get_modifier_state(event);
       int keys = 0;
 
@@ -792,9 +792,9 @@
    if(work.window && GTK_IS_WIDGET(work.window))
    {
       GtkWidget *widget = work.window;
-      GdkEvent *event = gtk_event_controller_get_current_event(GDK_EVENT_CONTROLLER(controller));
+      GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
+      GdkEventType type = gdk_event_get_event_type(event);
       gint button = gdk_button_event_get_button(event);
-      GdkEventType type = gdk_event_get_event_type(event);
 
       /* TODO: Make sure this works. 
          Handle both key and button events together */
@@ -2509,11 +2509,16 @@
  */
 void dw_pointer_query_pos(long *x, long *y)
 {
-   /* TODO: See if this is possible in GTK4 */
+   GdkSeat *seat = gdk_display_get_default_seat(gdk_display_get_default());
+   GdkDevice *mouse = gdk_seat_get_pointer(seat);
+   double dx, dy;
+  
+   gdk_device_get_surface_at_position(mouse, &dx, &dy);
+  
    if(x)
-      *x = 0;
+      *x = (long)dx;
    if(y)
-      *y = 0;
+      *y = (long)dy;
 }
 
 /*