From 989fd1b505a51bde3f8bcd2bf9b94fa434880dd6 Mon Sep 17 00:00:00 2001 From: David Partouche Date: Mon, 6 Oct 2014 17:54:15 +0200 Subject: Added events handling for left/right mouse clicking --- src/osx/mod.rs | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'src/osx') diff --git a/src/osx/mod.rs b/src/osx/mod.rs index 1dbe383..e61e536 100644 --- a/src/osx/mod.rs +++ b/src/osx/mod.rs @@ -170,23 +170,48 @@ impl Window { } pub fn poll_events(&self) -> Vec { - unimplemented!() - } + let mut events = Vec::new(); - pub fn wait_events(&self) -> Vec { loop { unsafe { + use {MouseInput, Pressed, Released, LeftMouseButton, RightMouseButton}; let event = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_( NSAnyEventMask as u64, - nil, + NSDate::distantPast(nil), NSDefaultRunLoopMode, true); if event == nil { break; } - NSApp().sendEvent_(event); + + match event.get_type() { + NSLeftMouseDown => { events.push(MouseInput(Pressed, LeftMouseButton)); }, + NSLeftMouseUp => { events.push(MouseInput(Released, LeftMouseButton)); }, + NSRightMouseDown => { events.push(MouseInput(Pressed, RightMouseButton)); }, + NSRightMouseUp => { events.push(MouseInput(Released, RightMouseButton)); }, + NSMouseMoved => { }, + NSKeyDown => { }, + NSKeyUp => { }, + NSFlagsChanged => { }, + NSScrollWheel => { }, + NSOtherMouseDown => { }, + NSOtherMouseUp => { }, + NSOtherMouseDragged => { }, + _ => { }, + } } } - // TODO: Remove fake implementation - Vec::new() + events + } + + pub fn wait_events(&self) -> Vec { + unsafe { + let event = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_( + NSAnyEventMask as u64, + NSDate::distantFuture(nil), + NSDefaultRunLoopMode, + true); + NSApp().sendEvent_(event); + self.poll_events() + } } pub unsafe fn make_current(&self) { -- cgit v1.2.3