init
It's expected to call this when self is undefined
Parameters
- self:*TabsWidget
- *TabsWidget
- src:std.builtin.SourceLocation
- std.builtin.SourceLocation
- init_opts:InitOptions
- InitOptions
- opts:Options
- Options
Source
Implementation
pub fn init(self: *TabsWidget, src: std.builtin.SourceLocation, init_opts: InitOptions, opts: Options) void {
const scroll_opts: ScrollAreaWidget.InitOpts = switch (init_opts.dir) {
.horizontal => .{ .vertical = .none, .horizontal = .auto, .horizontal_bar = .hide },
.vertical => .{ .vertical = .auto, .vertical_bar = .hide },
};
self.* = .{
.init_options = init_opts,
// SAFETY: Set bellow
.scroll = undefined,
// SAFETY: Set bellow
.group = undefined,
// SAFETY: Set bellow
.box = undefined,
};
self.scroll.init(src, scroll_opts, defaults.override(opts));
self.group.init(@src(), .{ .nav_key_dir = self.init_options.dir }, .{ .tab_index = opts.tab_index });
const margin: Rect = switch (self.init_options.dir) {
.horizontal => .{ .y = 2 },
.vertical => .{ .x = 2 },
};
self.box.init(@src(), .{ .dir = self.init_options.dir }, .{ .margin = margin, .expand = .both });
var r = self.scroll.data().contentRectScale().r;
switch (self.init_options.dir) {
.horizontal => {
if (dvui.currentWindow().snap_to_pixels) {
r.x += 0.5;
r.w -= 1.0;
r.y = @floor(r.y) - 0.5;
}
dvui.Path.stroke(.{ .points = &.{ r.bottomLeft(), r.bottomRight() } }, .{ .thickness = 1, .color = self.scroll.data().options.color(.border) });
},
.vertical => {
if (dvui.currentWindow().snap_to_pixels) {
r.y += 0.5;
r.h -= 1.0;
r.x = @floor(r.x) - 0.5;
}
dvui.Path.stroke(.{ .points = &.{ r.topRight(), r.bottomRight() } }, .{ .thickness = 1, .color = self.scroll.data().options.color(.border) });
},
}
}