tracexec 0.8.2

Tracer for execve{,at} and pre-exec behavior, launcher for debuggers.
use ratatui::{
  buffer::Buffer,
  layout::Rect,
  widgets::{Paragraph, WidgetRef},
};
use tui_popup::SizedWidgetRef;

#[derive(Debug)]
pub struct SizedParagraph<'a> {
  inner: Paragraph<'a>,
  width: usize,
}

impl<'a> SizedParagraph<'a> {
  pub fn new(paragraph: Paragraph<'a>, width: usize) -> Self {
    Self {
      inner: paragraph,
      width,
    }
  }
}

impl SizedWidgetRef for SizedParagraph<'_> {
  fn width(&self) -> usize {
    self.width
  }

  fn height(&self) -> usize {
    self.inner.line_count(self.width as u16)
  }
}

impl WidgetRef for SizedParagraph<'_> {
  fn render_ref(&self, area: Rect, buf: &mut Buffer) {
    self.inner.render_ref(area, buf)
  }
}