diff --git a/crates/gpui/src/platform/windows/events.rs b/crates/gpui/src/platform/windows/events.rs index 62fd9a4270..5d0fd20696 100644 --- a/crates/gpui/src/platform/windows/events.rs +++ b/crates/gpui/src/platform/windows/events.rs @@ -84,6 +84,7 @@ pub(crate) fn handle_msg( WM_IME_COMPOSITION => handle_ime_composition(handle, lparam, state_ptr), WM_SETCURSOR => handle_set_cursor(lparam, state_ptr), WM_SETTINGCHANGE => handle_system_settings_changed(handle, state_ptr), + WM_DWMCOLORIZATIONCOLORCHANGED => handle_system_theme_changed(state_ptr), CURSOR_STYLE_CHANGED => handle_cursor_changed(lparam, state_ptr), _ => None, }; @@ -1118,6 +1119,18 @@ fn handle_system_command(wparam: WPARAM, state_ptr: Rc) - None } +fn handle_system_theme_changed(state_ptr: Rc) -> Option { + let mut callback = state_ptr + .state + .borrow_mut() + .callbacks + .appearance_changed + .take()?; + callback(); + state_ptr.state.borrow_mut().callbacks.appearance_changed = Some(callback); + Some(0) +} + fn parse_syskeydown_msg_keystroke(wparam: WPARAM) -> Option { let modifiers = current_modifiers(); if !modifiers.alt {