Create fake enter events in fewer situations - avoiding times that you don't actually want them. Ignore event serials without using XSync, so that we aren't doing an XSync 100 times per minute - slow!

This commit is contained in:
Dana Jansens 2008-01-25 10:20:21 -05:00
parent 1d9991a0cd
commit 41aeb42af1
2 changed files with 6 additions and 9 deletions

View file

@ -339,9 +339,7 @@ void actions_client_move(ObActionsData *data, gboolean start)
else if (config_focus_follow &&
data->context != OB_FRAME_CONTEXT_CLIENT)
{
if (!data->button && data->client && !config_focus_under_mouse)
event_end_ignore_all_enters(ignore_start);
else {
if (data->button && config_focus_under_mouse) {
struct _ObClient *c;
/* usually this is sorta redundant, but with a press action
@ -355,6 +353,7 @@ void actions_client_move(ObActionsData *data, gboolean start)
"mouse-event action");
event_enter_client(c);
}
}
} else
event_end_ignore_all_enters(ignore_start);
}
}

View file

@ -1928,8 +1928,7 @@ void event_halt_focus_delay(void)
gulong event_start_ignore_all_enters(void)
{
XSync(ob_display, FALSE);
return LastKnownRequestProcessed(ob_display);
return NextRequest(ob_display);
}
static void event_ignore_enter_range(gulong start, gulong end)
@ -1948,13 +1947,12 @@ static void event_ignore_enter_range(gulong start, gulong end)
r->start, r->end);
/* increment the serial so we don't ignore events we weren't meant to */
XSync(ob_display, FALSE);
PROP_ERASE(screen_support_win, motif_wm_hints);
}
void event_end_ignore_all_enters(gulong start)
{
XSync(ob_display, FALSE);
event_ignore_enter_range(start, LastKnownRequestProcessed(ob_display));
event_ignore_enter_range(start, NextRequest(ob_display));
}
static gboolean is_enter_focus_event_ignored(XEvent *e)