Add AppContext::dispatch_action and use it for app menu actions
Co-Authored-By: Marshall <marshall@zed.dev> Co-Authored-By: Julia <julia@zed.dev>
This commit is contained in:
co-authored by
Marshall
Julia
parent
631e264e3c
commit
79567d1c87
@@ -53,14 +53,14 @@ pub enum OsAction {
|
||||
}
|
||||
|
||||
pub(crate) fn init(platform: &dyn Platform, cx: &mut AppContext) {
|
||||
platform.on_will_open_menu(Box::new({
|
||||
platform.on_will_open_app_menu(Box::new({
|
||||
let cx = cx.to_async();
|
||||
move || {
|
||||
cx.update(|cx| cx.clear_pending_keystrokes()).ok();
|
||||
}
|
||||
}));
|
||||
|
||||
platform.on_validate_menu_command(Box::new({
|
||||
platform.on_validate_app_menu_command(Box::new({
|
||||
let cx = cx.to_async();
|
||||
move |action| {
|
||||
cx.update(|cx| cx.is_action_available(action))
|
||||
@@ -68,29 +68,10 @@ pub(crate) fn init(platform: &dyn Platform, cx: &mut AppContext) {
|
||||
}
|
||||
}));
|
||||
|
||||
platform.on_menu_command(Box::new({
|
||||
platform.on_app_menu_action(Box::new({
|
||||
let cx = cx.to_async();
|
||||
move |action| {
|
||||
cx.update(|cx| {
|
||||
// if let Some(main_window) = cx.active_window() {
|
||||
// let dispatched = main_window
|
||||
// .update(&mut *cx, |cx| {
|
||||
// if let Some(view_id) = cx.focused_view_id() {
|
||||
// cx.dispatch_action(Some(view_id), action);
|
||||
// true
|
||||
// } else {
|
||||
// false
|
||||
// }
|
||||
// })
|
||||
// .unwrap_or(false);
|
||||
|
||||
// if dispatched {
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// cx.dispatch_global_action_any(action);
|
||||
})
|
||||
.log_err();
|
||||
cx.update(|cx| cx.dispatch_action(action)).log_err();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -683,15 +683,15 @@ impl Platform for MacPlatform {
|
||||
}
|
||||
}
|
||||
|
||||
fn on_menu_command(&self, callback: Box<dyn FnMut(&dyn Action)>) {
|
||||
fn on_app_menu_action(&self, callback: Box<dyn FnMut(&dyn Action)>) {
|
||||
self.0.lock().menu_command = Some(callback);
|
||||
}
|
||||
|
||||
fn on_will_open_menu(&self, callback: Box<dyn FnMut()>) {
|
||||
fn on_will_open_app_menu(&self, callback: Box<dyn FnMut()>) {
|
||||
self.0.lock().will_open_menu = Some(callback);
|
||||
}
|
||||
|
||||
fn on_validate_menu_command(&self, callback: Box<dyn FnMut(&dyn Action) -> bool>) {
|
||||
fn on_validate_app_menu_command(&self, callback: Box<dyn FnMut(&dyn Action) -> bool>) {
|
||||
self.0.lock().validate_menu_command = Some(callback);
|
||||
}
|
||||
|
||||
|
||||
@@ -205,15 +205,15 @@ impl Platform for TestPlatform {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn on_menu_command(&self, _callback: Box<dyn FnMut(&dyn crate::Action)>) {
|
||||
fn on_app_menu_action(&self, _callback: Box<dyn FnMut(&dyn crate::Action)>) {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn on_will_open_menu(&self, _callback: Box<dyn FnMut()>) {
|
||||
fn on_will_open_app_menu(&self, _callback: Box<dyn FnMut()>) {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn on_validate_menu_command(&self, _callback: Box<dyn FnMut(&dyn crate::Action) -> bool>) {
|
||||
fn on_validate_app_menu_command(&self, _callback: Box<dyn FnMut(&dyn crate::Action) -> bool>) {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user