deinit
Parameters
- self:*ScrollContainerWidget
- *ScrollContainerWidget
Source
Implementation
pub fn deinit(self: *ScrollContainerWidget) void {
defer if (dvui.widgetIsAllocated(self)) dvui.widgetFree(self);
defer self.* = undefined;
// need to reset clip before processEventsAfter, event_rect could be
// outside clip, and mouse events only match inside the clip
dvui.clipSet(self.prevClip);
if (self.init_opts.process_events_after) {
self.processEventsAfter();
}
dvui.dataSet(null, self.data().id, "_fv_id", self.first_visible_id);
dvui.dataSet(null, self.data().id, "_fv_offset", self.first_visible_offset);
dvui.dataSet(null, self.data().id, "_fv_viewport", self.first_visible_viewport);
dvui.dataSet(null, self.data().id, "_finger_down", self.finger_down);
const padded = self.data().options.padSize(self.nextVirtualSize);
switch (self.si.horizontal) {
.none => self.data().min_size.w = padded.w,
.auto => {
self.data().min_size.w = padded.w;
if (self.nextVirtualSize.w != self.si.virtual_size.w) {
self.si.virtual_size.w = self.nextVirtualSize.w;
dvui.refresh(null, @src(), self.data().id);
}
},
.given => {},
}
switch (self.si.vertical) {
.none => self.data().min_size.h = padded.h,
.auto => {
self.data().min_size.h = padded.h;
if (self.nextVirtualSize.h != self.si.virtual_size.h) {
self.si.virtual_size.h = self.nextVirtualSize.h;
dvui.refresh(null, @src(), self.data().id);
}
},
.given => {},
}
self.data().minSizeSetAndRefresh();
self.data().minSizeReportToParent();
_ = scrollSet(self.parentScroll);
dvui.parentReset(self.data().id, self.data().parent);
}