From 09afad624f647247c3c2159558e7292d39ac3233 Mon Sep 17 00:00:00 2001 From: alex-ds13 <145657253+alex-ds13@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:33:06 +0100 Subject: [PATCH] fix(wm): correct monitor index preference handling --- komorebi/src/windows_api.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/komorebi/src/windows_api.rs b/komorebi/src/windows_api.rs index aaacb245..6548c0d4 100644 --- a/komorebi/src/windows_api.rs +++ b/komorebi/src/windows_api.rs @@ -300,14 +300,21 @@ impl WindowsApi { } } - if monitors.elements().is_empty() { - monitors.elements_mut().push_back(m); - } else if let Some(preference) = index_preference { - while *preference > monitors.elements().len() { + if let Some(preference) = index_preference { + while *preference >= monitors.elements().len() { monitors.elements_mut().push_back(Monitor::placeholder()); } - monitors.elements_mut().insert(*preference, m); + let current_name = monitors + .elements_mut() + .get(*preference) + .map_or("", |m| m.name()); + if current_name == "PLACEHOLDER" { + let _ = monitors.elements_mut().remove(*preference); + monitors.elements_mut().insert(*preference, m); + } else { + monitors.elements_mut().insert(*preference, m); + } } else { monitors.elements_mut().push_back(m); }