diff --git a/window/src/os/macos/window.rs b/window/src/os/macos/window.rs index fd2d6a2f3..298592bf9 100644 --- a/window/src/os/macos/window.rs +++ b/window/src/os/macos/window.rs @@ -1496,6 +1496,10 @@ impl WindowView { Self::mouse_common(this, nsevent, MouseEventKind::Release(MousePress::Right)); } + extern "C" fn other_mouse_up(this: &mut Object, _sel: Sel, nsevent: id) { + Self::mouse_common(this, nsevent, MouseEventKind::Release(MousePress::Middle)); + } + extern "C" fn scroll_wheel(this: &mut Object, _sel: Sel, nsevent: id) { let precise = unsafe { nsevent.hasPreciseScrollingDeltas() } == YES; let scale = if precise { @@ -1563,6 +1567,10 @@ impl WindowView { Self::mouse_common(this, nsevent, MouseEventKind::Press(MousePress::Right)); } + extern "C" fn other_mouse_down(this: &mut Object, _sel: Sel, nsevent: id) { + Self::mouse_common(this, nsevent, MouseEventKind::Press(MousePress::Middle)); + } + extern "C" fn mouse_moved_or_dragged(this: &mut Object, _sel: Sel, nsevent: id) { Self::mouse_common(this, nsevent, MouseEventKind::Move); } @@ -1956,6 +1964,14 @@ impl WindowView { sel!(rightMouseUp:), Self::right_mouse_up as extern "C" fn(&mut Object, Sel, id), ); + cls.add_method( + sel!(otherMouseDown:), + Self::other_mouse_down as extern "C" fn(&mut Object, Sel, id), + ); + cls.add_method( + sel!(otherMouseUp:), + Self::other_mouse_up as extern "C" fn(&mut Object, Sel, id), + ); cls.add_method( sel!(scrollWheel:), Self::scroll_wheel as extern "C" fn(&mut Object, Sel, id),