From f6b61bb60e8f3a090ad9bbbdf88470eb5c7c3158 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 17 May 2003 15:16:45 +0000 Subject: [PATCH] disallow drag events on title buttons. dont redraw title button when the wheel buttons are used on them. --- openbox/event.c | 52 +++++++++++++++++++++++-------------------- plugins/mouse/mouse.c | 14 ++++++++++-- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/openbox/event.c b/openbox/event.c index 732857e0..900567c0 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -538,30 +538,34 @@ static void event_handle_client(Client *client, XEvent *e) switch (e->type) { case ButtonPress: case ButtonRelease: - switch (frame_context(client, e->xbutton.window)) { - case Context_Maximize: - client->frame->max_press = (e->type == ButtonPress); - framerender_frame(client->frame); - break; - case Context_Close: - client->frame->close_press = (e->type == ButtonPress); - framerender_frame(client->frame); - break; - case Context_Iconify: - client->frame->iconify_press = (e->type == ButtonPress); - framerender_frame(client->frame); - break; - case Context_AllDesktops: - client->frame->desk_press = (e->type == ButtonPress); - framerender_frame(client->frame); - break; - case Context_Shade: - client->frame->shade_press = (e->type == ButtonPress); - framerender_frame(client->frame); - break; - default: - /* nothing changes with clicks for any other contexts */ - break; + /* Wheel buttons don't draw because they are an instant click, so it + is a waste of resources to go drawing it. */ + if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) { + switch (frame_context(client, e->xbutton.window)) { + case Context_Maximize: + client->frame->max_press = (e->type == ButtonPress); + framerender_frame(client->frame); + break; + case Context_Close: + client->frame->close_press = (e->type == ButtonPress); + framerender_frame(client->frame); + break; + case Context_Iconify: + client->frame->iconify_press = (e->type == ButtonPress); + framerender_frame(client->frame); + break; + case Context_AllDesktops: + client->frame->desk_press = (e->type == ButtonPress); + framerender_frame(client->frame); + break; + case Context_Shade: + client->frame->shade_press = (e->type == ButtonPress); + framerender_frame(client->frame); + break; + default: + /* nothing changes with clicks for any other contexts */ + break; + } } break; case FocusIn: diff --git a/plugins/mouse/mouse.c b/plugins/mouse/mouse.c index 0d0b8fd9..e39720cb 100644 --- a/plugins/mouse/mouse.c +++ b/plugins/mouse/mouse.c @@ -288,6 +288,18 @@ static void event(ObEvent *e, void *foo) ABS(e->data.x.e->xmotion.y_root - py) >= threshold) { guint32 corner; + context = frame_context(e->data.x.client, + e->data.x.e->xmotion.window); + + /* You can't drag on buttons */ + if (context == Context_Maximize || + context == Context_AllDesktops || + context == Context_Shade || + context == Context_Iconify || + context == Context_Icon || + context == Context_Close) + break; + if (!e->data.x.client) corner = prop_atoms.net_wm_moveresize_size_bottomright; else @@ -306,8 +318,6 @@ static void event(ObEvent *e, void *foo) e->data.x.client->area.height + e->data.x.client->frame->size.top + e->data.x.client->frame->size.bottom); - context = frame_context(e->data.x.client, - e->data.x.e->xmotion.window); fire_motion(MouseAction_Motion, context, e->data.x.client, state, button, e->data.x.e->xmotion.x_root, -- 2.39.2