Browse Source

fix: prevent menu gc during popup (#20745)

Shelley Vohr 5 years ago
parent
commit
fb8b1fd1c9

+ 1 - 0
shell/browser/api/atom_api_menu.h

@@ -12,6 +12,7 @@
 #include "gin/arguments.h"
 #include "shell/browser/api/atom_api_top_level_window.h"
 #include "shell/browser/ui/atom_menu_model.h"
+#include "shell/common/api/locker.h"
 #include "shell/common/gin_helper/trackable_object.h"
 
 namespace electron {

+ 3 - 0
shell/browser/api/atom_api_menu_mac.mm

@@ -56,6 +56,9 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
                         int y,
                         int positioning_item,
                         base::Closure callback) {
+  mate::Locker locker(isolate());
+  v8::HandleScope handle_scope(isolate());
+
   if (!native_window)
     return;
   NSWindow* nswindow = native_window->GetNativeWindow().GetNativeNSWindow();

+ 3 - 0
shell/browser/api/atom_api_menu_views.cc

@@ -25,6 +25,9 @@ void MenuViews::PopupAt(TopLevelWindow* window,
                         int y,
                         int positioning_item,
                         const base::Closure& callback) {
+  mate::Locker locker(isolate());
+  v8::HandleScope handle_scope(isolate());
+
   auto* native_window = static_cast<NativeWindowViews*>(window->window());
   if (!native_window)
     return;