From 56f8e48870fca0bc29afe8d9b5eabafc48e5dc06 Mon Sep 17 00:00:00 2001 From: maxichrome Date: Fri, 10 Jun 2022 21:55:25 -0500 Subject: [PATCH] add debug menu items --- Cargo.lock | 1 + apps/desktop/src-tauri/Cargo.toml | 1 + apps/desktop/src-tauri/src/menu.rs | 47 ++++++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32bd9d309..386b09980 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6763,6 +6763,7 @@ name = "spacedrive" version = "0.1.0" dependencies = [ "cocoa", + "objc", "sdcore", "swift-rs", "tauri", diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index fac1c3a93..ef2765d4f 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -26,6 +26,7 @@ window-shadows = "0.1.2" # macOS system libs [target.'cfg(target_os = "macos")'.dependencies] cocoa = "0.24.0" +objc = "0.2.7" [features] default = [ "custom-protocol" ] diff --git a/apps/desktop/src-tauri/src/menu.rs b/apps/desktop/src-tauri/src/menu.rs index 91bf9ed0f..27b4dc4a7 100644 --- a/apps/desktop/src-tauri/src/menu.rs +++ b/apps/desktop/src-tauri/src/menu.rs @@ -1,4 +1,4 @@ -use std::env::consts; +use std::{env::consts, ffi::c_void}; use tauri::{AboutMetadata, CustomMenuItem, Menu, MenuItem, Submenu, WindowMenuEvent, Wry}; @@ -44,10 +44,22 @@ fn custom_menu_bar() -> Menu { .add_item(CustomMenuItem::new("layout".to_string(), "Layout").disabled()); let window_menu = Menu::new().add_native_item(MenuItem::EnterFullScreen); - let window = Submenu::new( - "Window", - Menu::new().add_native_item(MenuItem::EnterFullScreen), - ); + #[cfg(debug_assertions)] + let view_menu = { + let view_menu = view_menu.add_native_item(MenuItem::Separator); + + #[cfg(target_os = "macos")] + let view_menu = view_menu.add_item( + CustomMenuItem::new("reload_app".to_string(), "Reload").accelerator("CmdOrCtrl+R"), + ); + + let view_menu = view_menu.add_item( + CustomMenuItem::new("toggle_devtools".to_string(), "Toggle Developer Tools") + .accelerator("CmdOrCtrl+Alt+I"), + ); + + view_menu + }; let menu = Menu::new() .add_submenu(Submenu::new("Spacedrive", app_menu)) @@ -60,12 +72,35 @@ fn custom_menu_bar() -> Menu { } pub(crate) fn handle_menu_event(event: WindowMenuEvent) { + let window = event.window(); match event.menu_item_id() { "quit" => { std::process::exit(0); } "close" => { - event.window().close().unwrap(); + if window.is_devtools_open() { + window.close_devtools(); + } else { + window.close().unwrap(); + } + } + "reload_app" => { + window + .with_webview(|webview| { + #[cfg(target_os = "macos")] + unsafe { + use objc::{msg_send, sel, sel_impl}; + let _result: c_void = msg_send![webview.inner(), reload]; + }; + }) + .unwrap(); + } + "toggle_devtools" => { + if window.is_devtools_open() { + window.close_devtools(); + } else { + window.open_devtools(); + } } _ => {} }