@@ -69,7 +69,9 @@ impl WindowHandle {
6969 }
7070
7171 pub fn resize ( & self , new_size : Size ) -> Result < ( ) > {
72+ crate :: debug!( "Resizing to {:?}" , new_size) ;
7273 let new_size = self . state . sizing_strategy . adjust_size ( new_size, self . size ( ) ) . physical ;
74+ crate :: debug!( "Size adjusted to {:?}" , new_size) ;
7375
7476 if new_size == self . state . current_size . get ( ) {
7577 return Ok ( ( ) ) ;
@@ -86,12 +88,15 @@ impl WindowHandle {
8688 let _guard = self . state . originate_host_resize ( ) ;
8789 let dpi_ctx =
8890 DpiAwarenessGuard :: new ( & self . state . user32 , self . state . dpi_scaling_strategy . get ( ) ) ?;
91+ crate :: debug!( "DPI: {:?}" , hwnd. get_dpi( & self . state. user32) ) ;
8992 hwnd. resize_and_activate ( new_size, self . state . current_dpi . get ( ) , & dpi_ctx) ?;
9093
9194 if self . state . current_size . get ( ) == new_size {
9295 Ok ( ( ) )
9396 } else {
94- Err ( PlatformError :: ResizeFailed )
97+ Err ( PlatformError :: UnexpectedResizeResult {
98+ new_actual_size : self . state . current_size . get ( ) ,
99+ } )
95100 }
96101 }
97102
@@ -100,6 +105,9 @@ impl WindowHandle {
100105 }
101106
102107 pub fn suggest_scale_factor ( & self , new_host_scale_factor : f64 ) -> Result < ( ) > {
108+ let new_dpi = Dpi :: from_scale_factor ( new_host_scale_factor)
109+ . ok_or ( PlatformError :: InvalidScaleFactor ) ?;
110+
103111 let current_scale_factor = self . state . scale_factor ( ) ;
104112 self . state . fallback_scale_factor . set ( Some ( new_host_scale_factor) ) ;
105113
@@ -109,6 +117,8 @@ impl WindowHandle {
109117 return Ok ( ( ) ) ;
110118 }
111119
120+ self . state . current_dpi . set ( Some ( new_dpi) ) ;
121+
112122 let Some ( hwnd) = self . hwnd . get ( ) else { return Ok ( ( ) ) } ;
113123
114124 let current_size = self . state . current_size . get ( ) ;
@@ -127,12 +137,14 @@ impl WindowHandle {
127137 let _guard = self . state . originate_host_resize ( ) ;
128138 let dpi_ctx = DpiAwarenessGuard :: new ( & self . state . user32 , dpi_scaling_strategy) ?;
129139
130- hwnd. resize_and_activate ( new_size, None , & dpi_ctx) ?;
140+ hwnd. resize_and_activate ( new_size, Some ( new_dpi ) , & dpi_ctx) ?;
131141
132142 if self . state . current_size . get ( ) == new_size {
133143 Ok ( ( ) )
134144 } else {
135- Err ( PlatformError :: ResizeFailed )
145+ Err ( PlatformError :: UnexpectedResizeResult {
146+ new_actual_size : self . state . current_size . get ( ) ,
147+ } )
136148 }
137149 }
138150
@@ -620,6 +632,8 @@ unsafe fn wnd_proc_inner(
620632 let new_size = PhysicalSize { width, height } ;
621633 let current_size = window_state. shared . current_size . get ( ) ;
622634
635+ crate :: debug!( "WM_SIZE: new {new_size:?}, old {current_size:?}" ) ;
636+
623637 // Only send the event if anything changed
624638 if current_size == new_size {
625639 return None ;
0 commit comments