From e221d9678540f1e16e7fda98c8afcdfe368b519e Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Fri, 22 Dec 2023 17:59:44 -0800 Subject: [PATCH] fix(wm): handle monitor index pref edge case This commit handles an edge case where the first registered display monitor has an index preference that is greater than the current length of the Ring data structure storing the monitors. re #612 --- komorebi/src/windows_callbacks.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/komorebi/src/windows_callbacks.rs b/komorebi/src/windows_callbacks.rs index d1826b23..8ca7e341 100644 --- a/komorebi/src/windows_callbacks.rs +++ b/komorebi/src/windows_callbacks.rs @@ -110,14 +110,16 @@ pub extern "system" fn enum_display_monitor( let display_index_preferences = DISPLAY_INDEX_PREFERENCES.lock(); for (index, device) in &*display_index_preferences { - if let Some(known_device) = m.device() { + if let Some(known_device) = m.device_id() { if device == known_device { index_preference = Option::from(index); } } } - if let Some(preference) = index_preference { + if monitors.elements().is_empty() { + monitors.elements_mut().push_back(m); + } else if let Some(preference) = index_preference { let current_len = monitors.elements().len(); if *preference > current_len { monitors.elements_mut().reserve(1);