summaryrefslogtreecommitdiff
path: root/helix-view/src/tree.rs
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-02-05 05:42:56 +0000
committerBlaž Hrastnik2021-02-05 05:42:56 +0000
commitc70080dd686738ab6272dd0b3c421c6621e86e34 (patch)
treefcb8c5733124ff1ce6ecfcc773bb635c9a489424 /helix-view/src/tree.rs
parent8f0ddf9632068a28cc09b32c84cfec9093b73104 (diff)
Work around rendering errors for positions offscreen.
Diffstat (limited to 'helix-view/src/tree.rs')
-rw-r--r--helix-view/src/tree.rs19
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));
}
}