╭ changed ─────────────╮ │src/ui/User/Header.zig│ ╰──────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │110 }); │ │111 } │ │112 │ │113 - // settings tab │ │114 - { │ │113 + // settings tab. settings are account preferences, so it needs a login. │ │114 + if (session.data.user_id != null) { │ │115 var text_box = try wgt.TextBox(ui.Widget).init(allocator, "settings", .{ .border_style = .single, .rounded_corners = true, .wrap_kind = .none });│ │116 errdefer text_box.deinit(allocator); │ │117 text_box.getFocus().focusable = true; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │171 for (self.box.children.keys(), self.box.children.values()) |id, *child| { │ │172 const tb: ?*wgt.TextBox(ui.Widget) = switch (child.widget) { │ │173 .text_box => |*x| x, │ │174 - .auth_tab => |*at| &at.text_box, │ │174 + .auth_tab => |*at| blk: { │ │175 + // the label tracks login state per frame, so the width must too│ │176 + child.min_size = .{ .width = at.minWidth(), .height = null }; │ │177 + break :blk &at.text_box; │ │178 + }, │ │179 else => null, │ │180 }; │ │181 if (tb) |t| { │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯