Mercurial > dwindows
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; } /*