diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-26 15:49:07 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-26 15:50:06 +0300 |
| commit | 1b980eaa9d4cbc050b6b81525e4b6b72ae853be5 (patch) | |
| tree | 48afc3595519c9e229e22528ecc229a66f9bd874 /src/server | |
| parent | 57c880f0ebaa5011abc90f4e2fd4f84fc072ce35 (diff) | |
feat: show clipboard copy feedback
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/headless.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs index 4d9a2cc5..e65b741c 100644 --- a/src/server/headless.rs +++ b/src/server/headless.rs @@ -1150,8 +1150,8 @@ impl HeadlessServer { let data = base64::engine::general_purpose::STANDARD.encode(content.as_slice()); self.send_to_client(client_id, ServerMessage::Clipboard { data }); } - // ClipboardWrite doesn't change visual state — no render needed. - false + self.app.show_clipboard_feedback(); + true } AppEvent::StateChanged { pane_id, agent, .. } => { // Capture toast before handling. @@ -2428,6 +2428,16 @@ impl HeadlessServer { if self .app + .copy_feedback_deadline + .is_some_and(|deadline| now >= deadline) + { + self.app.copy_feedback_deadline = None; + self.app.state.copy_feedback = None; + changed = true; + } + + if self + .app .next_animation_tick .is_some_and(|deadline| now >= deadline) { @@ -4544,7 +4554,16 @@ next_tab = "" content: b"test".to_vec(), }); - assert!(!changed); + assert!(changed); + assert_eq!( + server + .app + .state + .copy_feedback + .as_ref() + .map(|feedback| feedback.message.as_str()), + Some("copied to clipboard") + ); match read_server_message( foreground_control_rx .recv_timeout(Duration::from_millis(100)) |
