aboutsummaryrefslogtreecommitdiff
path: root/bundle/src-tauri/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'bundle/src-tauri/src/main.rs')
-rw-r--r--bundle/src-tauri/src/main.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/bundle/src-tauri/src/main.rs b/bundle/src-tauri/src/main.rs
index 80b28c5..9f63fc5 100644
--- a/bundle/src-tauri/src/main.rs
+++ b/bundle/src-tauri/src/main.rs
@@ -1,6 +1,7 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
mod compiler;
+mod menu;
mod runner;
use compiler::Compiler;
use runner::{OutputEvent, Runner};
@@ -11,7 +12,9 @@ use std::{
Mutex,
},
};
-use tauri::{ipc::Channel, AppHandle, Manager, State, WebviewWindow, WebviewWindowBuilder};
+use tauri::{
+ ipc::Channel, AppHandle, Emitter, Manager, State, WebviewWindow, WebviewWindowBuilder,
+};
// Each window runs its own program, keyed by window label.
#[derive(Default)]
@@ -87,6 +90,17 @@ fn main() {
let compiler = Compiler::load();
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
+ .menu(menu::build)
+ // Menu items act on the focused window, like its keyboard shortcuts.
+ .on_menu_event(|app, event| {
+ let focused = app
+ .webview_windows()
+ .into_values()
+ .find(|window| window.is_focused().unwrap_or(false));
+ if let Some(window) = focused {
+ let _ = window.emit_to(window.label(), "menu", event.id().as_ref());
+ }
+ })
.manage(Runners::default())
.manage(compiler)
.invoke_handler(tauri::generate_handler![