From 71940dae6fd5673f0c682247216e6c989545bf9e Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Mon, 11 Feb 2008 18:06:22 +0100 Subject: Fix some typos in comments. --- openbox/event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'openbox/event.c') diff --git a/openbox/event.c b/openbox/event.c index ea249712..2d3ececa 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -855,7 +855,7 @@ static void event_handle_client(ObClient *client, XEvent *e) case ButtonRelease: /* Wheel buttons don't draw because they are an instant click, so it is a waste of resources to go drawing it. - if the user is doing an intereactive thing, or has a menu open then + if the user is doing an interactive thing, or has a menu open then the mouse is grabbed (possibly) and if we get these events we don't want to deal with them */ -- cgit v1.2.3 From 041d17373e046b5ee6667b10c1492bb518bac097 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 18 Feb 2008 17:12:38 -0500 Subject: Fix button press behaviours. On LeaveNotify, make the button no longer pressed. On MotionNotify, only make it hovered if no button is pressed down. On EnterNotify, make it hovered or pressed as appropriate. This fixes case where you left-click and hold on a button, then right click to open the menu - this used to leave the button in a pressed state. --- openbox/event.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'openbox/event.c') diff --git a/openbox/event.c b/openbox/event.c index 2d3ececa..28c13a2a 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -843,6 +843,7 @@ static void event_handle_client(ObClient *client, XEvent *e) ObFrameContext con; static gint px = -1, py = -1; static guint pb = 0; + static ObFrameContext pcon = OB_FRAME_CONTEXT_NONE; switch (e->type) { case ButtonPress: @@ -851,6 +852,10 @@ static void event_handle_client(ObClient *client, XEvent *e) pb = e->xbutton.button; px = e->xbutton.x; py = e->xbutton.y; + + pcon = frame_context(client, e->xbutton.window, px, py); + pcon = mouse_button_frame_context(pcon, e->xbutton.button, + e->xbutton.state); } case ButtonRelease: /* Wheel buttons don't draw because they are an instant click, so it @@ -868,7 +873,7 @@ static void event_handle_client(ObClient *client, XEvent *e) e->xbutton.state); if (e->type == ButtonRelease && e->xbutton.button == pb) - pb = 0, px = py = -1; + pb = 0, px = py = -1, pcon = OB_FRAME_CONTEXT_NONE; switch (con) { case OB_FRAME_CONTEXT_MAXIMIZE: @@ -922,31 +927,31 @@ static void event_handle_client(ObClient *client, XEvent *e) } break; case OB_FRAME_CONTEXT_MAXIMIZE: - if (!client->frame->max_hover) { + if (!client->frame->max_hover && !pb) { client->frame->max_hover = TRUE; frame_adjust_state(client->frame); } break; case OB_FRAME_CONTEXT_ALLDESKTOPS: - if (!client->frame->desk_hover) { + if (!client->frame->desk_hover && !pb) { client->frame->desk_hover = TRUE; frame_adjust_state(client->frame); } break; case OB_FRAME_CONTEXT_SHADE: - if (!client->frame->shade_hover) { + if (!client->frame->shade_hover && !pb) { client->frame->shade_hover = TRUE; frame_adjust_state(client->frame); } break; case OB_FRAME_CONTEXT_ICONIFY: - if (!client->frame->iconify_hover) { + if (!client->frame->iconify_hover && !pb) { client->frame->iconify_hover = TRUE; frame_adjust_state(client->frame); } break; case OB_FRAME_CONTEXT_CLOSE: - if (!client->frame->close_hover) { + if (!client->frame->close_hover && !pb) { client->frame->close_hover = TRUE; frame_adjust_state(client->frame); } @@ -977,22 +982,27 @@ static void event_handle_client(ObClient *client, XEvent *e) break; case OB_FRAME_CONTEXT_MAXIMIZE: client->frame->max_hover = FALSE; + client->frame->max_press = FALSE; frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ALLDESKTOPS: client->frame->desk_hover = FALSE; + client->frame->desk_press = FALSE; frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_SHADE: client->frame->shade_hover = FALSE; + client->frame->shade_press = FALSE; frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ICONIFY: client->frame->iconify_hover = FALSE; + client->frame->iconify_press = FALSE; frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_CLOSE: client->frame->close_hover = FALSE; + client->frame->close_press = FALSE; frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_FRAME: @@ -1031,22 +1041,27 @@ static void event_handle_client(ObClient *client, XEvent *e) switch (con) { case OB_FRAME_CONTEXT_MAXIMIZE: client->frame->max_hover = TRUE; + client->frame->max_press = (con == pcon); frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ALLDESKTOPS: client->frame->desk_hover = TRUE; + client->frame->desk_press = (con == pcon); frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_SHADE: client->frame->shade_hover = TRUE; + client->frame->shade_press = (con == pcon); frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_ICONIFY: client->frame->iconify_hover = TRUE; + client->frame->iconify_press = (con == pcon); frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_CLOSE: client->frame->close_hover = TRUE; + client->frame->close_press = (con == pcon); frame_adjust_state(client->frame); break; case OB_FRAME_CONTEXT_FRAME: -- cgit v1.2.3