MCPcopy Create free account
hub / github.com/GraphiteEditor/Graphite / new

Method new

desktop/src/window/mac/menu.rs:13–38  ·  view source on GitHub ↗
(event_scheduler: AppEventScheduler)

Source from the content-addressed store, hash-verified

11
12impl Menu {
13 pub(super) fn new(event_scheduler: AppEventScheduler) -> Self {
14 // TODO: Remove as much app submenu special handling as possible
15 let app_submenu = Submenu::with_items("", true, &[]).unwrap();
16
17 let menu = MudaMenu::new();
18 menu.prepend(&app_submenu).unwrap();
19
20 menu.init_for_nsapp();
21
22 MenuEvent::set_event_handler(Some(move |event: MenuEvent| {
23 let mtm = objc2::MainThreadMarker::new().expect("only ever called from main thread");
24 let is_shortcut_triggered = objc2_app_kit::NSApplication::sharedApplication(mtm)
25 .mainMenu()
26 .map(|m| m.highlightedItem().is_some())
27 .unwrap_or_default();
28 if is_shortcut_triggered {
29 tracing::error!("A keyboard input triggered a menu event. This is most likely a bug. Please report!");
30 return;
31 }
32
33 let id = event.id().0.clone();
34 event_scheduler.schedule(AppEvent::MenuEvent { id });
35 }));
36
37 Menu { inner: menu }
38 }
39
40 pub(super) fn update(&self, entries: Vec<WrapperMenuItem>) {
41 let new_entries = menu_items_from_wrapper(entries);

Callers

nothing calls this directly

Calls 4

is_someMethod · 0.80
idMethod · 0.80
scheduleMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected