commit
aba71c2e4e
4 changed files with 34 additions and 33 deletions
|
|
@ -1,4 +1,5 @@
|
|||
//! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size, as well as how they should be resized
|
||||
//! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size,
|
||||
//! as well as how they should be resized
|
||||
|
||||
use crate::common::{AppInstruction, SenderWithContext};
|
||||
use crate::panes::{PaneId, PositionAndSize, TerminalPane};
|
||||
|
|
@ -296,9 +297,8 @@ impl Tab {
|
|||
* terminal_to_check.columns();
|
||||
let terminal_can_be_split = terminal_to_check.columns() >= MIN_TERMINAL_WIDTH
|
||||
&& terminal_to_check.rows() >= MIN_TERMINAL_HEIGHT
|
||||
&& ((terminal_to_check.columns() >= terminal_to_check.min_width() * 2 + 1)
|
||||
|| (terminal_to_check.rows()
|
||||
>= terminal_to_check.min_height() * 2 + 1));
|
||||
&& ((terminal_to_check.columns() > terminal_to_check.min_width() * 2)
|
||||
|| (terminal_to_check.rows() > terminal_to_check.min_height() * 2));
|
||||
if terminal_can_be_split && terminal_size > current_largest_terminal_size {
|
||||
(terminal_size, Some(*id_of_terminal_to_check))
|
||||
} else {
|
||||
|
|
@ -321,7 +321,7 @@ impl Tab {
|
|||
y: terminal_to_split.y(),
|
||||
};
|
||||
if terminal_to_split.rows() * CURSOR_HEIGHT_WIDTH_RATIO > terminal_to_split.columns()
|
||||
&& terminal_to_split.rows() >= terminal_to_split.min_height() * 2 + 1
|
||||
&& terminal_to_split.rows() > terminal_to_split.min_height() * 2
|
||||
{
|
||||
// FIXME: This could use a second look
|
||||
if let PaneId::Terminal(term_pid) = pid {
|
||||
|
|
@ -343,7 +343,7 @@ impl Tab {
|
|||
}
|
||||
self.active_terminal = Some(pid);
|
||||
}
|
||||
} else if terminal_to_split.columns() >= terminal_to_split.min_width() * 2 + 1 {
|
||||
} else if terminal_to_split.columns() > terminal_to_split.min_width() * 2 {
|
||||
// FIXME: This could use a second look
|
||||
if let PaneId::Terminal(term_pid) = pid {
|
||||
let (left_winsize, right_winsize) = split_vertically_with_gap(&terminal_ws);
|
||||
|
|
@ -1437,7 +1437,7 @@ impl Tab {
|
|||
p.columns() > increase_by && p.columns() - increase_by >= p.min_width()
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_increase_pane_and_surroundings_left(
|
||||
|
|
@ -1459,7 +1459,7 @@ impl Tab {
|
|||
p.columns() > increase_by && p.columns() - increase_by >= p.min_width()
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_increase_pane_and_surroundings_down(
|
||||
|
|
@ -1481,7 +1481,7 @@ impl Tab {
|
|||
p.rows() > increase_by && p.rows() - increase_by >= p.min_height()
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_increase_pane_and_surroundings_up(&self, pane_id: &PaneId, increase_by: usize) -> bool {
|
||||
|
|
@ -1499,7 +1499,7 @@ impl Tab {
|
|||
p.rows() > increase_by && p.rows() - increase_by >= p.min_height()
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_reduce_pane_and_surroundings_right(&self, pane_id: &PaneId, reduce_by: usize) -> bool {
|
||||
|
|
@ -1518,7 +1518,7 @@ impl Tab {
|
|||
.unwrap_or(true) // no max width, increase to your heart's content
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_reduce_pane_and_surroundings_left(&self, pane_id: &PaneId, reduce_by: usize) -> bool {
|
||||
|
|
@ -1537,7 +1537,7 @@ impl Tab {
|
|||
.unwrap_or(true) // no max width, increase to your heart's content
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_reduce_pane_and_surroundings_down(&self, pane_id: &PaneId, reduce_by: usize) -> bool {
|
||||
|
|
@ -1556,7 +1556,7 @@ impl Tab {
|
|||
.unwrap_or(true) // no max height, increase to your heart's content
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
fn can_reduce_pane_and_surroundings_up(&self, pane_id: &PaneId, reduce_by: usize) -> bool {
|
||||
|
|
@ -1575,7 +1575,7 @@ impl Tab {
|
|||
.unwrap_or(true) // no max height, increase to your heart's content
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
false
|
||||
}
|
||||
}
|
||||
pub fn resize_right(&mut self) {
|
||||
|
|
|
|||
|
|
@ -283,34 +283,34 @@ pub fn get_help(mode: InputMode) -> Help {
|
|||
let mut keybinds: Vec<(String, String)> = vec![];
|
||||
match mode {
|
||||
InputMode::Normal | InputMode::Command => {
|
||||
keybinds.push((format!("p"), format!("PANE")));
|
||||
keybinds.push((format!("t"), format!("TAB")));
|
||||
keybinds.push((format!("r"), format!("RESIZE")));
|
||||
keybinds.push((format!("s"), format!("SCROLL")));
|
||||
keybinds.push(("p".to_string(), "PANE".to_string()));
|
||||
keybinds.push(("t".to_string(), "TAB".to_string()));
|
||||
keybinds.push(("r".to_string(), "RESIZE".to_string()));
|
||||
keybinds.push(("s".to_string(), "SCROLL".to_string()));
|
||||
}
|
||||
InputMode::Resize => {
|
||||
keybinds.push((format!("←↓↑→"), format!("Resize")));
|
||||
keybinds.push(("←↓↑→".to_string(), "Resize".to_string()));
|
||||
}
|
||||
InputMode::Pane => {
|
||||
keybinds.push((format!("←↓↑→"), format!("Move focus")));
|
||||
keybinds.push((format!("p"), format!("Next")));
|
||||
keybinds.push((format!("n"), format!("New")));
|
||||
keybinds.push((format!("d"), format!("Split down")));
|
||||
keybinds.push((format!("r"), format!("Split right")));
|
||||
keybinds.push((format!("x"), format!("Close")));
|
||||
keybinds.push((format!("f"), format!("Fullscreen")));
|
||||
keybinds.push(("←↓↑→".to_string(), "Move focus".to_string()));
|
||||
keybinds.push(("p".to_string(), "Next".to_string()));
|
||||
keybinds.push(("n".to_string(), "New".to_string()));
|
||||
keybinds.push(("d".to_string(), "Split down".to_string()));
|
||||
keybinds.push(("r".to_string(), "Split right".to_string()));
|
||||
keybinds.push(("x".to_string(), "Close".to_string()));
|
||||
keybinds.push(("f".to_string(), "Fullscreen".to_string()));
|
||||
}
|
||||
InputMode::Tab => {
|
||||
keybinds.push((format!("←↓↑→"), format!("Move focus")));
|
||||
keybinds.push((format!("n"), format!("New")));
|
||||
keybinds.push((format!("x"), format!("Close")));
|
||||
keybinds.push(("←↓↑→".to_string(), "Move focus".to_string()));
|
||||
keybinds.push(("n".to_string(), "New".to_string()));
|
||||
keybinds.push(("x".to_string(), "Close".to_string()));
|
||||
}
|
||||
InputMode::Scroll => {
|
||||
keybinds.push((format!("↓↑"), format!("Scroll")));
|
||||
keybinds.push(("↓↑".to_string(), "Scroll".to_string()));
|
||||
}
|
||||
}
|
||||
keybinds.push((format!("ESC"), format!("BACK")));
|
||||
keybinds.push((format!("q"), format!("QUIT")));
|
||||
keybinds.push(("ESC".to_string(), "BACK".to_string()));
|
||||
keybinds.push(("q".to_string(), "QUIT".to_string()));
|
||||
Help { mode, keybinds }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ pub fn key_to_actions(
|
|||
// FIXME in command mode, unbound keystrokes should probably do nothing instead of
|
||||
// writing to the terminal. Will be easier to implement after a big refactor of the
|
||||
// input system (@categorille)
|
||||
.unwrap_or(vec![Action::Write(input)])
|
||||
.unwrap_or_else(|| vec![Action::Write(input)])
|
||||
} else {
|
||||
unreachable!("Unrecognized mode: {:?}", mode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ fn handle_command_exit(mut child: Child) {
|
|||
|
||||
for signal in signals.pending() {
|
||||
// FIXME: We need to handle more signals here!
|
||||
#[allow(clippy::single_match)]
|
||||
match signal {
|
||||
signal_hook::SIGINT => {
|
||||
child.kill().unwrap();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue