aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-07 02:18:59 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-07 02:18:59 +0300
commit06f01df93d895298508173cd59a8cf8eb2dd5bdc (patch)
tree40096a3f8d45d91160952e6d69fd8f78a892f60e /src/app
parent6f201dcc13c449be3349ca3bf98bbf97164b1051 (diff)
fix: restore collapsed sidebar expand toggle
Diffstat (limited to 'src/app')
-rw-r--r--src/app/input.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/app/input.rs b/src/app/input.rs
index 17f283c8..e483029b 100644
--- a/src/app/input.rs
+++ b/src/app/input.rs
@@ -1971,6 +1971,11 @@ impl AppState {
if in_sidebar {
if self.sidebar_collapsed {
+ if self.on_collapsed_sidebar_toggle(mouse.column, mouse.row) {
+ self.sidebar_collapsed = false;
+ return None;
+ }
+
if let Some(idx) = self.collapsed_workspace_at_row(mouse.row) {
self.switch_workspace(idx);
self.mode = Mode::Terminal;
@@ -2316,6 +2321,18 @@ impl AppState {
&& row < sidebar.y + sidebar.height
}
+ fn on_collapsed_sidebar_toggle(&self, col: u16, row: u16) -> bool {
+ if !self.sidebar_collapsed {
+ return false;
+ }
+ let rect = crate::ui::collapsed_sidebar_toggle_rect(self.view.sidebar_rect);
+ rect.width > 0
+ && col >= rect.x
+ && col < rect.x + rect.width
+ && row >= rect.y
+ && row < rect.y + rect.height
+ }
+
fn set_manual_sidebar_width(&mut self, divider_col: u16) {
let sidebar = self.view.sidebar_rect;
let width = divider_col.saturating_sub(sidebar.x).saturating_add(1);
@@ -3621,6 +3638,23 @@ mod tests {
}
#[test]
+ fn clicking_collapsed_sidebar_toggle_expands_sidebar() {
+ let mut app = app_for_mouse_test();
+ app.state.sidebar_collapsed = true;
+ app.state.view.sidebar_rect = Rect::new(0, 0, 4, 20);
+ app.state.view.terminal_area = Rect::new(4, 0, 80, 20);
+
+ let toggle = crate::ui::collapsed_sidebar_toggle_rect(app.state.view.sidebar_rect);
+ app.handle_mouse(mouse(
+ MouseEventKind::Down(MouseButton::Left),
+ toggle.x,
+ toggle.y,
+ ));
+
+ assert!(!app.state.sidebar_collapsed);
+ }
+
+ #[test]
fn clicking_workspace_switches_on_mouse_up() {
let mut app = app_for_mouse_test();
app.state.workspaces = vec![Workspace::test_new("a"), Workspace::test_new("b")];