summaryrefslogtreecommitdiffstats
path: root/src/joshuto/command/cursor_move.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/joshuto/command/cursor_move.rs')
-rw-r--r--src/joshuto/command/cursor_move.rs95
1 files changed, 56 insertions, 39 deletions
diff --git a/src/joshuto/command/cursor_move.rs b/src/joshuto/command/cursor_move.rs
index c4e4036..0779c94 100644
--- a/src/joshuto/command/cursor_move.rs
+++ b/src/joshuto/command/cursor_move.rs
@@ -25,7 +25,9 @@ impl CursorMove {
pub fn cursor_move(new_index: i32, context: &mut joshuto::JoshutoContext)
{
- if let Some(ref mut curr_list) = context.curr_list {
+ let curr_tab = &mut context.tabs[context.tab_index];
+
+ if let Some(ref mut curr_list) = curr_tab.curr_list {
let curr_index = curr_list.index;
let dir_len = curr_list.contents.len() as i32;
@@ -42,15 +44,15 @@ impl CursorMove {
}
}
- let dir_list = context.preview_list.take();
+ let dir_list = curr_tab.preview_list.take();
if let Some(s) = dir_list {
- context.history.insert(s);
+ curr_tab.history.insert(s);
}
curr_list.index = new_index;
}
- if let Some(ref curr_list) = context.curr_list {
+ if let Some(ref curr_list) = curr_tab.curr_list {
let curr_index = curr_list.index as usize;
let new_path = &curr_list.contents[curr_index].path;
@@ -58,11 +60,11 @@ impl CursorMove {
ncurses::wnoutrefresh(context.views.mid_win.win);
if new_path.is_dir() {
- match context.history.pop_or_create(new_path.as_path(),
+ match curr_tab.history.pop_or_create(new_path.as_path(),
&context.config_t.sort_type) {
Ok(s) => {
- context.preview_list = Some(s);
- ui::redraw_view(&context.views.right_win, context.preview_list.as_ref());
+ curr_tab.preview_list = Some(s);
+ ui::redraw_view(&context.views.right_win, curr_tab.preview_list.as_ref());
},
Err(e) => ui::wprint_err(&context.views.right_win, e.to_string().as_str()),
}
@@ -71,8 +73,8 @@ impl CursorMove {
ncurses::wnoutrefresh(context.views.right_win.win);
}
- ui::redraw_status(&context.views, context.curr_list.as_ref(), &context.curr_path,
- &context.config_t.username, &context.config_t.hostname);
+ ui::redraw_status(&context.views, curr_tab.curr_list.as_ref(), &curr_tab.curr_path,
+ &context.username, &context.hostname);
ncurses::doupdate();
}
@@ -93,9 +95,12 @@ impl command::Runnable for CursorMove {
{
let mut movement: Option<i32> = None;
- if let Some(ref curr_list) = context.curr_list {
- let curr_index = curr_list.index;
- movement = Some(curr_index + self.movement);
+ {
+ let curr_tab = &mut context.tabs[context.tab_index];
+ if let Some(curr_list) = curr_tab.curr_list.as_ref() {
+ let curr_index = curr_list.index;
+ movement = Some(curr_index + self.movement);
+ }
}
if let Some(s) = movement {
CursorMove::cursor_move(s, context);
@@ -125,14 +130,17 @@ impl command::Runnable for CursorMovePageUp {
{
let mut movement: Option<i32> = None;
- if let Some(ref curr_list) = context.curr_list {
- let curr_index = curr_list.index;
- if curr_index <= 0 {
- return;
- }
+ {
+ let curr_tab = &mut context.tabs[context.tab_index];
+ if let Some(curr_list) = curr_tab.curr_list.as_ref() {
+ let curr_index = curr_list.index;
+ if curr_index <= 0 {
+ return;
+ }
- let half_page = context.views.mid_win.cols / 2;
- movement = Some(curr_index - half_page);
+ let half_page = context.views.mid_win.cols / 2;
+ movement = Some(curr_index - half_page);
+ }
}
if let Some(s) = movement {
CursorMove::cursor_move(s, context);
@@ -162,15 +170,18 @@ impl command::Runnable for CursorMovePageDown {
{
let mut movement: Option<i32> = None;
- if let Some(ref curr_list) = context.curr_list {
- let curr_index = curr_list.index;
- let dir_len = curr_list.contents.len();
- if curr_index >= dir_len as i32 - 1 {
- return;
- }
+ {
+ let curr_tab = &mut context.tabs[context.tab_index];
+ if let Some(curr_list) = curr_tab.curr_list.as_ref() {
+ let curr_index = curr_list.index;
+ let dir_len = curr_list.contents.len();
+ if curr_index >= dir_len as i32 - 1 {
+ return;
+ }
- let half_page = context.views.mid_win.cols / 2;
- movement = Some(curr_index + half_page);
+ let half_page = context.views.mid_win.cols / 2;
+ movement = Some(curr_index + half_page);
+ }
}
if let Some(s) = movement {
CursorMove::cursor_move(s, context);
@@ -200,12 +211,15 @@ impl command::Runnable for CursorMoveHome {
{
let mut movement: Option<i32> = None;
- if let Some(ref curr_list) = context.curr_list {
- let curr_index = curr_list.index;
- if curr_index <= 0 {
- return;
+ {
+ let curr_tab = &mut context.tabs[context.tab_index];
+ if let Some(curr_list) = curr_tab.curr_list.as_ref() {
+ let curr_index = curr_list.index;
+ if curr_index <= 0 {
+ return;
+ }
+ movement = Some(0);
}
- movement = Some(0);
}
if let Some(s) = movement {
CursorMove::cursor_move(s, context);
@@ -233,17 +247,20 @@ impl std::fmt::Display for CursorMoveEnd {
impl command::Runnable for CursorMoveEnd {
fn execute(&self, context: &mut joshuto::JoshutoContext)
{
-
let mut movement: Option<i32> = None;
- if let Some(ref curr_list) = context.curr_list {
- let curr_index = curr_list.index;
- let dir_len = curr_list.contents.len();
- if curr_index >= dir_len as i32 - 1 {
- return;
+ {
+ let curr_tab = &mut context.tabs[context.tab_index];
+ if let Some(curr_list) = curr_tab.curr_list.as_ref() {
+ let curr_index = curr_list.index;
+ let dir_len = curr_list.contents.len();
+ if curr_index >= dir_len as i32 - 1 {
+ return;
+ }
+ movement = Some(dir_len as i32 - 1);
}
- movement = Some(dir_len as i32 - 1);
}
+
if let Some(s) = movement {
CursorMove::cursor_move(s, context);
}