Skip to content

Commit

Permalink
Refactor tab (#347)
Browse files Browse the repository at this point in the history
Co-authored-by: Chris Titus <[email protected]>
  • Loading branch information
jeevithakannan2 and ChrisTitusTech authored Sep 19, 2024
1 parent 9ed0a48 commit 197f359
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 8 deletions.
10 changes: 6 additions & 4 deletions tui/src/hint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ pub fn draw_shortcuts(state: &AppState, frame: &mut Frame, area: Rect) {
hints.push(Shortcut::new(vec!["q", "CTRL-c"], "Exit linutil"));

if state.at_root() {
hints.push(Shortcut::new(vec!["h", "Left", "Tab"], "Focus tab list"));
hints.push(Shortcut::new(vec!["h", "Left"], "Focus tab list"));
hints.push(get_list_item_shortcut(state));
} else {
if state.selected_item_is_up_dir() {
Expand All @@ -136,14 +136,14 @@ pub fn draw_shortcuts(state: &AppState, frame: &mut Frame, area: Rect) {
hints.push(Shortcut::new(vec!["d"], "Command Description"));
}
}
hints.push(Shortcut::new(vec!["Tab"], "Focus tab list"));
};

hints.push(Shortcut::new(vec!["k", "Up"], "Select item above"));
hints.push(Shortcut::new(vec!["j", "Down"], "Select item below"));
hints.push(Shortcut::new(vec!["t"], "Next theme"));
hints.push(Shortcut::new(vec!["T"], "Previous theme"));

hints.push(Shortcut::new(vec!["Tab"], "Next tab"));
hints.push(Shortcut::new(vec!["Shift-Tab"], "Previous tab"));
ShortcutList {
scope_name: "Item list",
hints,
Expand All @@ -154,11 +154,13 @@ pub fn draw_shortcuts(state: &AppState, frame: &mut Frame, area: Rect) {
scope_name: "Tab list",
hints: vec![
Shortcut::new(vec!["q", "CTRL-c"], "Exit linutil"),
Shortcut::new(vec!["l", "Right", "Tab", "Enter"], "Focus action list"),
Shortcut::new(vec!["l", "Right", "Enter"], "Focus action list"),
Shortcut::new(vec!["k", "Up"], "Select item above"),
Shortcut::new(vec!["j", "Down"], "Select item below"),
Shortcut::new(vec!["t"], "Next theme"),
Shortcut::new(vec!["T"], "Previous theme"),
Shortcut::new(vec!["Tab"], "Next tab"),
Shortcut::new(vec!["Shift-Tab"], "Previous tab"),
],
},

Expand Down
30 changes: 26 additions & 4 deletions tui/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,31 @@ impl AppState {
return true;
}

// Handle key only when Tablist or List is focused
// Prevents exiting the application even when a command is running
// Add keys here which should work on both TabList and List
if matches!(self.focus, Focus::TabList | Focus::List) {
match key.code {
KeyCode::Tab => {
if self.current_tab.selected().unwrap() == self.tabs.len() - 1 {
self.current_tab.select_first(); // Select first tab when it is at last
} else {
self.current_tab.select_next();
}
self.refresh_tab();
}
KeyCode::BackTab => {
if self.current_tab.selected().unwrap() == 0 {
self.current_tab.select(Some(self.tabs.len() - 1)); // Select last tab when it is at first
} else {
self.current_tab.select_previous();
}
self.refresh_tab();
}
_ => {}
}
}

match &mut self.focus {
Focus::FloatingWindow(command) => {
if command.handle_key_event(key) {
Expand All @@ -268,9 +293,7 @@ impl AppState {
}

Focus::TabList => match key.code {
KeyCode::Enter | KeyCode::Char('l') | KeyCode::Right | KeyCode::Tab => {
self.focus = Focus::List
}
KeyCode::Enter | KeyCode::Char('l') | KeyCode::Right => self.focus = Focus::List,

KeyCode::Char('j') | KeyCode::Down
if self.current_tab.selected().unwrap() + 1 < self.tabs.len() =>
Expand Down Expand Up @@ -304,7 +327,6 @@ impl AppState {
}
}
KeyCode::Char('/') => self.enter_search(),
KeyCode::Tab => self.focus = Focus::TabList,
KeyCode::Char('t') => self.theme.next(),
KeyCode::Char('T') => self.theme.prev(),
_ => {}
Expand Down

0 comments on commit 197f359

Please sign in to comment.