summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2004-02-24 20:26:08 +0000
committerMikael Magnusson <mikachu@comhem.se>2004-02-24 20:26:08 +0000
commitdd7c6ad734e88e6f2ad053f090bd5b04c5692fb4 (patch)
treeaa4ec13c9bbaddf13fbd48b43a56c0ec1d3ada4c /openbox
parenta5451fa6fa9b18c4125c832ab64be7f4357e7ba8 (diff)
add back the focusLast option for the "i lost count"th time
Diffstat (limited to 'openbox')
-rw-r--r--openbox/config.c4
-rw-r--r--openbox/config.h2
-rw-r--r--openbox/focus.c8
3 files changed, 10 insertions, 4 deletions
diff --git a/openbox/config.c b/openbox/config.c
index d362324c..293174df 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -28,6 +28,7 @@ gboolean config_focus_new;
gboolean config_focus_follow;
guint config_focus_delay;
gboolean config_focus_raise;
+gboolean config_focus_last;
ObPlacePolicy config_place_policy;
@@ -205,6 +206,8 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
config_focus_delay = parse_int(doc, n) * 1000;
if ((n = parse_find_node("raiseOnFocus", node)))
config_focus_raise = parse_bool(doc, n);
+ if ((n = parse_find_node("focusLast", node)))
+ config_focus_last = parse_bool(doc, n);
}
static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
@@ -494,6 +497,7 @@ void config_startup(ObParseInst *i)
config_focus_follow = FALSE;
config_focus_delay = 0;
config_focus_raise = FALSE;
+ config_focus_last = FALSE;
parse_register(i, "focus", parse_focus, NULL);
diff --git a/openbox/config.h b/openbox/config.h
index 4d3f3e5e..63ea5a6d 100644
--- a/openbox/config.h
+++ b/openbox/config.h
@@ -36,6 +36,8 @@ extern guint config_focus_delay;
/*! If windows should automatically be raised when they are focused in
focus follows mouse */
extern gboolean config_focus_raise;
+/*! Focus the last focused window, not under the mouse, in follow mouse mode */
+extern gboolean config_focus_last;
extern ObPlacePolicy config_place_policy;
diff --git a/openbox/focus.c b/openbox/focus.c
index ba6b7b67..c990cf84 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -61,10 +61,10 @@ static void focus_cycle_destructor(ObClient *client, gpointer data)
}
static Window createWindow(Window parent, gulong mask,
- XSetWindowAttributes *attrib)
+ XSetWindowAttributes *attrib)
{
return XCreateWindow(ob_display, parent, 0, 0, 1, 1, 0,
- RrDepth(ob_rr_inst), InputOutput,
+ RrDepth(ob_rr_inst), InputOutput,
RrVisual(ob_rr_inst), mask, attrib);
}
@@ -252,7 +252,7 @@ ObClient* focus_fallback_target(ObFocusFallbackType type)
if (old->transient_for) {
gboolean trans = FALSE;
- if (!config_focus_follow)
+ if (!config_focus_follow || config_focus_last)
trans = TRUE;
else {
if ((target = client_under_pointer()) &&
@@ -289,7 +289,7 @@ ObClient* focus_fallback_target(ObFocusFallbackType type)
}
}
- if (config_focus_follow) {
+ if (config_focus_follow && !config_focus_last) {
if ((target = client_under_pointer()))
if (client_normal(target) && client_can_focus(target))
return target;