fix: update network path when entering uri

closes: #1406
This commit is contained in:
Cheong Lau 2025-12-07 09:53:22 +10:00 committed by Jacob Kauffmann
parent 11429214c8
commit 7c7dbe7178
3 changed files with 10 additions and 7 deletions

View file

@ -217,7 +217,7 @@ fn network_scan(uri: &str, sizes: IconSizes) -> Result<Vec<tab::Item>, String> {
Ok(items) Ok(items)
} }
fn dir_info(uri: &str) -> Result<(String, String), glib::Error> { fn dir_info(uri: &str) -> Result<(String, String, Option<PathBuf>), glib::Error> {
let (resolved_uri, file) = resolve_uri(uri); let (resolved_uri, file) = resolve_uri(uri);
let info = file.query_info( let info = file.query_info(
gio::FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, gio::FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
@ -225,7 +225,7 @@ fn dir_info(uri: &str) -> Result<(String, String), glib::Error> {
gio::Cancellable::NONE, gio::Cancellable::NONE,
)?; )?;
Ok((resolved_uri, info.display_name().into())) Ok((resolved_uri, info.display_name().into(), file.path()))
} }
fn mount_op(uri: String, event_tx: mpsc::UnboundedSender<Event>) -> gio::MountOperation { fn mount_op(uri: String, event_tx: mpsc::UnboundedSender<Event>) -> gio::MountOperation {
@ -288,7 +288,10 @@ enum Cmd {
IconSizes, IconSizes,
mpsc::Sender<Result<Vec<tab::Item>, String>>, mpsc::Sender<Result<Vec<tab::Item>, String>>,
), ),
DirInfo(String, mpsc::Sender<Result<(String, String), glib::Error>>), DirInfo(
String,
mpsc::Sender<Result<(String, String, Option<PathBuf>), glib::Error>>,
),
Unmount(MounterItem), Unmount(MounterItem),
} }
@ -651,7 +654,7 @@ impl Mounter for Gvfs {
items_rx.blocking_recv() items_rx.blocking_recv()
} }
fn dir_info(&self, uri: &str) -> Option<(String, String)> { fn dir_info(&self, uri: &str) -> Option<(String, String, Option<PathBuf>)> {
let (result_tx, mut result_rx) = mpsc::channel(1); let (result_tx, mut result_rx) = mpsc::channel(1);
self.command_tx self.command_tx
.send(Cmd::DirInfo(uri.to_string(), result_tx)) .send(Cmd::DirInfo(uri.to_string(), result_tx))

View file

@ -116,7 +116,7 @@ pub trait Mounter: Send + Sync {
fn mount(&self, item: MounterItem) -> Task<()>; fn mount(&self, item: MounterItem) -> Task<()>;
fn network_drive(&self, uri: String) -> Task<()>; fn network_drive(&self, uri: String) -> Task<()>;
fn network_scan(&self, uri: &str, sizes: IconSizes) -> Option<Result<Vec<tab::Item>, String>>; fn network_scan(&self, uri: &str, sizes: IconSizes) -> Option<Result<Vec<tab::Item>, String>>;
fn dir_info(&self, uri: &str) -> Option<(String, String)>; fn dir_info(&self, uri: &str) -> Option<(String, String, Option<PathBuf>)>;
fn unmount(&self, item: MounterItem) -> Task<()>; fn unmount(&self, item: MounterItem) -> Task<()>;
fn subscription(&self) -> Subscription<MounterMessage>; fn subscription(&self) -> Subscription<MounterMessage>;
} }

View file

@ -1362,11 +1362,11 @@ pub struct EditLocation {
impl EditLocation { impl EditLocation {
pub fn resolve(&self) -> Option<Location> { pub fn resolve(&self) -> Option<Location> {
if let Location::Network(uri, _, path) = &self.location { if let Location::Network(uri, ..) = &self.location {
MOUNTERS MOUNTERS
.values() .values()
.find_map(|mounter| mounter.dir_info(uri)) .find_map(|mounter| mounter.dir_info(uri))
.map(|(uri, display_name)| Location::Network(uri, display_name, path.clone())) .map(|(uri, display_name, path_opt)| Location::Network(uri, display_name, path_opt))
} else { } else {
let Some(selected) = self.selected else { let Some(selected) = self.selected else {
return Some(self.location.clone()); return Some(self.location.clone());