protected override void OnMouseMoved(float x, float y) { var row = ListRowLocator.GetRow( GetAbsoluteBounds(), Slider.ThumbPosition, Items.Count, y ); if (row < 0 || row >= Items.Count) { if (_hover != -1) { _hover = -1; HoverCleared.Invoke(); } return; } var newHover = row; if (_hover != newHover) { _hover = newHover; HoverChange.Invoke(row); } base.OnMouseMoved(x, y); }
/// <summary> /// Select item beneath the mouse, if any /// </summary> /// <param name="x">Mouse X position</param> /// <param name="y">Mouse Y position</param> protected override void OnMouseMoved(float x, float y) { _mouseY = y; if (ListRowLocator != null) { try { int row = ListRowLocator.GetRow(GetAbsoluteBounds(), 0, Items.Count, _mouseY); if (row >= 0 && row < Items.Count) { SelectedItems.Clear(); SelectedItems.Add(row); } else { SelectedItems.Clear(); } } catch (InvalidOperationException e) { } } }
protected override void OnMouseReleased(MouseButtons button) { if (button != MouseButtons.Left) { return; } if (ListRowLocator != null) { int row = ListRowLocator.GetRow(GetAbsoluteBounds(), 0, Items.Count, _mouseY); if (row >= 0 && row < Items.Count) { OnRowClicked(row); } } }