aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authordantepippi <6619666+dantepippi@users.noreply.github.com>2021-05-07 11:07:23 -0300
committerGitHub <noreply@github.com>2021-05-07 16:07:23 +0200
commit543b70a2bdd343ee274f9dca65020bd6915c8b27 (patch)
tree3751d0e039ddeec75cf93855c6070ab090ca2033 /src
parentdocs(changelog): terminal aifx (diff)
downloadsl0ppij-543b70a2bdd343ee274f9dca65020bd6915c8b27.tar.gz
sl0ppij-543b70a2bdd343ee274f9dca65020bd6915c8b27.tar.xz
sl0ppij-543b70a2bdd343ee274f9dca65020bd6915c8b27.zip
Moving the sync command to the Tab mode (#412)
* Moving the sync command to the Tab mode * Fixing bug related to plugin panes and sync mode When sync mode was enabled the input from a plugin pane was being incorrectly ignored.
Diffstat (limited to 'src')
-rw-r--r--src/client/tab.rs27
-rw-r--r--src/common/errors.rs4
-rw-r--r--src/common/input/actions.rs4
-rw-r--r--src/common/input/handler.rs2
-rw-r--r--src/common/screen.rs2
-rw-r--r--src/server/mod.rs8
6 files changed, 20 insertions, 27 deletions
diff --git a/src/client/tab.rs b/src/client/tab.rs
index 0098d78b..c4dc3474 100644
--- a/src/client/tab.rs
+++ b/src/client/tab.rs
@@ -607,23 +607,17 @@ impl Tab {
}
pub fn write_to_terminals_on_current_tab(&mut self, input_bytes: Vec<u8>) {
let pane_ids = self.get_pane_ids();
- pane_ids.iter().for_each(|pane_id| match pane_id {
- PaneId::Terminal(pid) => {
- self.write_to_pane_id(input_bytes.clone(), *pid);
- }
- PaneId::Plugin(_) => {}
+ pane_ids.iter().for_each(|&pane_id| {
+ self.write_to_pane_id(input_bytes.clone(), pane_id);
});
}
- pub fn write_to_pane_id(&mut self, mut input_bytes: Vec<u8>, pid: RawFd) {
- self.os_api
- .write_to_tty_stdin(pid, &mut input_bytes)
- .expect("failed to write to terminal");
- self.os_api.tcdrain(pid).expect("failed to drain terminal");
- }
pub fn write_to_active_terminal(&mut self, input_bytes: Vec<u8>) {
- match self.get_active_pane_id() {
- Some(PaneId::Terminal(active_terminal_id)) => {
- let active_terminal = self.get_active_pane().unwrap();
+ self.write_to_pane_id(input_bytes, self.get_active_pane_id().unwrap());
+ }
+ pub fn write_to_pane_id(&mut self, input_bytes: Vec<u8>, pane_id: PaneId) {
+ match pane_id {
+ PaneId::Terminal(active_terminal_id) => {
+ let active_terminal = self.panes.get(&pane_id).unwrap();
let mut adjusted_input = active_terminal.adjust_input_to_terminal(input_bytes);
self.os_api
.write_to_tty_stdin(active_terminal_id, &mut adjusted_input)
@@ -632,14 +626,13 @@ impl Tab {
.tcdrain(active_terminal_id)
.expect("failed to drain terminal");
}
- Some(PaneId::Plugin(pid)) => {
+ PaneId::Plugin(pid) => {
for key in parse_keys(&input_bytes) {
self.send_plugin_instructions
.send(PluginInstruction::Update(Some(pid), Event::KeyPress(key)))
.unwrap()
}
}
- _ => {}
}
}
pub fn get_active_terminal_cursor_position(&self) -> Option<(usize, usize)> {
@@ -713,7 +706,7 @@ impl Tab {
pub fn is_sync_panes_active(&self) -> bool {
self.synchronize_is_active
}
- pub fn toggle_sync_panes_is_active(&mut self) {
+ pub fn toggle_sync_tab_is_active(&mut self) {
self.synchronize_is_active = !self.synchronize_is_active;
}
pub fn panes_contain_widechar(&self) -> bool {
diff --git a/src/common/errors.rs b/src/common/errors.rs
index 411e0225..d8327462 100644
--- a/src/common/errors.rs
+++ b/src/common/errors.rs
@@ -200,7 +200,7 @@ pub enum ScreenContext {
PageScrollDown,
ClearScroll,
CloseFocusedPane,
- ToggleActiveSyncPanes,
+ ToggleActiveSyncTab,
ToggleActiveTerminalFullscreen,
SetSelectable,
SetInvisibleBorders,
@@ -261,7 +261,7 @@ impl From<&ScreenInstruction> for ScreenContext {
ScreenInstruction::UpdateTabName(_) => ScreenContext::UpdateTabName,
ScreenInstruction::TerminalResize(_) => ScreenContext::TerminalResize,
ScreenInstruction::ChangeMode(_) => ScreenContext::ChangeMode,
- ScreenInstruction::ToggleActiveSyncPanes => ScreenContext::ToggleActiveSyncPanes,
+ ScreenInstruction::ToggleActiveSyncTab => ScreenContext::ToggleActiveSyncTab,
}
}
}
diff --git a/src/common/input/actions.rs b/src/common/input/actions.rs
index 46a8e1d6..54cbbcdc 100644
--- a/src/common/input/actions.rs
+++ b/src/common/input/actions.rs
@@ -39,8 +39,8 @@ pub enum Action {
PageScrollDown,
/// Toggle between fullscreen focus pane and normal layout.
ToggleFocusFullscreen,
- /// Toggle between sending text commands to all panes and normal mode.
- ToggleActiveSyncPanes,
+ /// Toggle between sending text commands to all panes on the current tab and normal mode.
+ ToggleActiveSyncTab,
/// Open a new pane in the specified direction (relative to focus).
/// If no direction is specified, will try to use the biggest available space.
NewPane(Option<Direction>),
diff --git a/src/common/input/handler.rs b/src/common/input/handler.rs
index 75f9f8b1..a4293220 100644
--- a/src/common/input/handler.rs
+++ b/src/common/input/handler.rs
@@ -160,7 +160,6 @@ pub fn get_mode_info(mode: InputMode, palette: Palette) -> ModeInfo {
keybinds.push(("d".to_string(), "Down split".to_string()));
keybinds.push(("r".to_string(), "Right split".to_string()));
keybinds.push(("x".to_string(), "Close".to_string()));
- keybinds.push(("s".to_string(), "Sync".to_string()));
keybinds.push(("f".to_string(), "Fullscreen".to_string()));
}
InputMode::Tab => {
@@ -168,6 +167,7 @@ pub fn get_mode_info(mode: InputMode, palette: Palette) -> ModeInfo {
keybinds.push(("n".to_string(), "New".to_string()));
keybinds.push(("x".to_string(), "Close".to_string()));
keybinds.push(("r".to_string(), "Rename".to_string()));
+ keybinds.push(("s".to_string(), "Sync".to_string()));
}
InputMode::Scroll => {
keybinds.push(("↓↑".to_string(), "Scroll".to_string()));
diff --git a/src/common/screen.rs b/src/common/screen.rs
index 562b0ffe..62d87b51 100644
--- a/src/common/screen.rs
+++ b/src/common/screen.rs
@@ -52,7 +52,7 @@ pub enum ScreenInstruction {
NewTab(RawFd),
SwitchTabNext,
SwitchTabPrev,
- ToggleActiveSyncPanes,
+ ToggleActiveSyncTab,
CloseTab,
GoToTab(u32),
UpdateTabName(Vec<u8>),
diff --git a/src/server/mod.rs b/src/server/mod.rs
index c0cf482c..a90831d9 100644
--- a/src/server/mod.rs
+++ b/src/server/mod.rs
@@ -528,11 +528,11 @@ fn init_session(
ScreenInstruction::ChangeMode(mode_info) => {
screen.change_mode(mode_info);
}
- ScreenInstruction::ToggleActiveSyncPanes => {
+ ScreenInstruction::ToggleActiveSyncTab => {
screen
.get_active_tab_mut()
.unwrap()
- .toggle_sync_panes_is_active();
+ .toggle_sync_tab_is_active();
screen.update_tabs();
}
ScreenInstruction::Exit => {
@@ -781,10 +781,10 @@ fn route_action(action: Action, session: &SessionMetaData, os_input: &dyn Server
.send(ScreenInstruction::SwitchTabPrev)
.unwrap();
}
- Action::ToggleActiveSyncPanes => {
+ Action::ToggleActiveSyncTab => {
session
.send_screen_instructions
- .send(ScreenInstruction::ToggleActiveSyncPanes)
+ .send(ScreenInstruction::ToggleActiveSyncTab)
.unwrap();
}
Action::CloseTab => {