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 ButtonRelease:
/* 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)) {
is a waste of resources to go drawing it.
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 = mouse_button_frame_context(con, e->xbutton.button);
switch (con) {

View file

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