diff --git a/komorebi/src/border_manager/mod.rs b/komorebi/src/border_manager/mod.rs index a35872af..3cd66255 100644 --- a/komorebi/src/border_manager/mod.rs +++ b/komorebi/src/border_manager/mod.rs @@ -105,11 +105,10 @@ fn event_rx() -> Receiver { } pub fn window_border(hwnd: isize) -> Option { - WINDOWS_BORDERS.lock().get(&hwnd).and_then(|id| { - BORDER_STATE.lock().get(id).map(|b| BorderInfo { - border_hwnd: b.hwnd, - window_kind: b.window_kind, - }) + let id = WINDOWS_BORDERS.lock().get(&hwnd)?.clone(); + BORDER_STATE.lock().get(&id).map(|b| BorderInfo { + border_hwnd: b.hwnd, + window_kind: b.window_kind, }) } @@ -136,6 +135,8 @@ pub fn destroy_all_borders() -> color_eyre::Result<()> { let _ = destroy_border(border); } + drop(borders); + WINDOWS_BORDERS.lock().clear(); let mut remaining_hwnds = vec![];