diff options
Diffstat (limited to 'alacritty/src/message_bar.rs')
-rw-r--r-- | alacritty/src/message_bar.rs | 107 |
1 files changed, 15 insertions, 92 deletions
diff --git a/alacritty/src/message_bar.rs b/alacritty/src/message_bar.rs index 4c43c3d3..851cb6ee 100644 --- a/alacritty/src/message_bar.rs +++ b/alacritty/src/message_bar.rs @@ -34,7 +34,9 @@ impl Message { /// Formatted message text lines. pub fn text(&self, size_info: &SizeInfo) -> Vec<String> { let num_cols = size_info.cols().0; - let max_lines = size_info.lines().saturating_sub(MIN_FREE_LINES); + let total_lines = + (size_info.height() - 2. * size_info.padding_y()) / size_info.cell_height(); + let max_lines = (total_lines as usize).saturating_sub(MIN_FREE_LINES); let button_len = CLOSE_BUTTON_TEXT.len(); // Split line to fit the screen. @@ -169,7 +171,8 @@ impl MessageBuffer { #[cfg(test)] mod tests { - use super::{Message, MessageBuffer, MessageType, MIN_FREE_LINES}; + use super::*; + use alacritty_terminal::term::SizeInfo; #[test] @@ -177,15 +180,7 @@ mod tests { let input = "a"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 7., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(7., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -197,15 +192,7 @@ mod tests { let input = "fo\nbar"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 6., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(6., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -217,15 +204,7 @@ mod tests { let input = "a\nb"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 6., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(6., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -237,15 +216,7 @@ mod tests { let input = "foobar1"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 6., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(6., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -257,15 +228,7 @@ mod tests { let input = "foobar"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 6., - height: 0., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(6., 0., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -277,15 +240,7 @@ mod tests { let input = "hahahahahahahahahahaha truncate this because it's too long for the term"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 22., - height: (MIN_FREE_LINES + 2) as f32, - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(22., (MIN_FREE_LINES + 2) as f32, 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -300,15 +255,7 @@ mod tests { let input = "ha"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 2., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(2., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -320,15 +267,7 @@ mod tests { let input = "hahahahahahahahaha"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 2., - height: (MIN_FREE_LINES + 2) as f32, - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(2., (MIN_FREE_LINES + 2) as f32, 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -340,15 +279,7 @@ mod tests { let input = "test"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 5., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(5., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); @@ -398,15 +329,7 @@ mod tests { let input = "a\nbc defg"; let mut message_buffer = MessageBuffer::new(); message_buffer.push(Message::new(input.into(), MessageType::Error)); - let size = SizeInfo { - width: 5., - height: 10., - cell_width: 1., - cell_height: 1., - padding_x: 0., - padding_y: 0., - dpr: 0., - }; + let size = SizeInfo::new(5., 10., 1., 1., 0., 0., false); let lines = message_buffer.message().unwrap().text(&size); |