summaryrefslogtreecommitdiffstats
path: root/src/hbox.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-07-08 12:53:44 +0200
committerrabite <rabite@posteo.de>2019-07-08 13:00:32 +0200
commit072b39b3cfeac109f8bb0fff747c6dc50d747942 (patch)
treeb96cbdc6e8cdcfcc214cbfcf92145cd19b00e3fc /src/hbox.rs
parent9b6bb7fea092b621337e797b8fd3628ff7ad8218 (diff)
initial support for SIXEL/kitty graphics
Diffstat (limited to 'src/hbox.rs')
-rw-r--r--src/hbox.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/hbox.rs b/src/hbox.rs
index 8ad23c6..e370fde 100644
--- a/src/hbox.rs
+++ b/src/hbox.rs
@@ -123,17 +123,23 @@ impl<T> HBox<T> where T: Widget + PartialEq {
let len = coords.len();
let gap = if len == ratios.len() { 0 } else { 1 };
- let widget_xsize = *ratio as u16;
+ let prev_coords = coords.last();
+ let prev_xsize = prev_coords.map(|c| c.xsize());
+ let prev_xpos = prev_coords.map(|c| c.xpos());
+
+ let widget_xsize = box_xsize * *ratio as u16 / 100;
+
let widget_xpos = if len == 0 {
box_coords.top().x()
} else {
- let prev_coords = coords.last().unwrap();
- let prev_xsize = prev_coords.xsize();
- let prev_xpos = prev_coords.position().x();
-
- prev_xsize + prev_xpos + gap
+ prev_xsize.unwrap() + prev_xpos.unwrap() + gap
};
+ // Ensure that last widget isn't under/over sized due to gap/rounding
+ let widget_xsize = if len+1 == ratios.len() && len != 0 {
+ box_xsize - (prev_xpos.unwrap() + prev_xsize.unwrap())
+ } else { widget_xsize };
+
coords.push(Coordinates {
size: Size((widget_xsize,
box_ysize)),