diff options
Diffstat (limited to 'src/ui/grid/context.rs')
-rw-r--r-- | src/ui/grid/context.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/ui/grid/context.rs b/src/ui/grid/context.rs index eb870f4..9018b29 100644 --- a/src/ui/grid/context.rs +++ b/src/ui/grid/context.rs @@ -120,16 +120,27 @@ impl Context { } /// Updates internals that are dependant on the drawing area. - pub fn update( + pub fn resize( &mut self, da: &DrawingArea, win: &gdk::Window, cols: usize, rows: usize, hl_defs: &HlDefs, - prev_cols: usize, - prev_rows: usize, ) { + let prev_rows = self.rows.len(); + let prev_cols = self.rows.get(0).map(|r| r.len()).unwrap_or(0); + + if self.rows.len() != rows { + self.rows.resize_with(rows, || Row::new(rows)); + } + + if self.rows.get(0).unwrap().len() != cols { + for row in self.rows.iter_mut() { + row.resize(cols); + } + } + let pctx = da.get_pango_context().unwrap(); pctx.set_font_description(&self.cell_metrics.font.as_pango_font()); |