summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-04-05 10:29:41 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-04-05 10:29:41 -0400
commit3d5a4f135aace86403820a292c9f9294dae4891b (patch)
tree0c49b18d2338c0c175d7e35da4a083e4e3e27c4d /src/ui
parent9cf31fd66ac1367e7d57306f77b617b4eb620266 (diff)
make tui_worker more modular
- call flush_events outside of views to reduce coupling and unexpected behaviours
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/views/tui_textfield.rs2
-rw-r--r--src/ui/views/tui_worker_view.rs28
-rw-r--r--src/ui/widgets/tui_worker.rs14
3 files changed, 20 insertions, 24 deletions
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() {