Enable context menus for text boxes

This commit is contained in:
Vladimir Borisov 2025-01-24 12:27:17 +02:00
parent d9fbabbf62
commit 9e1c06c7d2
No known key found for this signature in database
GPG key ID: F9A584BE4FCB6603

View file

@ -96,9 +96,11 @@ impl PartialUi for WebView {
let settings = webview.get_settings().unwrap();
settings.put_is_status_bar_enabled(false).ok();
settings.put_are_dev_tools_enabled(*dev_tools.get().unwrap()).ok();
settings.put_are_default_context_menus_enabled(false).ok();
settings.put_is_zoom_control_enabled(false).ok();
settings.put_is_built_in_error_page_enabled(false).ok();
settings.put_are_host_objects_allowed(false).ok();
settings.put_are_default_script_dialogs_enabled(false).ok();
if let Some(endpoint) = endpoint.get() {
if webview
.navigate(endpoint.as_str()).is_err() {
@ -126,6 +128,15 @@ impl PartialUi for WebView {
webview.add_content_loading(move |wv, _| {
wv.execute_script(r##"
try{
/* Disable context menus */
document.addEventListener('contextmenu', (e) => {
if(!(e.target.tagName == "INPUT" &&
['text', 'password', 'number', 'week', 'month', 'email'].includes(e.target.type.toLowerCase()))) {
e.stopPropagation();e.preventDefault()
}
})
}catch(e){}
try{console.log('Shell JS injected');if(window.self === window.top) {
window.qt={webChannelTransport:{send:window.chrome.webview.postMessage}};
window.chrome.webview.addEventListener('message',ev=>window.qt.webChannelTransport.onmessage(ev));