diff options
-rw-r--r-- | src/commands/command_line.rs | 1 | ||||
-rw-r--r-- | src/commands/open_file.rs | 2 | ||||
-rw-r--r-- | src/commands/set_mode.rs | 1 | ||||
-rw-r--r-- | src/commands/show_workers.rs | 2 | ||||
-rw-r--r-- | src/ui/views/tui_textfield.rs | 2 | ||||
-rw-r--r-- | src/ui/views/tui_worker_view.rs | 28 | ||||
-rw-r--r-- | src/ui/widgets/tui_worker.rs | 14 |
7 files changed, 26 insertions, 24 deletions
diff --git a/src/commands/command_line.rs b/src/commands/command_line.rs index 2598283..aa86c6d 100644 --- a/src/commands/command_line.rs +++ b/src/commands/command_line.rs @@ -12,6 +12,7 @@ pub fn readline( prefix: &str, suffix: &str, ) -> JoshutoResult<()> { + context.flush_event(); let user_input: Option<String> = TuiTextField::default() .prompt(":") .prefix(prefix) diff --git a/src/commands/open_file.rs b/src/commands/open_file.rs index 3dd8d3d..0f3105f 100644 --- a/src/commands/open_file.rs +++ b/src/commands/open_file.rs @@ -77,6 +77,8 @@ where const PROMPT: &str = "open_with "; let user_input: Option<String> = { + context.flush_event(); + let menu_options: Vec<String> = options .iter() .enumerate() diff --git a/src/commands/set_mode.rs b/src/commands/set_mode.rs index 214843c..6fecaad 100644 --- a/src/commands/set_mode.rs +++ b/src/commands/set_mode.rs @@ -44,6 +44,7 @@ pub fn set_mode(context: &mut JoshutoContext, backend: &mut TuiBackend) -> Joshu let user_input = match entry { Some(entry) => { + context.flush_event(); let mode = entry.metadata.permissions_ref().mode(); let mode_string = unix::mode_to_string(mode); TuiTextField::default() diff --git a/src/commands/show_workers.rs b/src/commands/show_workers.rs index 1ddb74c..f539549 100644 --- a/src/commands/show_workers.rs +++ b/src/commands/show_workers.rs @@ -5,6 +5,8 @@ use crate::ui::views::TuiWorkerView; use crate::ui::TuiBackend; pub fn show_workers(context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> { + context.flush_event(); + let view = TuiWorkerView::new(); view.display(context, backend); Ok(()) diff --git a/src/ui/views/tui_textfield.rs b/src/ui/views/tui_textfield.rs index c341724..b2e72cb 100644 --- a/src/ui/views/tui_textfield.rs +++ b/src/ui/views/tui_textfield.rs @@ -72,8 +72,6 @@ impl<'a> TuiTextField<'a> { backend: &mut TuiBackend, context: &mut JoshutoContext, ) -> Option<String> { - context.flush_event(); - let mut line_buffer = line_buffer::LineBuffer::with_capacity(255); let completer = FilenameCompleter::new(); diff --git a/src/ui/views/tui_worker_view.rs b/src/ui/views/tui_worker_view.rs index 09b43b9..3f19fe3 100644 --- a/src/ui/views/tui_worker_view.rs +++ b/src/ui/views/tui_worker_view.rs @@ -3,7 +3,7 @@ use termion::event::{Event, Key}; use tui::layout::Rect; use crate::context::JoshutoContext; -use crate::ui::widgets::TuiWorker; +use crate::ui::widgets::{TuiTopBar, TuiWorker}; use crate::ui::TuiBackend; use crate::util::event::JoshutoEvent; use crate::util::input; @@ -16,19 +16,31 @@ impl TuiWorkerView { } pub fn display(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) { - context.flush_event(); let terminal = backend.terminal_mut(); loop { let _ = terminal.draw(|frame| { - let f_size: Rect = frame.size(); - if f_size.height == 0 { + let area: Rect = frame.size(); + if area.height == 0 { return; } - { - let view = TuiWorker::new(&context); - frame.render_widget(view, f_size); - } + + let rect = Rect { + height: 1, + ..area + }; + let curr_tab = context.tab_context_ref().curr_tab_ref(); + let view = TuiTopBar::new(context, curr_tab.pwd()); + frame.render_widget(view, rect); + + let rect = Rect { + x: 0, + y: 1, + width: area.width, + height: area.height - 1, + }; + let view = TuiWorker::new(&context); + frame.render_widget(view, rect); }); if let Ok(event) = context.poll_event() { diff --git a/src/ui/widgets/tui_worker.rs b/src/ui/widgets/tui_worker.rs index 3033bb1..f4fad7f 100644 --- a/src/ui/widgets/tui_worker.rs +++ b/src/ui/widgets/tui_worker.rs @@ -5,7 +5,6 @@ use tui::widgets::Widget; use crate::context::JoshutoContext; use crate::io::FileOp; -use crate::ui::widgets::TuiTopBar; pub struct TuiWorker<'a> { pub context: &'a JoshutoContext, @@ -19,19 +18,6 @@ impl<'a> TuiWorker<'a> { impl<'a> Widget for TuiWorker<'a> { fn render(self, area: Rect, buf: &mut Buffer) { - let f_size = area; - - let topbar_width = f_size.width; - - let curr_tab = self.context.tab_context_ref().curr_tab_ref(); - let rect = Rect { - x: 0, - y: 0, - width: topbar_width, - height: 1, - }; - TuiTopBar::new(self.context, curr_tab.pwd()).render(rect, buf); - // TODO: could be styled better match self.context.worker_ref() { |