ok, so, back out the last commit. owner events are passed thru so we get enter/leave notify events.

dont change frame decor from button presses during an interactive grab or
while a menu is open
This commit is contained in:
Dana Jansens 2007-05-08 00:40:01 +00:00
parent 26fc54c9a3
commit 5945d2e9c8
2 changed files with 12 additions and 5 deletions

View file

@ -709,8 +709,15 @@ static void event_handle_client(ObClient *client, XEvent *e)
case ButtonPress: case ButtonPress:
case ButtonRelease: case ButtonRelease:
/* Wheel buttons don't draw because they are an instant click, so it /* Wheel buttons don't draw because they are an instant click, so it
is a waste of resources to go drawing it. */ is a waste of resources to go drawing it.
if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) { if the user is doing an intereactive 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
*/
if (!(e->xbutton.button == 4 || e->xbutton.button == 5) &&
!keyboard_interactively_grabbed() &&
!menu_frame_visible)
{
con = frame_context(client, e->xbutton.window); con = frame_context(client, e->xbutton.window);
con = mouse_button_frame_context(con, e->xbutton.button); con = mouse_button_frame_context(con, e->xbutton.button);
switch (con) { switch (con) {

View file

@ -912,10 +912,10 @@ static gboolean menu_frame_show(ObMenuFrame *self)
if (menu_frame_visible == NULL) { if (menu_frame_visible == NULL) {
/* no menus shown yet */ /* no menus shown yet */
if (!grab_pointer(TRUE, FALSE, OB_CURSOR_POINTER)) if (!grab_pointer(TRUE, TRUE, OB_CURSOR_POINTER))
return FALSE; return FALSE;
if (!grab_keyboard(TRUE)) { if (!grab_keyboard(TRUE)) {
grab_pointer(FALSE, FALSE, OB_CURSOR_POINTER); grab_pointer(FALSE, TRUE, OB_CURSOR_POINTER);
return FALSE; return FALSE;
} }
} }
@ -1024,7 +1024,7 @@ void menu_frame_hide(ObMenuFrame *self)
if (menu_frame_visible == NULL) { if (menu_frame_visible == NULL) {
/* last menu shown */ /* last menu shown */
grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); grab_pointer(FALSE, TRUE, OB_CURSOR_NONE);
grab_keyboard(FALSE); grab_keyboard(FALSE);
} }