update focus_hilite appropriately for when changing desktops
Dana Jansens danakj@orodu.net
2 files changed,
9 insertions(+),
2 deletions(-)
M
openbox/event.c
→
openbox/event.c
@@ -452,6 +452,7 @@ else
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 @@
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 @@ }
} /* This client is no longer focused, so show that */ + focus_hilite = NULL; frame_adjust_focus(client->frame, FALSE); client_calc_layer(client); break;
M
openbox/focus.h
→
openbox/focus.h
@@ -30,7 +30,11 @@
/*! 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 */