Mouse click selects in ListView

- Add binding to click and select item from index
  if it's in bounds.
- Relates #806
This commit is contained in:
Janne Valkealahti
2023-07-23 14:05:09 +01:00
parent d4bfe610a9
commit fe8c8646a1
2 changed files with 24 additions and 1 deletions

View File

@@ -103,7 +103,7 @@ public class ListView<T> extends BoxView {
registerMouseBinding(MouseEvent.Type.Wheel | MouseEvent.Button.WheelUp, () -> up());
registerMouseBinding(MouseEvent.Type.Wheel | MouseEvent.Button.WheelDown, () -> down());
registerMouseBinding(MouseEvent.Type.Released | MouseEvent.Button.Button1, () -> {});
registerMouseBinding(MouseEvent.Type.Released | MouseEvent.Button.Button1, event -> click(event));
}
private void up() {
@@ -121,6 +121,13 @@ public class ListView<T> extends BoxView {
dispatch(ShellMessageBuilder.ofView(this, ListViewOpenSelectedItemEvent.of(this, selectedItem())));
}
private void click(MouseEvent event) {
int index = event.y() - getInnerRect().y();
if (index > -1 && index < items.size()) {
setSelected(index);
}
}
public void setSelected(int selected) {
if (this.selected != selected) {
this.selected = selected;