Mercurial > dwindows
comparison gtk4/dw.c @ 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 |
comparison
equal
deleted
inserted
replaced
2277:ba81894924cb | 2278:18028fa53ef2 |
---|---|
464 int retval = FALSE; | 464 int retval = FALSE; |
465 | 465 |
466 if(work.window) | 466 if(work.window) |
467 { | 467 { |
468 int (*motionfunc)(HWND, int, int, int, void *) = work.func; | 468 int (*motionfunc)(HWND, int, int, int, void *) = work.func; |
469 GdkEvent *event = gtk_event_controller_get_current_event(GDK_EVENT_CONTROLLER(controller)); | 469 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller)); |
470 GdkModifierType state = gdk_event_get_modifier_state(event); | 470 GdkModifierType state = gdk_event_get_modifier_state(event); |
471 int keys = 0; | 471 int keys = 0; |
472 | 472 |
473 if (state & GDK_BUTTON1_MASK) | 473 if (state & GDK_BUTTON1_MASK) |
474 keys = DW_BUTTON1_MASK; | 474 keys = DW_BUTTON1_MASK; |
790 int retval = FALSE; | 790 int retval = FALSE; |
791 | 791 |
792 if(work.window && GTK_IS_WIDGET(work.window)) | 792 if(work.window && GTK_IS_WIDGET(work.window)) |
793 { | 793 { |
794 GtkWidget *widget = work.window; | 794 GtkWidget *widget = work.window; |
795 GdkEvent *event = gtk_event_controller_get_current_event(GDK_EVENT_CONTROLLER(controller)); | 795 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller)); |
796 GdkEventType type = gdk_event_get_event_type(event); | |
796 gint button = gdk_button_event_get_button(event); | 797 gint button = gdk_button_event_get_button(event); |
797 GdkEventType type = gdk_event_get_event_type(event); | |
798 | 798 |
799 /* TODO: Make sure this works. | 799 /* TODO: Make sure this works. |
800 Handle both key and button events together */ | 800 Handle both key and button events together */ |
801 if((type == GDK_BUTTON_PRESS && button == 1) || keyval == VK_RETURN) | 801 if((type == GDK_BUTTON_PRESS && button == 1) || keyval == VK_RETURN) |
802 { | 802 { |
2507 * x: Pointer to variable to store X coordinate. | 2507 * x: Pointer to variable to store X coordinate. |
2508 * y: Pointer to variable to store Y coordinate. | 2508 * y: Pointer to variable to store Y coordinate. |
2509 */ | 2509 */ |
2510 void dw_pointer_query_pos(long *x, long *y) | 2510 void dw_pointer_query_pos(long *x, long *y) |
2511 { | 2511 { |
2512 /* TODO: See if this is possible in GTK4 */ | 2512 GdkSeat *seat = gdk_display_get_default_seat(gdk_display_get_default()); |
2513 GdkDevice *mouse = gdk_seat_get_pointer(seat); | |
2514 double dx, dy; | |
2515 | |
2516 gdk_device_get_surface_at_position(mouse, &dx, &dy); | |
2517 | |
2513 if(x) | 2518 if(x) |
2514 *x = 0; | 2519 *x = (long)dx; |
2515 if(y) | 2520 if(y) |
2516 *y = 0; | 2521 *y = (long)dy; |
2517 } | 2522 } |
2518 | 2523 |
2519 /* | 2524 /* |
2520 * Sets the X and Y coordinates of the mouse pointer. | 2525 * Sets the X and Y coordinates of the mouse pointer. |
2521 * Parameters: | 2526 * Parameters: |