summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/config.c4
-rw-r--r--openbox/config.h3
-rw-r--r--openbox/focus.c5
3 files changed, 10 insertions, 2 deletions
diff --git a/openbox/config.c b/openbox/config.c
index 0c15b091..6163c12c 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -26,6 +26,7 @@
gboolean config_focus_new;
gboolean config_focus_follow;
+gboolean config_focus_last;
guint config_focus_delay;
guint config_focus_raise;
@@ -196,6 +197,8 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
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)))
@@ -479,6 +482,7 @@ void config_startup(ObParseInst *i)
{
config_focus_new = TRUE;
config_focus_follow = FALSE;
+ config_focus_last = TRUE;
config_focus_delay = 0;
config_focus_raise = FALSE;
diff --git a/openbox/config.h b/openbox/config.h
index 582da954..c228871e 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -30,6 +30,9 @@ struct _ObParseInst;
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
diff --git a/openbox/focus.c b/openbox/focus.c
index 22036917..541cf010 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -167,8 +167,9 @@ void focus_fallback(ObFocusFallbackType type)
*/
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 */