diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index 36f010740a..53a5daf434 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -119,7 +119,7 @@ gdk_device_win32_get_state (GdkDevice *device, { gint x_int, y_int; - gdk_window_get_pointer (window, &x_int, &y_int, mask); + gdk_window_get_device_position (window, device, &x_int, &y_int, mask); if (axes) { diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index 4d26b24a81..fa064bb2a7 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -885,6 +885,7 @@ _gdk_input_other_event (GdkEvent *event, GdkDisplay *display; GdkDeviceWintab *source_device = NULL; GdkDeviceGrabInfo *last_grab; + GdkDevice *device = NULL; GdkEventMask masktest; guint key_state; POINT pt; @@ -907,7 +908,8 @@ _gdk_input_other_event (GdkEvent *event, device_manager = GDK_DEVICE_MANAGER_WIN32 (gdk_display_get_device_manager (_gdk_display)); - window = gdk_window_at_pointer (&x, &y); + device = gdk_event_get_device (event); + window = gdk_device_get_window_at_position (device, &x, &y); if (window == NULL) window = _gdk_root; diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index afa20742d8..31eb5120ad 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2713,17 +2713,13 @@ gdk_event_translate (MSG *msg, /* Break grabs on unmap or minimize */ if (windowpos->flags & SWP_HIDEWINDOW || ((windowpos->flags & SWP_STATECHANGED) && IsIconic (msg->hwnd))) - { - if (pointer_grab != NULL) - { - if (pointer_grab->window == window) - gdk_pointer_ungrab (msg->time); - } + { + GdkDevice *device = gdk_device_manager_get_client_pointer (device_manager); - if (keyboard_grab != NULL && - keyboard_grab->window == window) - gdk_keyboard_ungrab (msg->time); - } + if ((pointer_grab != NULL && pointer_grab->window == window) || + (keyboard_grab != NULL && keyboard_grab->window == window)) + gdk_device_ungrab (device, msg -> time); + } /* Send MAP events */ if ((windowpos->flags & SWP_SHOWWINDOW) && @@ -3115,15 +3111,12 @@ gdk_event_translate (MSG *msg, break; case WM_NCDESTROY: - if (pointer_grab != NULL) - { - if (pointer_grab->window == window) - gdk_pointer_ungrab (msg->time); - } - - if (keyboard_grab && - keyboard_grab->window == window) - gdk_keyboard_ungrab (msg->time); + if ((pointer_grab != NULL && pointer_grab -> window == window) || + (keyboard_grab && keyboard_grab -> window == window)) + { + GdkDevice *device = gdk_device_manager_get_client_pointer (device_manager); + gdk_device_ungrab (device, msg -> time); + } if ((window != NULL) && (msg->hwnd != GetDesktopWindow ())) gdk_window_destroy_notify (window); diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 273e53cf7b..bf32dbe73e 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -2655,7 +2655,7 @@ gdk_win32_window_begin_resize_drag (GdkWindow *window, /* Must break the automatic grab that occured when the button was * pressed, otherwise it won't work. */ - gdk_display_pointer_ungrab (_gdk_display, 0); + gdk_device_ungrab (device, 0); switch (edge) { @@ -2722,7 +2722,7 @@ gdk_win32_window_begin_move_drag (GdkWindow *window, /* Must break the automatic grab that occured when the button was pressed, * otherwise it won't work. */ - gdk_display_pointer_ungrab (_gdk_display, 0); + gdk_device_ungrab (device, 0); DefWindowProcW (GDK_WINDOW_HWND (window), WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM (root_x - _gdk_offset_x, root_y - _gdk_offset_y));