mac: Do not allow nested task when showing menu.

Fixes #163.
This commit is contained in:
Cheng Zhao 2014-03-25 16:56:02 +08:00
Родитель 788ed588c9
Коммит e96a3abdf9
1 изменённых файлов: 4 добавлений и 18 удалений

Просмотреть файл

@ -4,7 +4,6 @@
#import "atom/browser/api/atom_api_menu_mac.h" #import "atom/browser/api/atom_api_menu_mac.h"
#include "base/mac/scoped_sending_event.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "atom/browser/native_window.h" #include "atom/browser/native_window.h"
@ -45,23 +44,10 @@ void MenuMac::Popup(NativeWindow* native_window) {
clickCount:1 clickCount:1
pressure:1.0]; pressure:1.0];
{ // Show the menu.
// Make sure events can be pumped while the menu is up. [NSMenu popUpContextMenu:[menu_controller menu]
base::MessageLoop::ScopedNestableTaskAllower allow( withEvent:clickEvent
base::MessageLoop::current()); forView:web_contents->GetView()->GetContentNativeView()];
// One of the events that could be pumped is |window.close()|.
// User-initiated event-tracking loops protect against this by
// setting flags in -[CrApplication sendEvent:], but since
// web-content menus are initiated by IPC message the setup has to
// be done manually.
base::mac::ScopedSendingEvent sendingEventScoper;
// Show the menu.
[NSMenu popUpContextMenu:[menu_controller menu]
withEvent:clickEvent
forView:web_contents->GetView()->GetContentNativeView()];
}
} }
// static // static