aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/cocoa/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/cocoa/mod.rs')
-rw-r--r--src/api/cocoa/mod.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/api/cocoa/mod.rs b/src/api/cocoa/mod.rs
index b9c566f..96bf842 100644
--- a/src/api/cocoa/mod.rs
+++ b/src/api/cocoa/mod.rs
@@ -199,9 +199,11 @@ impl<'a> Iterator for PollEventsIterator<'a> {
NSDefaultRunLoopMode,
YES);
if event == nil { return None; }
- NSApp().sendEvent_(event);
- let event = match msg_send![event, type] {
+ let event_type = msg_send![event, type];
+ NSApp().sendEvent_(if let NSKeyDown = event_type { nil } else { event });
+
+ let event = match event_type {
NSLeftMouseDown => { Some(MouseInput(Pressed, MouseButton::Left)) },
NSLeftMouseUp => { Some(MouseInput(Released, MouseButton::Left)) },
NSRightMouseDown => { Some(MouseInput(Pressed, MouseButton::Right)) },
@@ -220,6 +222,7 @@ impl<'a> Iterator for PollEventsIterator<'a> {
};
let view_rect = NSView::frame(*self.window.view);
let scale_factor = self.window.hidpi_factor();
+
Some(MouseMoved(((scale_factor * view_point.x as f32) as i32,
(scale_factor * (view_rect.size.height - view_point.y) as f32) as i32)))
},
@@ -241,6 +244,7 @@ impl<'a> Iterator for PollEventsIterator<'a> {
},
NSKeyUp => {
let vkey = event::vkeycode_to_element(NSEvent::keyCode(event));
+
Some(KeyboardInput(Released, NSEvent::keyCode(event) as u8, vkey))
},
NSFlagsChanged => {
@@ -273,8 +277,6 @@ impl<'a> Iterator for PollEventsIterator<'a> {
_ => { None },
};
-
-
event
}
}