processEvents
Process any selection events
- must be called after the selectables have been created and deinit-ed.
Parameters
- self:*MultiSelectMouse
- *MultiSelectMouse
- sel_info:*SelectionInfo
- *SelectionInfo
- wd:*WidgetData
- *WidgetData
Source
Implementation
pub fn processEvents(self: *MultiSelectMouse, sel_info: *SelectionInfo, wd: *WidgetData) void {
self.selection_changed = false;
for (dvui.events()) |*e| {
if (e.evt == .key) {
const ke = e.evt.key;
if (ke.code != .left_shift and ke.code != .right_shift) continue;
self.shift_held = ke.action == .down or ke.action == .repeat;
}
}
for (sel_info.events()) |*se| {
if (se.eventMatch(wd)) {
if (!self.shift_held or self.first_selected_id == null) {
// Single select or shift held on first selection.
self.first_selected_id = se.selection_id;
self.second_selected_id = se.selection_id;
self.should_select = se.selected;
self.selection_changed = true;
} else {
// Shift-select
self.second_selected_id = se.selection_id;
self.should_select = se.selected;
self.selection_changed = true;
}
}
}
}