diff options
| author | David Partouche <david@manateedev.com> | 2014-10-06 17:54:15 +0200 | 
|---|---|---|
| committer | David Partouche <david@manateedev.com> | 2014-10-06 18:23:31 +0200 | 
| commit | 989fd1b505a51bde3f8bcd2bf9b94fa434880dd6 (patch) | |
| tree | 9f862e9beb5e025bbdf376f16b29c1317018746a /src | |
| parent | db578e6e1ce88f2ceb2f0f04315aedab9e11441e (diff) | |
| download | glutin-989fd1b505a51bde3f8bcd2bf9b94fa434880dd6.tar.gz glutin-989fd1b505a51bde3f8bcd2bf9b94fa434880dd6.zip  | |
Added events handling for left/right mouse clicking
Diffstat (limited to 'src')
| -rw-r--r-- | src/osx/mod.rs | 39 | 
1 files changed, 32 insertions, 7 deletions
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<Event> { -        unimplemented!() -    } +        let mut events = Vec::new(); -    pub fn wait_events(&self) -> Vec<Event> {          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<Event> { +        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) {  | 
