# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1612311601 0 # Node ID 18028fa53ef2abf6ca3eabee488866d20abdc820 # Parent ba81894924cbf33b04fd9242d06b34d9930847b3 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo. diff -r ba81894924cb -r 18028fa53ef2 gtk4/dw.c --- 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; } /*