diff options
author | Blaž Hrastnik | 2021-02-05 05:42:56 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-02-05 05:42:56 +0000 |
commit | c70080dd686738ab6272dd0b3c421c6621e86e34 (patch) | |
tree | fcb8c5733124ff1ce6ecfcc773bb635c9a489424 /helix-view | |
parent | 8f0ddf9632068a28cc09b32c84cfec9093b73104 (diff) |
Work around rendering errors for positions offscreen.
Diffstat (limited to 'helix-view')
-rw-r--r-- | helix-view/src/tree.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/helix-view/src/tree.rs b/helix-view/src/tree.rs index 100d8a54..784fea3f 100644 --- a/helix-view/src/tree.rs +++ b/helix-view/src/tree.rs @@ -152,16 +152,27 @@ impl Tree { match container.layout { Layout::Vertical => unimplemented!(), Layout::Horizontal => { - let len = container.children.len() as u16; + let len = container.children.len(); - let width = area.width / len; + let width = area.width / len as u16; let mut child_x = area.x; - for (_i, child) in container.children.iter().enumerate() { - let area = Rect::new(child_x, area.y, width, area.height); + for (i, child) in container.children.iter().enumerate() { + let mut area = Rect::new( + child_x, + container.area.y, + width, + container.area.height, + ); child_x += width; + // last child takes the remaining width because we can get uneven + // space from rounding + if i == len - 1 { + area.width = container.area.x + container.area.width - area.x; + } + self.stack.push((*child, area)); } } |