summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/event.c5
-rw-r--r--openbox/focus.h6
2 files changed, 9 insertions, 2 deletions
diff --git a/openbox/event.c b/openbox/event.c
index cfc823b2..5d19e897 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -452,6 +452,7 @@ static void event_process(const XEvent *ec, gpointer data)
ob_debug("UNKNOWN FOCUS %s (d %d, m %d) window 0x%x\n",
(e->type == FocusIn ? "IN" : "OUT"),
detail, mode, window);
+ }
#endif
event_set_lasttime(e);
@@ -523,10 +524,11 @@ static void event_process(const XEvent *ec, gpointer data)
if (e->type == ButtonPress || e->type == ButtonRelease ||
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);
+ }
}
}
}
@@ -678,6 +680,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
}
/* This client is no longer focused, so show that */
+ focus_hilite = NULL;
frame_adjust_focus(client->frame, FALSE);
client_calc_layer(client);
break;
diff --git a/openbox/focus.h b/openbox/focus.h
index ab13fc5e..81cd5ffe 100644
--- a/openbox/focus.h
+++ b/openbox/focus.h
@@ -30,7 +30,11 @@ struct _ObClient;
/*! The client which is currently focused */
extern struct _ObClient *focus_client;
/*! The client which is being decorated as focused, not always matching the
- real focus, but this is used to track it so that it can be resolved to match
+ real focus, but this is used to track it so that it can be resolved to match.
+
+ This is for when you change desktops. We know which window is *going to be*
+ focused, so we hilight it. But since it's hilighted, we also want
+ keybindings to go to it, which is really what this is for.
*/
extern struct _ObClient *focus_hilite;
/*! The client which appears focused during a focus cycle operation */