add draft messages

This commit is contained in:
Mikhail Kilin
2026-01-27 12:31:31 +03:00
parent dc76e01f3c
commit ac684da820
5 changed files with 118 additions and 7 deletions

View File

@@ -148,15 +148,18 @@ fn render_input_with_cursor(prefix: &str, text: &str, cursor_pos: usize, color:
let chars: Vec<char> = text.chars().collect();
let mut spans: Vec<Span> = vec![Span::raw(prefix.to_string())];
// Ограничиваем cursor_pos границами текста
let safe_cursor_pos = cursor_pos.min(chars.len());
// Текст до курсора
if cursor_pos > 0 {
let before: String = chars[..cursor_pos].iter().collect();
if safe_cursor_pos > 0 {
let before: String = chars[..safe_cursor_pos].iter().collect();
spans.push(Span::styled(before, Style::default().fg(color)));
}
// Символ под курсором (или █ если курсор в конце)
if cursor_pos < chars.len() {
let cursor_char = chars[cursor_pos].to_string();
if safe_cursor_pos < chars.len() {
let cursor_char = chars[safe_cursor_pos].to_string();
spans.push(Span::styled(cursor_char, Style::default().fg(Color::Black).bg(color)));
} else {
// Курсор в конце - показываем блок
@@ -164,8 +167,8 @@ fn render_input_with_cursor(prefix: &str, text: &str, cursor_pos: usize, color:
}
// Текст после курсора
if cursor_pos + 1 < chars.len() {
let after: String = chars[cursor_pos + 1..].iter().collect();
if safe_cursor_pos + 1 < chars.len() {
let after: String = chars[safe_cursor_pos + 1..].iter().collect();
spans.push(Span::styled(after, Style::default().fg(color)));
}