get_current_*: don't use outdated cache is these functions

Fixes https://gitlab.com/hyask/swaysome/-/issues/18
Thanks a lot @mahieujeremy for reporting that and providing a fix so quickly!
This commit is contained in:
Skia 2023-11-27 11:12:31 +01:00
parent 9da99893c4
commit aa3b47fbad

View file

@ -263,14 +263,18 @@ impl SwaySome {
}
fn get_current_output_index(&self) -> usize {
match self.outputs.iter().position(|x| x.focused) {
// Do not use `self.outputs`, as the information here could be outdated, especially the `focused` attribute
let outputs = self.get_outputs();
match outputs.iter().position(|x| x.focused) {
Some(i) => i,
None => panic!("WTF! No focused output???"),
}
}
fn get_current_output_name(&self) -> String {
let focused_output_index = match self.outputs.iter().find(|x| x.focused) {
// Do not use `self.outputs`, as the information here could be outdated, especially the `focused` attribute
let outputs = self.get_outputs();
let focused_output_index = match outputs.iter().find(|x| x.focused) {
Some(i) => i.name.as_str(),
None => panic!("WTF! No focused output???"),
};
@ -279,17 +283,12 @@ impl SwaySome {
}
fn get_current_workspace_index(&self) -> usize {
self.workspaces
// Do not use `self.outputs`, as the information here could be outdated, especially the `focused` attribute
let outputs = self.get_outputs();
// Do not use `self.workspaces`, as the information here could be outdated, especially the `visible` attribute
self.get_workspaces()
.iter()
.find(|w| {
w.visible
&& self
.outputs
.iter()
.find(|o| o.name == w.output)
.unwrap()
.focused
})
.find(|w| w.visible && outputs.iter().find(|o| o.name == w.output).unwrap().focused)
.unwrap()
.num
}