gboolean config_focus_new;
gboolean config_focus_follow;
+gboolean config_focus_last;
guint config_focus_delay;
guint config_focus_raise;
config_focus_new = parse_bool(doc, n);
if ((n = parse_find_node("followMouse", node)))
config_focus_follow = parse_bool(doc, n);
+ if ((n = parse_find_node("focusLast", node)))
+ config_focus_last = parse_bool(doc, n);
if ((n = parse_find_node("focusDelay", node)))
config_focus_delay = parse_int(doc, n) * 1000;
if ((n = parse_find_node("raiseOnFocus", node)))
{
config_focus_new = TRUE;
config_focus_follow = FALSE;
+ config_focus_last = TRUE;
config_focus_delay = 0;
config_focus_raise = FALSE;
extern gboolean config_focus_new;
/*! Focus windows when the mouse enters them */
extern gboolean config_focus_follow;
+/*! Should focus stay under the mouse when there is nothing focused or go to
+ the last used window */
+extern gboolean config_focus_last;
/*! Timeout for focusing windows on focus follows mouse, in microseconds */
extern guint config_focus_delay;
/*! If windows should automatically be raised when they are focused in
*/
focus_set_client(NULL);
- if (config_focus_follow && focus_under_pointer())
- return;
+ if (!config_focus_last && config_focus_follow)
+ if (focus_under_pointer())
+ return;
if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
/* try for transient relations */