Compare commits
No commits in common. "f11b99b5ada9fab3c66c667eb69e08fd70f29d76" and "f4cf15e5c3196ba3a1e3965e125cafabcee140c0" have entirely different histories.
f11b99b5ad
...
f4cf15e5c3
3 changed files with 11 additions and 15 deletions
|
|
@ -9,7 +9,7 @@ col: usize = 0,
|
||||||
rows: usize = 0,
|
rows: usize = 0,
|
||||||
cols: usize = 0,
|
cols: usize = 0,
|
||||||
|
|
||||||
pub var scroll_cursor_min_border_distance: usize = 5;
|
const scroll_cursor_min_border_distance = 5;
|
||||||
const scroll_cursor_min_border_distance_mouse = 1;
|
const scroll_cursor_min_border_distance_mouse = 1;
|
||||||
|
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
|
|
@ -65,7 +65,7 @@ inline fn is_at_top(self: *const Self) bool {
|
||||||
|
|
||||||
inline fn is_at_bottom(self: *const Self, root: Buffer.Root) bool {
|
inline fn is_at_bottom(self: *const Self, root: Buffer.Root) bool {
|
||||||
if (root.lines() < self.rows) return true;
|
if (root.lines() < self.rows) return true;
|
||||||
return self.row >= root.lines() -| scroll_cursor_min_border_distance;
|
return self.row >= root.lines() - scroll_cursor_min_border_distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub inline fn is_visible(self: *const Self, cursor: *const Cursor) bool {
|
pub inline fn is_visible(self: *const Self, cursor: *const Cursor) bool {
|
||||||
|
|
@ -96,7 +96,7 @@ inline fn to_cursor_bottom(self: *const Self, root: Buffer.Root) Cursor {
|
||||||
|
|
||||||
fn clamp_row(self: *Self, cursor: *const Cursor, abs: bool, bottom_offset: usize) void {
|
fn clamp_row(self: *Self, cursor: *const Cursor, abs: bool, bottom_offset: usize) void {
|
||||||
const top_min_border_distance: usize = if (abs) scroll_cursor_min_border_distance_mouse else scroll_cursor_min_border_distance;
|
const top_min_border_distance: usize = if (abs) scroll_cursor_min_border_distance_mouse else scroll_cursor_min_border_distance;
|
||||||
const bottom_min_border_distance: usize = top_min_border_distance + bottom_offset + 1;
|
const bottom_min_border_distance: usize = top_min_border_distance + bottom_offset;
|
||||||
if (cursor.row < top_min_border_distance) {
|
if (cursor.row < top_min_border_distance) {
|
||||||
self.row = 0;
|
self.row = 0;
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -2987,7 +2987,7 @@ pub const Editor = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_scroll_dest_abs(self: *Self, dest: usize) void {
|
pub fn update_scroll_dest_abs(self: *Self, dest: usize) void {
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
const root = self.buf_root() catch return;
|
const root = self.buf_root() catch return;
|
||||||
const max_view = if (root.lines() <= scroll_cursor_min_border_distance) 0 else root.lines() - scroll_cursor_min_border_distance;
|
const max_view = if (root.lines() <= scroll_cursor_min_border_distance) 0 else root.lines() - scroll_cursor_min_border_distance;
|
||||||
self.scroll_dest = @min(dest, max_view);
|
self.scroll_dest = @min(dest, max_view);
|
||||||
|
|
@ -3057,7 +3057,7 @@ pub const Editor = struct {
|
||||||
pub const scroll_view_center_meta: Meta = .{ .description = "Scroll cursor to center of view" };
|
pub const scroll_view_center_meta: Meta = .{ .description = "Scroll cursor to center of view" };
|
||||||
|
|
||||||
pub fn scroll_view_center_cycle(self: *Self, _: Context) Result {
|
pub fn scroll_view_center_cycle(self: *Self, _: Context) Result {
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
const cursor_row = self.get_primary().cursor.row;
|
const cursor_row = self.get_primary().cursor.row;
|
||||||
return if (cursor_row == self.view.row + scroll_cursor_min_border_distance)
|
return if (cursor_row == self.view.row + scroll_cursor_min_border_distance)
|
||||||
self.scroll_view_bottom(.{})
|
self.scroll_view_bottom(.{})
|
||||||
|
|
@ -3069,14 +3069,14 @@ pub const Editor = struct {
|
||||||
pub const scroll_view_center_cycle_meta: Meta = .{ .description = "Scroll cursor to center/top/bottom of view" };
|
pub const scroll_view_center_cycle_meta: Meta = .{ .description = "Scroll cursor to center/top/bottom of view" };
|
||||||
|
|
||||||
pub fn scroll_view_top(self: *Self, _: Context) Result {
|
pub fn scroll_view_top(self: *Self, _: Context) Result {
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
return self.scroll_view_offset(scroll_cursor_min_border_distance);
|
return self.scroll_view_offset(scroll_cursor_min_border_distance);
|
||||||
}
|
}
|
||||||
pub const scroll_view_top_meta: Meta = .{};
|
pub const scroll_view_top_meta: Meta = .{};
|
||||||
|
|
||||||
pub fn scroll_view_bottom(self: *Self, _: Context) Result {
|
pub fn scroll_view_bottom(self: *Self, _: Context) Result {
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
return self.scroll_view_offset(if (self.view.rows > scroll_cursor_min_border_distance) self.view.rows -| scroll_cursor_min_border_distance + 1 else 0);
|
return self.scroll_view_offset(if (self.view.rows > scroll_cursor_min_border_distance) self.view.rows - scroll_cursor_min_border_distance else 0);
|
||||||
}
|
}
|
||||||
pub const scroll_view_bottom_meta: Meta = .{};
|
pub const scroll_view_bottom_meta: Meta = .{};
|
||||||
|
|
||||||
|
|
@ -6386,7 +6386,7 @@ pub const Editor = struct {
|
||||||
const cursor = sel.begin;
|
const cursor = sel.begin;
|
||||||
const range_height = sel.end.row - sel.begin.row + 1;
|
const range_height = sel.end.row - sel.begin.row + 1;
|
||||||
const view_height = self.view.rows;
|
const view_height = self.view.rows;
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
|
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
|
||||||
scroll_cursor_min_border_distance
|
scroll_cursor_min_border_distance
|
||||||
else
|
else
|
||||||
|
|
@ -6416,7 +6416,7 @@ pub const Editor = struct {
|
||||||
primary.cursor = cursor;
|
primary.cursor = cursor;
|
||||||
const range_height = sel.end.row - sel.begin.row + 1;
|
const range_height = sel.end.row - sel.begin.row + 1;
|
||||||
const view_height = self.view.rows;
|
const view_height = self.view.rows;
|
||||||
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
|
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
|
||||||
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
|
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
|
||||||
scroll_cursor_min_border_distance
|
scroll_cursor_min_border_distance
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1949,11 +1949,7 @@ pub fn frames_rendered() usize {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn resize() void {
|
pub fn resize() void {
|
||||||
const self = current();
|
mainview_widget().resize(screen());
|
||||||
const scr = screen();
|
|
||||||
const half_scr = (scr.h -| 2) / 2;
|
|
||||||
Buffer.View.scroll_cursor_min_border_distance = @min(half_scr, self.config_.scroll_cursor_min_border_distance);
|
|
||||||
mainview_widget().resize(scr);
|
|
||||||
refresh_hover(@src());
|
refresh_hover(@src());
|
||||||
need_render(@src());
|
need_render(@src());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue