From 7f597a53131961d25fff2566f3ccc67da870e5f6 Mon Sep 17 00:00:00 2001 From: Bastien Dejean Date: Sat, 6 Oct 2012 11:36:16 +0200 Subject: [PATCH] On button release: use the stored window When the mouse button was released the window under the pointer was considered as being the window being previously moved. This is false in the general case and therefore, the window stored inside the frozen_state variable must be used. --- events.c | 17 +++++------------ events.h | 2 +- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/events.c b/events.c index 4cbf221..62d2831 100644 --- a/events.c +++ b/events.c @@ -42,7 +42,7 @@ void handle_event(xcb_generic_event_t *evt) motion_notify(evt); break; case XCB_BUTTON_RELEASE: - button_release(evt); + button_release(); break; default: break; @@ -223,7 +223,7 @@ void unmap_notify(xcb_generic_event_t *evt) { xcb_unmap_notify_event_t *e = (xcb_unmap_notify_event_t *) evt; - PRINTF("unmap notify %X %u\n", e->window); + PRINTF("unmap notify %X\n", e->window); window_location_t loc; if (locate_window(e->window, &loc)) { @@ -385,19 +385,12 @@ void motion_notify(xcb_generic_event_t *evt) } } -void button_release(xcb_generic_event_t *evt) +void button_release(void) { - xcb_button_press_event_t *e = (xcb_button_press_event_t *) evt; - xcb_window_t win = e->child; - - PRINTF("button release %X\n", win); + PUTS("button release"); xcb_ungrab_pointer(dpy, XCB_CURRENT_TIME); - - window_location_t loc; - if (locate_window(win, &loc)) { - update_floating_rectangle(loc.node->client); - } + update_floating_rectangle(frozen_pointer->node->client); } void handle_state(node_t *n, xcb_atom_t state, unsigned int action) diff --git a/events.h b/events.h index dd27876..46f49d5 100644 --- a/events.h +++ b/events.h @@ -13,7 +13,7 @@ void client_message(xcb_generic_event_t *); void property_notify(xcb_generic_event_t *); void button_press(xcb_generic_event_t *); void motion_notify(xcb_generic_event_t *); -void button_release(xcb_generic_event_t *); +void button_release(void); void handle_state(node_t *, xcb_atom_t, unsigned int); #endif -- 2.44.0