deinit
Parameters
- self:*MenuWidget
- *MenuWidget
Source
Implementation
pub fn deinit(self: *MenuWidget) void {
self.processEventsAfter();
if (self.group.data().id == dvui.focusedWidgetIdInCurrentSubwindow()) {
self.focused_menuItem_this_frame = true;
}
// This prevents the following:
// * click to open a menu
// * click outside the menu, it closes
// * hover back over a menu item (the menu should not reappear without clicking)
if (self.init_opts.close_without_focused_child and !self.focused_menuItem_this_frame) {
self.submenus_activated = false;
}
defer if (dvui.widgetIsAllocated(self)) dvui.widgetFree(self);
defer self.* = undefined;
self.box.deinit();
self.group.deinit();
dvui.dataSet(null, self.data().id, "_mouse_mode", self.mouse_mode);
dvui.dataSet(null, self.data().id, "_sub_act", self.submenus_activated);
dvui.dataSet(null, self.data().id, "_has_focused_menuItem", self.focused_menuItem_this_frame);
// always overwrite with value from this frame to prevent saving stale value
dvui.dataSet(null, self.data().id, "_child_popup", self.child_popup_rect);
self.data().minSizeSetAndRefresh();
self.data().minSizeReportToParent();
_ = menuSet(self.parentMenu);
dvui.parentReset(self.data().id, self.data().parent);
}