Browse Source

Merge pull request #869 from ndarilek/master

Add function to remove all global shortcuts.
Jon Kelley 2 năm trước cách đây
mục cha
commit
059f6b18db
2 tập tin đã thay đổi với 17 bổ sung0 xóa
  1. 5 0
      packages/desktop/src/desktop_context.rs
  2. 12 0
      packages/desktop/src/shortcut.rs

+ 5 - 0
packages/desktop/src/desktop_context.rs

@@ -271,6 +271,11 @@ impl DesktopContext {
         self.shortcut_manager.remove_shortcut(id)
     }
 
+    /// Remove all global shortcuts
+    pub fn remove_all_shortcuts(&self) {
+        self.shortcut_manager.remove_all()
+    }
+
     /// Push an objc view to the window
     #[cfg(target_os = "ios")]
     pub fn push_view(&self, view: objc_id::ShareId<objc::runtime::Object>) {

+ 12 - 0
packages/desktop/src/shortcut.rs

@@ -113,6 +113,18 @@ impl ShortcutRegistry {
             }
         }
     }
+
+    pub(crate) fn remove_all(&self) {
+        let mut shortcuts = self.shortcuts.borrow_mut();
+        shortcuts.clear();
+        let _ = self.manager.borrow_mut().unregister_all();
+        // prevent CTRL+R from reloading the page which breaks apps
+        let _ = self.add_shortcut(
+            Some(ModifiersState::CONTROL),
+            KeyCode::KeyR,
+            Box::new(|| {}),
+        );
+    }
 }
 
 #[non_exhaustive]