aboutsummaryrefslogtreecommitdiff
path: root/src/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.rs')
-rw-r--r--src/ui.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/ui.rs b/src/ui.rs
index 129b4e67..dec8d7a9 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -458,7 +458,12 @@ pub fn render_with_runtime_registry(
fn render_notifications(app: &AppState, frame: &mut Frame, terminal_area: Rect) {
let has_config_diagnostic = app.config_diagnostic.is_some();
if let Some(message) = &app.config_diagnostic {
- render_config_diagnostic(frame, terminal_area, message, &app.palette);
+ let diagnostic_area = if app.view.layout == ViewLayout::Mobile {
+ terminal_area
+ } else {
+ frame.area()
+ };
+ render_config_diagnostic(frame, diagnostic_area, message, &app.palette);
}
let mut copy_feedback_offset = u16::from(has_config_diagnostic);
let mut toast_rect = None;
@@ -681,6 +686,25 @@ mod tests {
}
#[test]
+ fn mobile_config_diagnostic_keeps_command_visible() {
+ let mut app = crate::app::state::AppState::test_new();
+ app.workspaces = vec![Workspace::test_new("one")];
+ app.active = Some(0);
+ app.selected = 0;
+ app.mode = Mode::Terminal;
+ app.config_diagnostic = Some("config.toml:100:10; herdr config check".into());
+
+ let area = Rect::new(0, 0, 44, 20);
+ compute_view(&mut app, area);
+ let mut terminal = Terminal::new(TestBackend::new(area.width, area.height)).unwrap();
+ terminal.draw(|frame| render(&app, frame)).unwrap();
+ let row = buffer_row_text(terminal.backend().buffer(), area, app.view.terminal_area.y);
+
+ assert!(row.contains("config.toml:100:10"), "{row}");
+ assert!(row.contains("herdr config check"), "{row}");
+ }
+
+ #[test]
fn desktop_toast_hit_area_uses_full_frame_not_terminal_area() {
let mut app = crate::app::state::AppState::test_new();
app.workspaces = vec![Workspace::test_new("one")];