deinit
Parameters
- self:*FloatingTooltipWidget
- *FloatingTooltipWidget
Source
Implementation
pub fn deinit(self: *FloatingTooltipWidget) void {
defer if (dvui.widgetIsAllocated(self)) dvui.widgetFree(self);
defer self.* = undefined;
if (!self.installed) {
return;
}
// check if we should still be shown
if (self.mouse_good_this_frame or (self.init_options.interactive and self.tt_child_shown)) {
dvui.dataSet(null, self.data().id, "_showing", true);
var parent: ?*FloatingTooltipWidget = self.parent_tooltip;
while (parent) |p| {
p.tt_child_shown = true;
parent = p.parent_tooltip;
}
} else {
// don't store showing if mouse is outside trigger and tooltip which will close it next frame
dvui.dataRemove(null, self.data().id, "_showing");
dvui.refresh(null, @src(), self.data().id); // refresh with new hidden state
}
self.scaler.deinit();
if (self.animate) |*animate| {
animate.deinit();
}
self.data().minSizeSetAndRefresh();
// outside normal layout, don't call minSizeForChild or self.data().minSizeReportToParent();
_ = tooltipSet(self.parent_tooltip);
dvui.parentReset(self.data().id, self.data().parent);
// standard subwindow stuff
{
_ = dvui.ScrollContainerWidget.scrollSet(self.prev_scroll);
_ = dvui.subwindowCurrentSet(self.prev_windowInfo.id, self.prev_windowInfo.rect);
dvui.clipSet(self.prevClip);
self.render_ftb.deinit();
}
}