@@ -354,7 +354,13 @@ impl TableState {
354354impl<'a> Table<'a> {
355355 // type State = TableState;
356356
357− pub fn render_table(mut self, area: Rect, buf: &mut Buffer, state: &mut TableState) {
357+ pub fn render_table(
358+ mut self,
359+ area: Rect,
360+ buf: &mut Buffer,
361+ state: &mut TableState,
362+ truncate: bool,
363+ ) {
358364 if area.area() == 0 {
359365 return;
360366 }
@@ -401,6 +407,7 @@ impl<'a> Table<'a> {
401407 width: *width,
402408 height: max_header_height,
403409 },
410+ truncate,
404411 );
405412 col += *width + self.column_spacing;
406413 }
@@ -457,6 +464,7 @@ impl<'a> Table<'a> {
457464 width: *width,
458465 height: table_row.height,
459466 },
467+ truncate,
460468 );
461469 col += *width + self.column_spacing;
462470 }
@@ -464,20 +472,24 @@ impl<'a> Table<'a> {
464472 }
465473}
466474
467−fn render_cell(buf: &mut Buffer, cell: &Cell, area: Rect) {
475+fn render_cell(buf: &mut Buffer, cell: &Cell, area: Rect, truncate: bool) {
468476 buf.set_style(area, cell.style);
469477 for (i, spans) in cell.content.lines.iter().enumerate() {
470478 if i as u16 >= area.height {
471479 break;
472480 }
473− buf.set_spans(area.x, area.y + i as u16, spans, area.width);
481+ if truncate {
482+ buf.set_spans_truncated(area.x, area.y + i as u16, spans, area.width);
483+ } else {
484+ buf.set_spans(area.x, area.y + i as u16, spans, area.width);
485+ }
474486 }
475487}
476488
477489impl<'a> Widget for Table<'a> {
478490 fn render(self, area: Rect, buf: &mut Buffer) {
479491 let mut state = TableState::default();
480− Table::render_table(self, area, buf, &mut state);
492+ Table::render_table(self, area, buf, &mut state, false);
481493 }
482494}
483495