mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-25 23:01:30 +11:00
Merge pull request #725 from paulrouget/forceTouch
TouchpadPressure event
This commit is contained in:
commit
6a6d7a29d5
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "glutin"
|
name = "glutin"
|
||||||
version = "0.4.8"
|
version = "0.4.9"
|
||||||
authors = ["The glutin contributors, Pierre Krieger <pierre.krieger1708@gmail.com>"]
|
authors = ["The glutin contributors, Pierre Krieger <pierre.krieger1708@gmail.com>"]
|
||||||
description = "Cross-platform OpenGL context provider."
|
description = "Cross-platform OpenGL context provider."
|
||||||
keywords = ["windowing", "opengl"]
|
keywords = ["windowing", "opengl"]
|
||||||
|
@ -40,7 +40,7 @@ objc = "0.1.8"
|
||||||
[target.x86_64-apple-darwin.dependencies]
|
[target.x86_64-apple-darwin.dependencies]
|
||||||
objc = "0.1.8"
|
objc = "0.1.8"
|
||||||
cgl = "0.1"
|
cgl = "0.1"
|
||||||
cocoa = "0.2"
|
cocoa = "0.2.4"
|
||||||
core-foundation = "0"
|
core-foundation = "0"
|
||||||
core-graphics = "0"
|
core-graphics = "0"
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ use std::sync::Mutex;
|
||||||
use std::ascii::AsciiExt;
|
use std::ascii::AsciiExt;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
use events::Event::{Awakened, MouseInput, MouseMoved, ReceivedCharacter, KeyboardInput, MouseWheel, Closed, Focused};
|
use events::Event::{Awakened, MouseInput, MouseMoved, ReceivedCharacter, KeyboardInput, MouseWheel, Closed, Focused, TouchpadPressure};
|
||||||
use events::ElementState::{Pressed, Released};
|
use events::ElementState::{Pressed, Released};
|
||||||
use events::MouseButton;
|
use events::MouseButton;
|
||||||
use events;
|
use events;
|
||||||
|
@ -225,7 +225,7 @@ impl<'a> Iterator for PollEventsIterator<'a> {
|
||||||
let event: Option<Event>;
|
let event: Option<Event>;
|
||||||
unsafe {
|
unsafe {
|
||||||
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
|
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
|
||||||
NSAnyEventMask.bits(),
|
NSAnyEventMask.bits() | NSEventMaskPressure.bits(),
|
||||||
NSDate::distantPast(nil),
|
NSDate::distantPast(nil),
|
||||||
NSDefaultRunLoopMode,
|
NSDefaultRunLoopMode,
|
||||||
YES);
|
YES);
|
||||||
|
@ -250,7 +250,7 @@ impl<'a> Iterator for WaitEventsIterator<'a> {
|
||||||
let event: Option<Event>;
|
let event: Option<Event>;
|
||||||
unsafe {
|
unsafe {
|
||||||
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
|
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
|
||||||
NSAnyEventMask.bits(),
|
NSAnyEventMask.bits() | NSEventMaskPressure.bits(),
|
||||||
NSDate::distantFuture(nil),
|
NSDate::distantFuture(nil),
|
||||||
NSDefaultRunLoopMode,
|
NSDefaultRunLoopMode,
|
||||||
YES);
|
YES);
|
||||||
|
@ -810,7 +810,7 @@ impl Clone for IdRef {
|
||||||
unsafe fn NSEventToEvent(window: &Window, nsevent: id) -> Option<Event> {
|
unsafe fn NSEventToEvent(window: &Window, nsevent: id) -> Option<Event> {
|
||||||
if nsevent == nil { return None; }
|
if nsevent == nil { return None; }
|
||||||
|
|
||||||
let event_type = msg_send![nsevent, type];
|
let event_type = nsevent.eventType();
|
||||||
NSApp().sendEvent_(if let NSKeyDown = event_type { nil } else { nsevent });
|
NSApp().sendEvent_(if let NSKeyDown = event_type { nil } else { nsevent });
|
||||||
|
|
||||||
match event_type {
|
match event_type {
|
||||||
|
@ -893,6 +893,9 @@ unsafe fn NSEventToEvent(window: &Window, nsevent: id) -> Option<Event> {
|
||||||
};
|
};
|
||||||
Some(MouseWheel(delta))
|
Some(MouseWheel(delta))
|
||||||
},
|
},
|
||||||
|
NSEventTypePressure => {
|
||||||
|
Some(TouchpadPressure(nsevent.pressure(), nsevent.stage()))
|
||||||
|
},
|
||||||
_ => { None },
|
_ => { None },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,13 @@ pub enum Event {
|
||||||
/// An event from the mouse has been received.
|
/// An event from the mouse has been received.
|
||||||
MouseInput(ElementState, MouseButton),
|
MouseInput(ElementState, MouseButton),
|
||||||
|
|
||||||
|
/// Touchpad pressure event.
|
||||||
|
///
|
||||||
|
/// At the moment, only supported on Apple forcetouch-capable macbooks.
|
||||||
|
/// The parameters are: pressure level (value between 0 and 1 representing how hard the touchpad
|
||||||
|
/// is being pressed) and stage (integer representing the click level).
|
||||||
|
TouchpadPressure(f32, i64),
|
||||||
|
|
||||||
/// The event loop was woken up by another thread.
|
/// The event loop was woken up by another thread.
|
||||||
Awakened,
|
Awakened,
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue