public override void MouseDown(NSEvent theEvent) { var handler = Handler; if (handler != null) { var args = MacConversions.GetMouseEvent(handler.ContainerControl, theEvent, false); if (theEvent.ClickCount >= 2) { handler.Callback.OnMouseDoubleClick(handler.Widget, args); } else { handler.Callback.OnMouseDown(handler.Widget, args); } if (args.Handled) { return; } var point = ConvertPointFromView(theEvent.LocationInWindow, null); int rowIndex = (int)GetRow(point); if (rowIndex >= 0) { int columnIndex = (int)GetColumn(point); var item = handler.GetItem(rowIndex); var column = columnIndex == -1 || columnIndex > handler.Widget.Columns.Count ? null : handler.Widget.Columns[columnIndex]; var cellArgs = MacConversions.CreateCellMouseEventArgs(column, handler.ContainerControl, rowIndex, columnIndex, item, theEvent); if (theEvent.ClickCount >= 2) { handler.Callback.OnCellDoubleClick(handler.Widget, cellArgs); } else { handler.Callback.OnCellClick(handler.Widget, cellArgs); } } handler.IsMouseDragging = true; base.MouseDown(theEvent); handler.IsMouseDragging = false; // NSOutlineView uses an event loop and MouseUp() does not get called handler.Callback.OnMouseUp(handler.Widget, args); return; } base.MouseDown(theEvent); }
bool HandleMouseEvent(NSEvent theEvent) { var handler = Handler; if (handler != null) { var args = MacConversions.GetMouseEvent(handler, theEvent, false); if (theEvent.ClickCount >= 2) { handler.Callback.OnMouseDoubleClick(handler.Widget, args); } else { handler.Callback.OnMouseDown(handler.Widget, args); } if (args.Handled) { return(true); } var point = ConvertPointFromView(theEvent.LocationInWindow, null); int rowIndex; if ((rowIndex = (int)GetRow(point)) >= 0) { int columnIndex = (int)GetColumn(point); var item = handler.GetItem(rowIndex); var column = columnIndex == -1 || columnIndex > handler.Widget.Columns.Count ? null : handler.Widget.Columns[columnIndex]; var cellArgs = MacConversions.CreateCellMouseEventArgs(column, handler.ContainerControl, rowIndex, columnIndex, item, theEvent); if (theEvent.ClickCount >= 2) { handler.Callback.OnCellDoubleClick(handler.Widget, cellArgs); } else { handler.Callback.OnCellClick(handler.Widget, cellArgs); } } } return(false); }