Remove borrow from reveal_path()

This commit is contained in:
Mikayla Maki 2023-02-23 21:36:17 -08:00
parent be86cb35ba
commit 89ddf14b0e
3 changed files with 12 additions and 25 deletions

View file

@ -191,7 +191,7 @@ impl App {
pub fn new(asset_source: impl AssetSource) -> Result<Self> { pub fn new(asset_source: impl AssetSource) -> Result<Self> {
let platform = platform::current::platform(); let platform = platform::current::platform();
let foreground = Rc::new(executor::Foreground::platform(platform.dispatcher())?); let foreground = Rc::new(executor::Foreground::platform(platform.dispatcher())?);
let foreground_platform = platform::current::foreground_platform(foreground.clone()); let foreground_platform = platform::current::foreground_platform();
let app = Self(Rc::new(RefCell::new(MutableAppContext::new( let app = Self(Rc::new(RefCell::new(MutableAppContext::new(
foreground, foreground,
Arc::new(executor::Background::new()), Arc::new(executor::Background::new()),

View file

@ -23,16 +23,12 @@ pub use renderer::Surface;
use std::{ops::Range, rc::Rc, sync::Arc}; use std::{ops::Range, rc::Rc, sync::Arc};
use window::Window; use window::Window;
use crate::executor;
pub(crate) fn platform() -> Arc<dyn super::Platform> { pub(crate) fn platform() -> Arc<dyn super::Platform> {
Arc::new(MacPlatform::new()) Arc::new(MacPlatform::new())
} }
pub(crate) fn foreground_platform( pub(crate) fn foreground_platform() -> Rc<dyn super::ForegroundPlatform> {
foreground: Rc<executor::Foreground>, Rc::new(MacForegroundPlatform::new())
) -> Rc<dyn super::ForegroundPlatform> {
Rc::new(MacForegroundPlatform::new(foreground))
} }
trait BoolExt { trait BoolExt {

View file

@ -152,11 +152,10 @@ pub struct MacForegroundPlatformState {
open_urls: Option<Box<dyn FnMut(Vec<String>)>>, open_urls: Option<Box<dyn FnMut(Vec<String>)>>,
finish_launching: Option<Box<dyn FnOnce()>>, finish_launching: Option<Box<dyn FnOnce()>>,
menu_actions: Vec<Box<dyn Action>>, menu_actions: Vec<Box<dyn Action>>,
foreground: Rc<executor::Foreground>,
} }
impl MacForegroundPlatform { impl MacForegroundPlatform {
pub fn new(foreground: Rc<executor::Foreground>) -> Self { pub fn new() -> Self {
Self(RefCell::new(MacForegroundPlatformState { Self(RefCell::new(MacForegroundPlatformState {
become_active: Default::default(), become_active: Default::default(),
resign_active: Default::default(), resign_active: Default::default(),
@ -168,7 +167,6 @@ impl MacForegroundPlatform {
open_urls: Default::default(), open_urls: Default::default(),
finish_launching: Default::default(), finish_launching: Default::default(),
menu_actions: Default::default(), menu_actions: Default::default(),
foreground,
})) }))
} }
@ -456,21 +454,14 @@ impl platform::ForegroundPlatform for MacForegroundPlatform {
fn reveal_path(&self, path: &Path) { fn reveal_path(&self, path: &Path) {
unsafe { unsafe {
let path = path.to_path_buf(); let full_path = ns_string(path.to_str().unwrap_or(""));
self.0 let root_full_path = ns_string("");
.borrow() let workspace: id = msg_send![class!(NSWorkspace), sharedWorkspace];
.foreground let _: BOOL = msg_send![
.spawn(async move { workspace,
let full_path = ns_string(path.to_str().unwrap_or("")); selectFile: full_path
let root_full_path = ns_string(""); inFileViewerRootedAtPath: root_full_path
let workspace: id = msg_send![class!(NSWorkspace), sharedWorkspace]; ];
let _: BOOL = msg_send![
workspace,
selectFile: full_path
inFileViewerRootedAtPath: root_full_path
];
})
.detach();
} }
} }
} }