aboutsummaryrefslogtreecommitdiff
path: root/src/client/shell/actions.rs
diff options
context:
space:
mode:
authorakbash <akbash@herdr.dev>2026-09-09 02:35:31 +0300
committerGitHub <noreply@github.com>2026-09-09 02:35:31 +0300
commitb9ce96869e89937278d673d70ae4c135dd318469 (patch)
treefea7e39dad42f8cad1f1846af6babda546c1fa78 /src/client/shell/actions.rs
parent8be4cf765afddfd9cf3206602ba4dab682a29fa1 (diff)
feat: navigate and highlight workspaces across machines (#3755)
* fix: highlight workspace navigation with saved machines refs #3754 * feat: navigate workspaces across connected machines refs #3754 * feat: navigate workspaces across machines refs #3754 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'src/client/shell/actions.rs')
-rw-r--r--src/client/shell/actions.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/client/shell/actions.rs b/src/client/shell/actions.rs
index 31408457..119988f6 100644
--- a/src/client/shell/actions.rs
+++ b/src/client/shell/actions.rs
@@ -13,12 +13,27 @@ impl ClientShellState {
crate::input::KeybindMatch::Action(crate::input::KeybindAction::ToggleSidebar) => {
self.sidebar_collapsed = !self.sidebar_collapsed;
self.sidebar_collapsed_manual = true;
+ self.reveal_navigation_workspace = true;
self.invalidate_pane_surface();
outcome.repaint = true;
outcome.resize = true;
self.persist_chrome_preferences(outcome);
}
crate::input::KeybindMatch::Action(action) => {
+ if self.workspace_preview_action_blocked()
+ && matches!(
+ action,
+ crate::input::KeybindAction::RenameWorkspace
+ | crate::input::KeybindAction::CloseWorkspace
+ )
+ {
+ self.receive_endpoint_unavailable(
+ "Select an available workspace and press Enter before renaming or closing it"
+ .into(),
+ );
+ outcome.repaint = true;
+ return;
+ }
if matches!(
action,
crate::input::KeybindAction::NewWorktree
@@ -129,10 +144,8 @@ impl ClientShellState {
self.mobile_switcher_scroll = 0;
self.reveal_mobile_workspace = false;
self.mode = ClientShellMode::Navigate;
- self.navigate_workspace_id = self
- .snapshot
- .as_deref()
- .and_then(|snapshot| snapshot.focused_workspace_id.clone());
+ self.navigate_workspace_id = self.focused_navigation_target();
+ self.reveal_navigation_workspace = true;
outcome.repaint = true;
return;
}
@@ -337,7 +350,7 @@ impl ClientShellState {
self.push_endpoint_method_with_kind(method, PendingEndpointKind::Generic, outcome);
}
- fn push_endpoint_notice(
+ pub(super) fn push_endpoint_notice(
&mut self,
kind: ClientEndpointNoticeKind,
code: impl Into<String>,