fix: resize handling corrections
This commit is contained in:
parent
01b78c88bd
commit
ee6582b469
3 changed files with 15 additions and 16 deletions
|
@ -94,7 +94,7 @@ pub fn run(self: *Self) !void {
|
|||
|
||||
panic_cleanup_tty = &self.tty;
|
||||
if (!self.no_alternate) try self.vx.enterAltScreen(self.tty.anyWriter());
|
||||
try self.resize(.{ .rows = 0, .cols = 0, .x_pixel = 0, .y_pixel = 0 }); // dummy resize to fully init vaxis
|
||||
try self.resize(.{ .rows = 25, .cols = 80, .x_pixel = 0, .y_pixel = 0 }); // dummy resize to fully init vaxis
|
||||
try self.query_resize();
|
||||
try self.vx.setBracketedPaste(self.tty.anyWriter(), true);
|
||||
try self.vx.queryTerminalSend(self.tty.anyWriter());
|
||||
|
@ -114,9 +114,10 @@ pub fn query_resize(self: *Self) !void {
|
|||
try self.resize(try vaxis.Tty.getWinsize(self.input_fd_blocking()));
|
||||
}
|
||||
|
||||
pub fn resize(self: *Self, ws: vaxis.Winsize) !void {
|
||||
fn resize(self: *Self, ws: vaxis.Winsize) !void {
|
||||
try self.vx.resize(self.a, self.tty.anyWriter(), ws);
|
||||
self.vx.queueRefresh();
|
||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{"resize"}));
|
||||
}
|
||||
|
||||
pub fn stop(self: *Self) void {
|
||||
|
|
|
@ -64,7 +64,6 @@ pub fn create(a: std.mem.Allocator, n: Plane) !Widget {
|
|||
self.widgets_widget = widgets.widget();
|
||||
try widgets.add(try Widget.empty(a, n, .dynamic));
|
||||
self.statusbar = try widgets.addP(try @import("status/statusbar.zig").create(a, w));
|
||||
self.resize();
|
||||
if (tp.env.get().is("show-input"))
|
||||
self.toggle_inputview_async();
|
||||
if (tp.env.get().is("show-log"))
|
||||
|
@ -101,10 +100,6 @@ pub fn render(self: *Self, theme: *const Widget.Theme) bool {
|
|||
return widgets_more or views_more;
|
||||
}
|
||||
|
||||
pub fn resize(self: *Self) void {
|
||||
self.handle_resize(Box.from(self.plane));
|
||||
}
|
||||
|
||||
pub fn handle_resize(self: *Self, pos: Box) void {
|
||||
self.widgets.resize(pos);
|
||||
self.floating_views.resize(pos);
|
||||
|
@ -135,7 +130,7 @@ fn toggle_panel_view(self: *Self, view: anytype, enable_only: bool) error{Exit}!
|
|||
panels.add(view.create(self.a, self.widgets.plane) catch |e| return tp.exit_error(e)) catch |e| return tp.exit_error(e);
|
||||
self.panels = panels;
|
||||
}
|
||||
self.resize();
|
||||
tui.current().resize();
|
||||
return enabled;
|
||||
}
|
||||
|
||||
|
@ -144,7 +139,7 @@ fn close_all_panel_views(self: *Self) void {
|
|||
self.widgets.remove(panels.widget());
|
||||
self.panels = null;
|
||||
}
|
||||
self.resize();
|
||||
tui.current().resize();
|
||||
}
|
||||
|
||||
fn toggle_view(self: *Self, view: anytype) tp.result {
|
||||
|
@ -153,7 +148,7 @@ fn toggle_view(self: *Self, view: anytype) tp.result {
|
|||
} else {
|
||||
self.widgets.add(view.create(self.a, self.plane) catch |e| return tp.exit_error(e)) catch |e| return tp.exit_error(e);
|
||||
}
|
||||
self.resize();
|
||||
tui.current().resize();
|
||||
}
|
||||
|
||||
const cmds = struct {
|
||||
|
@ -411,7 +406,7 @@ fn create_editor(self: *Self) tp.result {
|
|||
self.editor = if (editor.dynamic_cast(ed.EditorWidget)) |p| &p.editor else null;
|
||||
} else @panic("mainview editor not found");
|
||||
self.widgets.replace(0, editor_widget);
|
||||
self.resize();
|
||||
tui.current().resize();
|
||||
}
|
||||
|
||||
fn toggle_logview_async(_: *Self) void {
|
||||
|
@ -435,7 +430,7 @@ fn create_home(self: *Self) tp.result {
|
|||
var home_widget = home.create(self.a, Widget.to(self)) catch |e| return tp.exit_error(e);
|
||||
errdefer home_widget.deinit(self.a);
|
||||
self.widgets.replace(0, home_widget);
|
||||
self.resize();
|
||||
tui.current().resize();
|
||||
}
|
||||
|
||||
fn write_restore_info(self: *Self) void {
|
||||
|
|
|
@ -125,6 +125,7 @@ fn init(a: Allocator) !*Self {
|
|||
if (builtin.os.tag != .windows)
|
||||
try self.listen_sigwinch();
|
||||
self.mainview = try mainview.create(a, n);
|
||||
self.resize();
|
||||
try self.rdr.render();
|
||||
try self.save_config();
|
||||
if (tp.env.get().is("restore-session")) {
|
||||
|
@ -218,14 +219,11 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) tp.result {
|
|||
if (try m.match(.{"sigwinch"})) {
|
||||
try self.listen_sigwinch();
|
||||
self.rdr.query_resize() catch |e| return self.logger.err("query_resize", e);
|
||||
self.mainview.resize(Widget.Box.from(self.rdr.stdplane()));
|
||||
need_render();
|
||||
return;
|
||||
};
|
||||
|
||||
if (try m.match(.{"resize"})) {
|
||||
self.mainview.resize(Widget.Box.from(self.rdr.stdplane()));
|
||||
need_render();
|
||||
self.resize();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -682,6 +680,11 @@ pub fn need_render() void {
|
|||
tp.self_pid().send(.{"render"}) catch {};
|
||||
}
|
||||
|
||||
pub fn resize(self: *Self) void {
|
||||
self.mainview.resize(Widget.Box.from(self.rdr.stdplane()));
|
||||
need_render();
|
||||
}
|
||||
|
||||
pub fn get_theme_by_name(name: []const u8) ?Widget.Theme {
|
||||
for (Widget.themes) |theme| {
|
||||
if (std.mem.eql(u8, theme.name, name))
|
||||
|
|
Loading…
Add table
Reference in a new issue