diff --git a/src/focus.rs b/src/focus.rs index d4b5deb7e..e033a49c4 100644 --- a/src/focus.rs +++ b/src/focus.rs @@ -43,7 +43,19 @@ fn resolve_focus_target(core: &CoreCtx, win: Option) -> Option (Option< if let Some(mon) = core.globals_mut().monitor_mut(sel_mon_id) { mon.sel = target; + if let Some(t) = target { + mon.tag_focus_history.insert(mon.selected_tags(), t); + } } (target, selection_state_changed) diff --git a/src/types/monitor.rs b/src/types/monitor.rs index d06e03ef1..06d9667a9 100644 --- a/src/types/monitor.rs +++ b/src/types/monitor.rs @@ -74,6 +74,8 @@ pub struct Monitor { pub clients: Vec, /// Currently selected client. pub sel: Option, + /// Focus history per tag mask. + pub tag_focus_history: HashMap, /// Overlay window. pub overlay: Option, /// Stack list (stacking order). @@ -112,6 +114,7 @@ impl Default for Monitor { tags: Vec::new(), clients: Vec::new(), sel: None, + tag_focus_history: HashMap::new(), overlay: None, stack: Vec::new(), fullscreen: None,