all repos — openbox @ dce6247e693a4880b1f77252460d445825efc13c

openbox fork - make it a bit more like ryudo

really fix focus_last?
Mikael Magnusson mikachu@comhem.se
commit

dce6247e693a4880b1f77252460d445825efc13c

parent

e3c52da8c3de8788aecb4ac15f428316e644e6ff

4 files changed, 8 insertions(+), 3 deletions(-)

jump to
M openbox/action.copenbox/action.c

@@ -1071,7 +1071,8 @@ }

void action_unfocus (union ActionData *data) { - client_unfocus(data->client.any.c); + if (data->client.any.c == focus_client); + focus_fallback(OB_FOCUS_FALLBACK_UNFOCUSING); } void action_iconify(union ActionData *data)
M openbox/client.copenbox/client.c

@@ -2833,13 +2833,15 @@ XSync(ob_display, FALSE);

return TRUE; } +/* Used when the current client is closed, focus_last will then prevent + * focus from going to the mouse pointer */ void client_unfocus(ObClient *self) { if (focus_client == self) { #ifdef DEBUG_FOCUS ob_debug("client_unfocus for %lx\n", self->window); #endif - focus_fallback(OB_FOCUS_FALLBACK_UNFOCUSING); + focus_fallback(OB_FOCUS_FALLBACK_CLOSED); } }
M openbox/focus.copenbox/focus.c

@@ -249,7 +249,8 @@ ObClient *target = NULL;

old = focus_client; - if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) { + if ((type == OB_FOCUS_FALLBACK_UNFOCUSING + || type == OB_FOCUS_FALLBACK_CLOSED) && old) { if (old->transient_for) { gboolean trans = FALSE;
M openbox/focus.hopenbox/focus.h

@@ -48,6 +48,7 @@

typedef enum { OB_FOCUS_FALLBACK_UNFOCUSING, /*!< forcefully remove focus from the current window */ + OB_FOCUS_FALLBACK_CLOSED, /*!< closed the window with focus */ OB_FOCUS_FALLBACK_NOFOCUS /*!< nothing has focus for some reason */ } ObFocusFallbackType;