summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-05-17 15:16:45 +0000
committerDana Jansens <danakj@orodu.net>2003-05-17 15:16:45 +0000
commitf6b61bb60e8f3a090ad9bbbdf88470eb5c7c3158 (patch)
tree0ade5b96331d6a0cb7e3d7b92bdd953dd96e43f3
parent0b5f6589ba42869d4d1bdac61b3128dbc762424d (diff)
disallow drag events on title buttons.
dont redraw title button when the wheel buttons are used on them.
-rw-r--r--openbox/event.c52
-rw-r--r--plugins/mouse/mouse.c14
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,