mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Keep exlorer entry index (if possible); reset only when changing directory
This commit is contained in:
@@ -484,9 +484,12 @@ impl FileTransferActivity {
|
|||||||
pub(super) fn local_scan(&mut self, path: &Path) {
|
pub(super) fn local_scan(&mut self, path: &Path) {
|
||||||
match self.context.as_ref().unwrap().local.scan_dir(path) {
|
match self.context.as_ref().unwrap().local.scan_dir(path) {
|
||||||
Ok(files) => {
|
Ok(files) => {
|
||||||
// Reset index
|
|
||||||
self.local.index = 0;
|
|
||||||
self.local.files = files;
|
self.local.files = files;
|
||||||
|
// Set index; keep if possible, otherwise set to last item
|
||||||
|
self.local.index = match self.local.files.get(self.local.index) {
|
||||||
|
Some(_) => self.local.index,
|
||||||
|
None => self.local.files.len() - 1
|
||||||
|
};
|
||||||
// Sort files
|
// Sort files
|
||||||
self.local.sort_files_by_name();
|
self.local.sort_files_by_name();
|
||||||
}
|
}
|
||||||
@@ -505,9 +508,12 @@ impl FileTransferActivity {
|
|||||||
pub(super) fn remote_scan(&mut self, path: &Path) {
|
pub(super) fn remote_scan(&mut self, path: &Path) {
|
||||||
match self.client.list_dir(path) {
|
match self.client.list_dir(path) {
|
||||||
Ok(files) => {
|
Ok(files) => {
|
||||||
// Reset index
|
|
||||||
self.remote.index = 0;
|
|
||||||
self.remote.files = files;
|
self.remote.files = files;
|
||||||
|
// Set index; keep if possible, otherwise set to last item
|
||||||
|
self.remote.index = match self.remote.files.get(self.remote.index) {
|
||||||
|
Some(_) => self.remote.index,
|
||||||
|
None => self.remote.files.len() - 1
|
||||||
|
};
|
||||||
// Sort files
|
// Sort files
|
||||||
self.remote.sort_files_by_name();
|
self.remote.sort_files_by_name();
|
||||||
}
|
}
|
||||||
@@ -541,6 +547,8 @@ impl FileTransferActivity {
|
|||||||
);
|
);
|
||||||
// Reload files
|
// Reload files
|
||||||
self.local_scan(path);
|
self.local_scan(path);
|
||||||
|
// Reset index
|
||||||
|
self.local.index = 0;
|
||||||
// Push prev_dir to stack
|
// Push prev_dir to stack
|
||||||
if push {
|
if push {
|
||||||
self.local.pushd(prev_dir.as_path())
|
self.local.pushd(prev_dir.as_path())
|
||||||
@@ -569,6 +577,8 @@ impl FileTransferActivity {
|
|||||||
);
|
);
|
||||||
// Update files
|
// Update files
|
||||||
self.remote_scan(path);
|
self.remote_scan(path);
|
||||||
|
// Reset index
|
||||||
|
self.remote.index = 0;
|
||||||
// Push prev_dir to stack
|
// Push prev_dir to stack
|
||||||
if push {
|
if push {
|
||||||
self.remote.pushd(prev_dir.as_path())
|
self.remote.pushd(prev_dir.as_path())
|
||||||
|
|||||||
Reference in New Issue
Block a user