public override HitBox HitTest() { if (!IsVisible()) { return(HitBox.Miss); } HitBox hit; if ((hit = _scrollBar.HitTest()).IsHit) { return(hit); } for (int i = VerticalScrollIndex * HorizontalMaxVisibleItems; i < _items.Count && i - (VerticalScrollIndex * HorizontalMaxVisibleItems) < MaxVisibleItemsTotal; i++) { if (!_items[i].HitTest()) { continue; } _selectedItem = _items[i]; OnSelect?.Invoke(_items[i].Value); return(HitBox.Hit(this)); } _clickable.HitTest(MouseButton.Left); if (_clickable.IsDown(MouseButton.Left)) { return(HitBox.Hit(this)); } return(HitBox.Miss); }
public void Select(T value) { var index = _items.FindIndex(it => it.Value.Equals(value)); _selectedItem = _items[index]; OnSelect?.Invoke(value); VerticalScrollTo(index.Clamp(0, VerticalMaxScrollIndex)); }
public void AddItem(ImageBox image, T value) { image.Parent = this; image.Window = Window; var item = new PaletteBoxItem { Value = value, ImageBox = image }; _items.Add(item); IsDirty = true; }
public void AddRange(IEnumerable <ImageBox> images, Func <Sprite, T> valueFunc) { foreach (var img in images) { img.Parent = this; img.Window = Window; var item = new PaletteBoxItem { Value = valueFunc(img.Sprite), ImageBox = img, }; _items.Add(item); } IsDirty = true; }