static gboolean event_ignore(XEvent *e, ObClient *client)
{
switch(e->type) {
- case EnterNotify:
- case LeaveNotify:
- return keyboard_interactively_grabbed();
case FocusIn:
case FocusOut:
if (!wanted_focusevent(e)) {
NULL, g_direct_equal, NULL);
if (e->type == ButtonPress || e->type == ButtonRelease ||
- e->type == MotionNotify)
+ e->type == MotionNotify) {
mouse_event(client, e);
- else if (e->type == KeyPress) {
+ } else if (e->type == KeyPress) {
keyboard_event((focus_cycle_target ? focus_cycle_target :
(focus_hilite ? focus_hilite : client)),
e);
frame_adjust_state(client->frame);
break;
case OB_FRAME_CONTEXT_FRAME:
+ if (keyboard_interactively_grabbed())
+ break;
if (config_focus_follow && config_focus_delay)
ob_main_loop_timeout_remove_data(ob_main_loop,
focus_delay_func,
frame_adjust_state(client->frame);
break;
case OB_FRAME_CONTEXT_FRAME:
+ if (keyboard_interactively_grabbed())
+ break;
if (e->xcrossing.mode == NotifyGrab ||
e->xcrossing.mode == NotifyUngrab)
{
static gboolean focus_delay_cmp(gconstpointer d1, gconstpointer d2)
{
- const ObFocusDelayData *f1 = d1, *f2 = d2;
- return f1->client == f2->client;
+ const ObFocusDelayData *f1 = d1;
+ return f1->client == d2;
}
static gboolean focus_delay_func(gpointer data)