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: