ui: Be smarter about centering previews

Try centering the whole block. If the block is too big for the viewport,
then make sure that the first line is within the preview.
This commit is contained in:
Blaž Hrastnik 2021-09-08 14:19:25 +09:00
parent f871d318c0
commit 2ce87968cd

View file

@ -124,9 +124,13 @@ fn render(&mut self, area: Rect, surface: &mut Surface, cx: &mut Context) {
}) {
// align to middle
let first_line = line
.map(|(start, _)| start)
.unwrap_or(0)
.saturating_sub(inner.height as usize / 2);
.map(|(start, end)| {
let height = end.saturating_sub(start) + 1;
let middle = start + (height.saturating_sub(1) / 2);
middle.saturating_sub(inner.height as usize / 2).min(start)
})
.unwrap_or(0);
let offset = Position::new(first_line, 0);
let highlights = EditorView::doc_syntax_highlights(