Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions winit-appkit/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,28 +110,32 @@ fn maybe_dispatch_device_event(app_state: &Rc<AppState>, event: &NSEvent) {

if delta_x != 0.0 || delta_y != 0.0 {
app_state.maybe_queue_with_handler(move |app, event_loop| {
app.device_event(event_loop, None, DeviceEvent::PointerMotion {
delta: (delta_x, delta_y),
});
app.device_event(
event_loop,
None,
DeviceEvent::PointerMotion { delta: (delta_x, delta_y) },
);
});
}
},
NSEventType::LeftMouseDown | NSEventType::RightMouseDown | NSEventType::OtherMouseDown => {
let button = event.buttonNumber() as u32;
app_state.maybe_queue_with_handler(move |app, event_loop| {
app.device_event(event_loop, None, DeviceEvent::Button {
button,
state: ElementState::Pressed,
});
app.device_event(
event_loop,
None,
DeviceEvent::Button { button, state: ElementState::Pressed },
);
});
},
NSEventType::LeftMouseUp | NSEventType::RightMouseUp | NSEventType::OtherMouseUp => {
let button = event.buttonNumber() as u32;
app_state.maybe_queue_with_handler(move |app, event_loop| {
app.device_event(event_loop, None, DeviceEvent::Button {
button,
state: ElementState::Released,
});
app.device_event(
event_loop,
None,
DeviceEvent::Button { button, state: ElementState::Released },
);
});
},
_ => (),
Expand Down
19 changes: 9 additions & 10 deletions winit-appkit/src/view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,16 +272,15 @@ define_class!(
// TODO: Use _replacement_range, requires changing the event to report surrounding text.
trace_scope!("setMarkedText:selectedRange:replacementRange:");

let (marked_text, string) = if let Some(string) =
string.downcast_ref::<NSAttributedString>()
{
(NSMutableAttributedString::from_attributed_nsstring(string), string.string())
} else if let Some(string) = string.downcast_ref::<NSString>() {
(NSMutableAttributedString::from_nsstring(string), string.copy())
} else {
// This method is guaranteed to get either a `NSString` or a `NSAttributedString`.
panic!("unexpected text {string:?}")
};
let (marked_text, string) =
if let Some(string) = string.downcast_ref::<NSAttributedString>() {
(NSMutableAttributedString::from_attributed_nsstring(string), string.string())
} else if let Some(string) = string.downcast_ref::<NSString>() {
(NSMutableAttributedString::from_nsstring(string), string.copy())
} else {
// This method is guaranteed to get either a `NSString` or a `NSAttributedString`.
panic!("unexpected text {string:?}")
};

// Update marked text.
*self.ivars().marked_text.borrow_mut() = marked_text;
Expand Down
48 changes: 24 additions & 24 deletions winit-core/src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1558,24 +1558,24 @@ mod tests {
const TILT_TO_ANGLE: &[(TabletToolTilt, TabletToolAngle)] = &[
(TabletToolTilt { x: 0, y: 0 }, TabletToolAngle { altitude: FRAC_PI_2, azimuth: 0. }),
(TabletToolTilt { x: 0, y: 90 }, TabletToolAngle { altitude: 0., azimuth: FRAC_PI_2 }),
(TabletToolTilt { x: 0, y: -90 }, TabletToolAngle {
altitude: 0.,
azimuth: 3. * FRAC_PI_2,
}),
(
TabletToolTilt { x: 0, y: -90 },
TabletToolAngle { altitude: 0., azimuth: 3. * FRAC_PI_2 },
),
(TabletToolTilt { x: 90, y: 0 }, TabletToolAngle { altitude: 0., azimuth: 0. }),
(TabletToolTilt { x: 90, y: 90 }, TabletToolAngle { altitude: 0., azimuth: 0. }),
(TabletToolTilt { x: 90, y: -90 }, TabletToolAngle { altitude: 0., azimuth: 0. }),
(TabletToolTilt { x: -90, y: 0 }, TabletToolAngle { altitude: 0., azimuth: PI }),
(TabletToolTilt { x: -90, y: 90 }, TabletToolAngle { altitude: 0., azimuth: 0. }),
(TabletToolTilt { x: -90, y: -90 }, TabletToolAngle { altitude: 0., azimuth: 0. }),
(TabletToolTilt { x: 0, y: 45 }, TabletToolAngle {
altitude: FRAC_PI_4,
azimuth: FRAC_PI_2,
}),
(TabletToolTilt { x: 0, y: -45 }, TabletToolAngle {
altitude: FRAC_PI_4,
azimuth: 3. * FRAC_PI_2,
}),
(
TabletToolTilt { x: 0, y: 45 },
TabletToolAngle { altitude: FRAC_PI_4, azimuth: FRAC_PI_2 },
),
(
TabletToolTilt { x: 0, y: -45 },
TabletToolAngle { altitude: FRAC_PI_4, azimuth: 3. * FRAC_PI_2 },
),
(TabletToolTilt { x: 45, y: 0 }, TabletToolAngle { altitude: FRAC_PI_4, azimuth: 0. }),
(TabletToolTilt { x: -45, y: 0 }, TabletToolAngle { altitude: FRAC_PI_4, azimuth: PI }),
];
Expand All @@ -1590,20 +1590,20 @@ mod tests {
(TabletToolAngle { altitude: FRAC_PI_4, azimuth: 0. }, TabletToolTilt { x: 45, y: 0 }),
(TabletToolAngle { altitude: FRAC_PI_2, azimuth: 0. }, TabletToolTilt { x: 0, y: 0 }),
(TabletToolAngle { altitude: 0., azimuth: FRAC_PI_2 }, TabletToolTilt { x: 0, y: 90 }),
(TabletToolAngle { altitude: FRAC_PI_4, azimuth: FRAC_PI_2 }, TabletToolTilt {
x: 0,
y: 45,
}),
(
TabletToolAngle { altitude: FRAC_PI_4, azimuth: FRAC_PI_2 },
TabletToolTilt { x: 0, y: 45 },
),
(TabletToolAngle { altitude: 0., azimuth: PI }, TabletToolTilt { x: -90, y: 0 }),
(TabletToolAngle { altitude: FRAC_PI_4, azimuth: PI }, TabletToolTilt { x: -45, y: 0 }),
(TabletToolAngle { altitude: 0., azimuth: 3. * FRAC_PI_2 }, TabletToolTilt {
x: 0,
y: -90,
}),
(TabletToolAngle { altitude: FRAC_PI_4, azimuth: 3. * FRAC_PI_2 }, TabletToolTilt {
x: 0,
y: -45,
}),
(
TabletToolAngle { altitude: 0., azimuth: 3. * FRAC_PI_2 },
TabletToolTilt { x: 0, y: -90 },
),
(
TabletToolAngle { altitude: FRAC_PI_4, azimuth: 3. * FRAC_PI_2 },
TabletToolTilt { x: 0, y: -45 },
),
];

for (angle, tilt) in ANGLE_TO_TILT {
Expand Down
56 changes: 35 additions & 21 deletions winit-orbital/src/event_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -406,35 +406,49 @@ impl EventLoop {
);
},
EventOption::Mouse(MouseEvent { x, y }) => {
app.window_event(window_target, window_id, event::WindowEvent::PointerMoved {
device_id: None,
primary: true,
position: (x, y).into(),
source: event::PointerSource::Mouse,
});
app.window_event(
window_target,
window_id,
event::WindowEvent::PointerMoved {
device_id: None,
primary: true,
position: (x, y).into(),
source: event::PointerSource::Mouse,
},
);
},
EventOption::MouseRelative(MouseRelativeEvent { dx, dy }) => {
app.device_event(window_target, None, event::DeviceEvent::PointerMotion {
delta: (dx as f64, dy as f64),
});
app.device_event(
window_target,
None,
event::DeviceEvent::PointerMotion { delta: (dx as f64, dy as f64) },
);
},
EventOption::Button(ButtonEvent { left, middle, right }) => {
while let Some((button, state)) = event_state.mouse(left, middle, right) {
app.window_event(window_target, window_id, event::WindowEvent::PointerButton {
device_id: None,
primary: true,
state,
position: dpi::PhysicalPosition::default(),
button: button.into(),
});
app.window_event(
window_target,
window_id,
event::WindowEvent::PointerButton {
device_id: None,
primary: true,
state,
position: dpi::PhysicalPosition::default(),
button: button.into(),
},
);
}
},
EventOption::Scroll(ScrollEvent { x, y }) => {
app.window_event(window_target, window_id, event::WindowEvent::MouseWheel {
device_id: None,
delta: event::MouseScrollDelta::LineDelta(x as f32, y as f32),
phase: event::TouchPhase::Moved,
});
app.window_event(
window_target,
window_id,
event::WindowEvent::MouseWheel {
device_id: None,
delta: event::MouseScrollDelta::LineDelta(x as f32, y as f32),
phase: event::TouchPhase::Moved,
},
);
},
EventOption::Quit(QuitEvent {}) => {
app.window_event(window_target, window_id, event::WindowEvent::CloseRequested);
Expand Down
2 changes: 1 addition & 1 deletion winit-wayland/src/seat/pointer/relative_pointer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ use sctk::reexports::protocols::wp::relative_pointer::zv1::{

use sctk::globals::GlobalData;

use winit_core::event::DeviceEvent;
use crate::state::WinitState;
use winit_core::event::DeviceEvent;

/// Wrapper around the relative pointer.
#[derive(Debug)]
Expand Down
11 changes: 7 additions & 4 deletions winit-web/src/web_sys/canvas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -497,10 +497,13 @@ impl Canvas {
self.set_current_size(current_size);
let new_size = {
let new_size = Arc::new(Mutex::new(current_size));
event_handler(self.id, WindowEvent::ScaleFactorChanged {
scale_factor: scale,
surface_size_writer: SurfaceSizeWriter::new(Arc::downgrade(&new_size)),
});
event_handler(
self.id,
WindowEvent::ScaleFactorChanged {
scale_factor: scale,
surface_size_writer: SurfaceSizeWriter::new(Arc::downgrade(&new_size)),
},
);

let new_size = *new_size.lock().unwrap();
new_size
Expand Down
Loading