windows: Mouse wheel coordinates fix (#9749)
mouse scroll wasn't working unless the window was maximized or in the top left corner because the Windows wheel events give screen coordinates Release Notes: - N/A
This commit is contained in:
@@ -641,11 +641,14 @@ impl WindowsWindowInner {
|
||||
if let Some(callback) = callbacks.input.as_mut() {
|
||||
let wheel_distance = (wparam.signed_hiword() as f32 / WHEEL_DELTA as f32)
|
||||
* self.platform_inner.settings.borrow().wheel_scroll_lines as f32;
|
||||
let x = lparam.signed_loword() as f32;
|
||||
let y = lparam.signed_hiword() as f32;
|
||||
let mut cursor_point = POINT {
|
||||
x: lparam.signed_loword().into(),
|
||||
y: lparam.signed_hiword().into(),
|
||||
};
|
||||
unsafe { ScreenToClient(self.hwnd, &mut cursor_point) };
|
||||
let scale_factor = self.scale_factor.get();
|
||||
let event = crate::ScrollWheelEvent {
|
||||
position: logical_point(x, y, scale_factor),
|
||||
position: logical_point(cursor_point.x as f32, cursor_point.y as f32, scale_factor),
|
||||
delta: ScrollDelta::Lines(Point {
|
||||
x: 0.0,
|
||||
y: wheel_distance,
|
||||
@@ -664,11 +667,14 @@ impl WindowsWindowInner {
|
||||
if let Some(callback) = callbacks.input.as_mut() {
|
||||
let wheel_distance = (wparam.signed_hiword() as f32 / WHEEL_DELTA as f32)
|
||||
* self.platform_inner.settings.borrow().wheel_scroll_chars as f32;
|
||||
let x = lparam.signed_loword() as f32;
|
||||
let y = lparam.signed_hiword() as f32;
|
||||
let mut cursor_point = POINT {
|
||||
x: lparam.signed_loword().into(),
|
||||
y: lparam.signed_hiword().into(),
|
||||
};
|
||||
unsafe { ScreenToClient(self.hwnd, &mut cursor_point) };
|
||||
let scale_factor = self.scale_factor.get();
|
||||
let event = crate::ScrollWheelEvent {
|
||||
position: logical_point(x, y, scale_factor),
|
||||
position: logical_point(cursor_point.x as f32, cursor_point.y as f32, scale_factor),
|
||||
delta: ScrollDelta::Lines(Point {
|
||||
x: wheel_distance,
|
||||
y: 0.0,
|
||||
|
||||
Reference in New Issue
Block a user