From 607b9d9be963df60de78a336a8b71f7ef703ff26 Mon Sep 17 00:00:00 2001 From: Blaž Hrastnik Date: Mon, 29 Jun 2026 02:25:46 +0000 Subject: [PATCH] fix: ui/document: Apply rendering offset to all methods Fixes #15934 --- helix-term/src/ui/document.rs | 11 +++++++++-- 1 file(s) changed, 9 insertion(s)(+), 2 deletion(s)(-) diff --git a/helix-term/src/ui/document.rs b/helix-term/src/ui/document.rs --- a/helix-term/src/ui/document.rs +++ b/helix-term/src/ui/document.rs @@ -426,6 +426,7 @@ if (y as usize) < self.offset.row { return; } + let y = y - self.offset.row as u16; self.surface .set_string(x, y + self.viewport.y, string, style) } @@ -434,6 +435,7 @@ if (y as usize) < self.offset.row { return; } + let y = y - self.offset.row as u16; self.surface .set_stringn(x, y + self.viewport.y, string, width, style); } @@ -441,8 +443,12 @@ /// Sets the style of an area **within the text viewport* this accounts /// both for the renderers vertical offset and its viewport pub fn set_style(&mut self, mut area: Rect, style: Style) { - area = area.clip_top(self.offset.row as u16); - area.y += self.viewport.y; + let offset = self.offset.row as u16; + if area.y < offset { + area.height = area.height.saturating_sub(offset - area.y); + area.y = offset; + } + area.y = area.y - offset + self.viewport.y; self.surface.set_style(area, style); } @@ -460,6 +466,7 @@ if (y as usize) < self.offset.row { return (x, y); } + let y = y - self.offset.row as u16; self.surface.set_string_truncated( x, y + self.viewport.y, -- tangled.sh