fn on_pointerup()

in native/desktop-win32/src/win32/event_loop.rs [476:496]


fn on_pointerup(event_loop: &EventLoop, window: &Window, msg: u32, wparam: WPARAM) -> Option<LRESULT> {
    let is_non_client = matches!(msg, WM_NCPOINTERUP);
    let pointer_info = PointerInfo::try_from_message(wparam).ok()?;
    let pointer_button = match pointer_info.get_pointer_button_change() {
        change if change.kind() == PointerButtonChangeKind::Released => change.button(),
        pointer_button_change => {
            log::error!("Unexpected pointer button change on pointer up: {pointer_button_change:?}");
            return None;
        }
    };
    let event = PointerUpEvent {
        button: pointer_button,
        location_in_window: pointer_info.get_location_in_window(),
        non_client_area: is_non_client,
        state: pointer_info.get_pointer_state(),
        timestamp: pointer_info.get_timestamp(),
    };
    let result = event_loop.handle_event(window, Event::PointerUp(event));
    // WM_NCPOINTERUP should always return None so that the window buttons work
    if is_non_client { None } else { result }
}