diff --git a/packages/desktop/src/cfg.rs b/packages/desktop/src/cfg.rs index c5d6eef50..161a574b1 100644 --- a/packages/desktop/src/cfg.rs +++ b/packages/desktop/src/cfg.rs @@ -17,6 +17,7 @@ pub struct DesktopConfig { pub(crate) protocols: Vec, pub(crate) pre_rendered: Option, pub(crate) event_handler: Option>, + pub(crate) disable_context_menu: bool, } pub(crate) type WryProtocol = ( @@ -29,15 +30,22 @@ impl DesktopConfig { #[inline] pub fn new() -> Self { let window = WindowBuilder::new().with_title("Dioxus app"); + Self { event_handler: None, window, protocols: Vec::new(), file_drop_handler: None, pre_rendered: None, + disable_context_menu: !cfg!(debug_assertions), } } + pub fn with_disable_context_menu(&mut self, disable: bool) -> &mut Self { + self.disable_context_menu = disable; + self + } + pub fn with_prerendered(&mut self, content: String) -> &mut Self { self.pre_rendered = Some(content); self diff --git a/packages/desktop/src/lib.rs b/packages/desktop/src/lib.rs index e84baa034..268639597 100644 --- a/packages/desktop/src/lib.rs +++ b/packages/desktop/src/lib.rs @@ -172,10 +172,7 @@ pub fn launch_with_props( webview = webview.with_custom_protocol(name, handler) } - if cfg!(debug_assertions) { - // in debug, we are okay with the reload menu showing and dev tool - webview = webview.with_dev_tool(true); - } else { + if cfg.disable_context_menu { // in release mode, we don't want to show the dev tool or reload menus webview = webview.with_initialization_script( r#" @@ -192,6 +189,9 @@ pub fn launch_with_props( } "#, ) + } else { + // in debug, we are okay with the reload menu showing and dev tool + webview = webview.with_dev_tool(true); } desktop.webviews.insert(window_id, webview.build().unwrap());