fn on_settingchange()

in native/desktop-win32/src/win32/event_loop.rs [248:261]


fn on_settingchange(event_loop: &EventLoop, window: &Window, wparam: WPARAM, lparam: LPARAM) -> Option<LRESULT> {
    // borrowed from https://github.com/microsoft/terminal/blob/73948072120beb51d355b3c74b5f774a6526b277/src/cascadia/WindowsTerminal/IslandWindow.cpp#L748
    if wparam.0 == 0 && lparam.0 != 0 {
        let param = unsafe { windows::core::PWSTR(lparam.0 as *mut u16).to_hstring() };
        if &param == windows::core::h!("ImmersiveColorSet") {
            let new_appearance = Appearance::get_current()
                .inspect_err(|err| log::error!("failed to get current system appearance: {err}"))
                .ok()?;
            let event = SystemAppearanceChangeEvent { new_appearance };
            event_loop.handle_event(window, event.into());
        }
    }
    None
}