in native/desktop-win32/src/win32/event_loop.rs [275:297]
fn on_nccalcsize(event_loop: &EventLoop, window: &Window, wparam: WPARAM, lparam: LPARAM) -> Option<LRESULT> {
// Documentation (https://learn.microsoft.com/en-us/windows/win32/winmsg/wm-nccalcsize):
// "If wParam is FALSE, the application does not need to indicate the valid part of the client area."
if wparam.0 != windows::Win32::Foundation::TRUE.0 as usize {
return None;
}
let calcsize_params = unsafe { (lparam.0 as *mut NCCALCSIZE_PARAMS).as_mut() }?;
let top = calcsize_params.rgrc[0].top;
let result = unsafe { DefWindowProcW(window.hwnd(), WM_NCCALCSIZE, wparam, lparam) };
if window.has_custom_title_bar() && result.0 == 0 {
// the top inset should be 0 otherwise Windows will draw full native title bar
calcsize_params.rgrc[0].top = top;
}
let origin = PhysicalPoint::new(calcsize_params.rgrc[0].left, calcsize_params.rgrc[0].top);
let size = PhysicalSize::new(
calcsize_params.rgrc[0].right - calcsize_params.rgrc[0].left,
calcsize_params.rgrc[0].bottom - calcsize_params.rgrc[0].top,
);
let scale = window.get_scale();
let event = NCCalcSizeEvent { origin, size, scale };
event_loop.handle_event(window, event.into());
Some(result)
}