diff --git a/src/popups/compare_commits.rs b/src/popups/compare_commits.rs index 5ff6ef87aa..13a69fe826 100644 --- a/src/popups/compare_commits.rs +++ b/src/popups/compare_commits.rs @@ -133,7 +133,12 @@ impl Component for CompareCommitsPopup { self.diff.focus(true); } else if key_match(e, self.key_config.keys.move_left) { - self.hide_stacked(false); + if self.diff.focused() { + self.details.focus(true); + self.diff.focus(false); + } else { + self.hide_stacked(false); + } } return Ok(EventState::Consumed); diff --git a/src/popups/file_revlog.rs b/src/popups/file_revlog.rs index 771ae857fe..527621f379 100644 --- a/src/popups/file_revlog.rs +++ b/src/popups/file_revlog.rs @@ -513,6 +513,12 @@ impl Component for FileRevlogPopup { ) && self.can_focus_diff() { self.diff.focus(true); + } else if key_match( + key, + self.key_config.keys.move_left, + ) && self.diff.focused() + { + self.diff.focus(false); } else if key_match(key, self.key_config.keys.enter) { if let Some(commit_id) = self.selected_commit() { self.hide_stacked(true); diff --git a/src/popups/inspect_commit.rs b/src/popups/inspect_commit.rs index 4acfe88e90..3bd3375df1 100644 --- a/src/popups/inspect_commit.rs +++ b/src/popups/inspect_commit.rs @@ -170,7 +170,12 @@ impl Component for InspectCommitPopup { self.diff.focus(true); } else if key_match(e, self.key_config.keys.move_left) { - self.hide_stacked(false); + if self.diff.focused() { + self.details.focus(true); + self.diff.focus(false); + } else { + self.hide_stacked(false); + } } else if key_match( e, self.key_config.keys.open_file_tree, diff --git a/src/tabs/status.rs b/src/tabs/status.rs index 135cf18e4e..977c7e2494 100644 --- a/src/tabs/status.rs +++ b/src/tabs/status.rs @@ -845,6 +845,16 @@ impl Component for Status { ) && self.can_focus_diff() { self.switch_focus(Focus::Diff).map(Into::into) + } else if key_match( + k, + self.key_config.keys.move_left, + ) && self.is_focus_on_diff() + { + self.switch_focus(match self.diff_target { + DiffTarget::Stage => Focus::Stage, + DiffTarget::WorkingDir => Focus::WorkDir, + }) + .map(Into::into) } else if key_match( k, self.key_config.keys.exit_popup,