diff options
author | rabite <rabite@posteo.de> | 2019-07-08 12:53:44 +0200 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2019-07-08 13:00:32 +0200 |
commit | 072b39b3cfeac109f8bb0fff747c6dc50d747942 (patch) | |
tree | b96cbdc6e8cdcfcc214cbfcf92145cd19b00e3fc /src/hbox.rs | |
parent | 9b6bb7fea092b621337e797b8fd3628ff7ad8218 (diff) |
initial support for SIXEL/kitty graphics
Diffstat (limited to 'src/hbox.rs')
-rw-r--r-- | src/hbox.rs | 18 |
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)), |