add scroll page
This commit is contained in:
parent
74cc48fc50
commit
fad088a868
7 changed files with 61 additions and 0 deletions
|
|
@ -2171,6 +2171,30 @@ impl Tab {
|
||||||
self.render();
|
self.render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pub fn scroll_active_terminal_up_page(&mut self) {
|
||||||
|
if let Some(active_terminal_id) = self.get_active_terminal_id() {
|
||||||
|
let active_terminal = self
|
||||||
|
.panes
|
||||||
|
.get_mut(&PaneId::Terminal(active_terminal_id))
|
||||||
|
.unwrap();
|
||||||
|
// prevent overflow when row == 0
|
||||||
|
let scroll_columns = active_terminal.rows().max(1) - 1;
|
||||||
|
active_terminal.scroll_up(scroll_columns);
|
||||||
|
self.render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn scroll_active_terminal_down_page(&mut self) {
|
||||||
|
if let Some(active_terminal_id) = self.get_active_terminal_id() {
|
||||||
|
let active_terminal = self
|
||||||
|
.panes
|
||||||
|
.get_mut(&PaneId::Terminal(active_terminal_id))
|
||||||
|
.unwrap();
|
||||||
|
// prevent overflow when row == 0
|
||||||
|
let scroll_columns = active_terminal.rows().max(1) - 1;
|
||||||
|
active_terminal.scroll_down(scroll_columns);
|
||||||
|
self.render();
|
||||||
|
}
|
||||||
|
}
|
||||||
pub fn clear_active_terminal_scroll(&mut self) {
|
pub fn clear_active_terminal_scroll(&mut self) {
|
||||||
if let Some(active_terminal_id) = self.get_active_terminal_id() {
|
if let Some(active_terminal_id) = self.get_active_terminal_id() {
|
||||||
let active_terminal = self
|
let active_terminal = self
|
||||||
|
|
|
||||||
|
|
@ -196,6 +196,8 @@ pub enum ScreenContext {
|
||||||
Quit,
|
Quit,
|
||||||
ScrollUp,
|
ScrollUp,
|
||||||
ScrollDown,
|
ScrollDown,
|
||||||
|
PageScrollUp,
|
||||||
|
PageScrollDown,
|
||||||
ClearScroll,
|
ClearScroll,
|
||||||
CloseFocusedPane,
|
CloseFocusedPane,
|
||||||
ToggleActiveTerminalFullscreen,
|
ToggleActiveTerminalFullscreen,
|
||||||
|
|
@ -238,6 +240,8 @@ impl From<&ScreenInstruction> for ScreenContext {
|
||||||
ScreenInstruction::Quit => ScreenContext::Quit,
|
ScreenInstruction::Quit => ScreenContext::Quit,
|
||||||
ScreenInstruction::ScrollUp => ScreenContext::ScrollUp,
|
ScreenInstruction::ScrollUp => ScreenContext::ScrollUp,
|
||||||
ScreenInstruction::ScrollDown => ScreenContext::ScrollDown,
|
ScreenInstruction::ScrollDown => ScreenContext::ScrollDown,
|
||||||
|
ScreenInstruction::PageScrollUp => ScreenContext::PageScrollUp,
|
||||||
|
ScreenInstruction::PageScrollDown => ScreenContext::PageScrollDown,
|
||||||
ScreenInstruction::ClearScroll => ScreenContext::ClearScroll,
|
ScreenInstruction::ClearScroll => ScreenContext::ClearScroll,
|
||||||
ScreenInstruction::CloseFocusedPane => ScreenContext::CloseFocusedPane,
|
ScreenInstruction::CloseFocusedPane => ScreenContext::CloseFocusedPane,
|
||||||
ScreenInstruction::ToggleActiveTerminalFullscreen => {
|
ScreenInstruction::ToggleActiveTerminalFullscreen => {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ pub enum Action {
|
||||||
ScrollUp,
|
ScrollUp,
|
||||||
/// Scroll down in focus pane.
|
/// Scroll down in focus pane.
|
||||||
ScrollDown,
|
ScrollDown,
|
||||||
|
/// Scroll up one page in focus pane.
|
||||||
|
PageScrollUp,
|
||||||
|
/// Scroll down one page in focus pane.
|
||||||
|
PageScrollDown,
|
||||||
/// Toggle between fullscreen focus pane and normal layout.
|
/// Toggle between fullscreen focus pane and normal layout.
|
||||||
ToggleFocusFullscreen,
|
ToggleFocusFullscreen,
|
||||||
/// Open a new pane in the specified direction (relative to focus).
|
/// Open a new pane in the specified direction (relative to focus).
|
||||||
|
|
|
||||||
|
|
@ -184,6 +184,16 @@ impl InputHandler {
|
||||||
.send(ScreenInstruction::ScrollDown)
|
.send(ScreenInstruction::ScrollDown)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
Action::PageScrollUp => {
|
||||||
|
self.send_screen_instructions
|
||||||
|
.send(ScreenInstruction::PageScrollUp)
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
Action::PageScrollDown => {
|
||||||
|
self.send_screen_instructions
|
||||||
|
.send(ScreenInstruction::PageScrollDown)
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
Action::ToggleFocusFullscreen => {
|
Action::ToggleFocusFullscreen => {
|
||||||
self.send_screen_instructions
|
self.send_screen_instructions
|
||||||
.send(ScreenInstruction::ToggleActiveTerminalFullscreen)
|
.send(ScreenInstruction::ToggleActiveTerminalFullscreen)
|
||||||
|
|
|
||||||
|
|
@ -340,6 +340,11 @@ impl Keybinds {
|
||||||
defaults.insert(Key::Char('j'), vec![Action::ScrollDown]);
|
defaults.insert(Key::Char('j'), vec![Action::ScrollDown]);
|
||||||
defaults.insert(Key::Char('k'), vec![Action::ScrollUp]);
|
defaults.insert(Key::Char('k'), vec![Action::ScrollUp]);
|
||||||
|
|
||||||
|
defaults.insert(Key::Ctrl('f'), vec![Action::PageScrollDown]);
|
||||||
|
defaults.insert(Key::Ctrl('b'), vec![Action::PageScrollUp]);
|
||||||
|
defaults.insert(Key::PageDown, vec![Action::PageScrollDown]);
|
||||||
|
defaults.insert(Key::PageUp, vec![Action::PageScrollUp]);
|
||||||
|
|
||||||
defaults.insert(Key::Down, vec![Action::ScrollDown]);
|
defaults.insert(Key::Down, vec![Action::ScrollDown]);
|
||||||
defaults.insert(Key::Up, vec![Action::ScrollUp]);
|
defaults.insert(Key::Up, vec![Action::ScrollUp]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,18 @@ pub fn start(mut os_input: Box<dyn OsApi>, opts: CliArgs) {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.scroll_active_terminal_down();
|
.scroll_active_terminal_down();
|
||||||
}
|
}
|
||||||
|
ScreenInstruction::PageScrollUp => {
|
||||||
|
screen
|
||||||
|
.get_active_tab_mut()
|
||||||
|
.unwrap()
|
||||||
|
.scroll_active_terminal_up_page();
|
||||||
|
}
|
||||||
|
ScreenInstruction::PageScrollDown => {
|
||||||
|
screen
|
||||||
|
.get_active_tab_mut()
|
||||||
|
.unwrap()
|
||||||
|
.scroll_active_terminal_down_page();
|
||||||
|
}
|
||||||
ScreenInstruction::ClearScroll => {
|
ScreenInstruction::ClearScroll => {
|
||||||
screen
|
screen
|
||||||
.get_active_tab_mut()
|
.get_active_tab_mut()
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ pub enum ScreenInstruction {
|
||||||
Quit,
|
Quit,
|
||||||
ScrollUp,
|
ScrollUp,
|
||||||
ScrollDown,
|
ScrollDown,
|
||||||
|
PageScrollUp,
|
||||||
|
PageScrollDown,
|
||||||
ClearScroll,
|
ClearScroll,
|
||||||
CloseFocusedPane,
|
CloseFocusedPane,
|
||||||
ToggleActiveTerminalFullscreen,
|
ToggleActiveTerminalFullscreen,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue