aboutsummaryrefslogtreecommitdiff
path: root/src/ui.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 15:49:07 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 15:50:06 +0300
commit1b980eaa9d4cbc050b6b81525e4b6b72ae853be5 (patch)
tree48afc3595519c9e229e22528ecc229a66f9bd874 /src/ui.rs
parent57c880f0ebaa5011abc90f4e2fd4f84fc072ce35 (diff)
feat: show clipboard copy feedback
Diffstat (limited to 'src/ui.rs')
-rw-r--r--src/ui.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ui.rs b/src/ui.rs
index 28504b9e..7b45c8c4 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -50,7 +50,10 @@ pub(crate) use self::scrollbar::{
};
use self::settings::render_settings_overlay;
use self::sidebar::{render_sidebar, render_sidebar_collapsed};
-use self::status::{render_config_diagnostic, render_toast_notification, toast_notification_rect};
+use self::status::{
+ render_config_diagnostic, render_copy_feedback, render_toast_notification,
+ toast_notification_rect,
+};
use self::tabs::render_tab_bar;
pub(crate) use self::{
dialogs::{
@@ -405,6 +408,7 @@ fn render_notifications(app: &AppState, frame: &mut Frame, terminal_area: Rect)
if let Some(message) = &app.config_diagnostic {
render_config_diagnostic(frame, terminal_area, message, &app.palette);
}
+ let mut copy_feedback_offset = u16::from(has_config_diagnostic);
if let Some(toast) = &app.toast {
if app.view.layout == ViewLayout::Mobile {
render_mobile_toast_banner(
@@ -423,6 +427,20 @@ fn render_notifications(app: &AppState, frame: &mut Frame, terminal_area: Rect)
&app.palette,
);
}
+ copy_feedback_offset =
+ copy_feedback_offset.saturating_add(if app.view.layout == ViewLayout::Mobile {
+ 1
+ } else {
+ toast_notification_rect(terminal_area, toast, has_config_diagnostic).height
+ });
+ }
+ if let Some(feedback) = &app.copy_feedback {
+ let area = if app.view.layout == ViewLayout::Mobile {
+ frame.area()
+ } else {
+ terminal_area
+ };
+ render_copy_feedback(frame, area, feedback, copy_feedback_offset, &app.palette);
}
}