processEventsAfter
Parameters
- self:*MenuWidget
- *MenuWidget
Source
Implementation
pub fn processEventsAfter(self: *MenuWidget) void {
const focus_id = dvui.lastFocusedIdInFrameSince(self.last_focus);
const evts = dvui.events();
for (evts) |*e| {
if (!dvui.eventMatch(e, .{ .id = self.data().id, .focus_id = focus_id, .r = self.data().borderRectScale().r }))
continue;
switch (e.evt) {
.key => |ke| {
if (ke.action == .down or ke.action == .repeat) {
switch (ke.code) {
.escape => {
e.handle(@src(), self.data());
self.close();
},
.up, .down => {
if (self.init_opts.dir == .horizontal) {
e.handle(@src(), self.data());
}
// otherwise let focus group handle it
},
.left => {
if (self.init_opts.dir == .vertical) {
e.handle(@src(), self.data());
if (self.parentMenu) |pm| {
e.handle(@src(), self.data());
pm.submenus_activated = false;
if (self.init_opts.parentSubwindowId) |sid| {
dvui.focusSubwindow(sid, null);
}
}
}
// otherwise let focus group handle it
},
.right => {
if (self.init_opts.dir == .vertical) {
e.handle(@src(), self.data());
}
// otherwise let focus group handle it
},
else => {},
}
}
},
else => {},
}
}
}