|
@@ -472,7 +472,8 @@ NativeWindowMac::NativeWindowMac(const mate::Dictionary& options,
|
|
|
}
|
|
|
|
|
|
NativeWindowMac::~NativeWindowMac() {
|
|
|
- [NSEvent removeMonitor:wheel_event_monitor_];
|
|
|
+ if (wheel_event_monitor_)
|
|
|
+ [NSEvent removeMonitor:wheel_event_monitor_];
|
|
|
}
|
|
|
|
|
|
void NativeWindowMac::SetContentView(views::View* view) {
|
|
@@ -509,6 +510,13 @@ void NativeWindowMac::Close() {
|
|
|
}
|
|
|
|
|
|
void NativeWindowMac::CloseImmediately() {
|
|
|
+ // Remove event monitor before destroying window, otherwise the monitor may
|
|
|
+ // call its callback after window has been destroyed.
|
|
|
+ if (wheel_event_monitor_) {
|
|
|
+ [NSEvent removeMonitor:wheel_event_monitor_];
|
|
|
+ wheel_event_monitor_ = nil;
|
|
|
+ }
|
|
|
+
|
|
|
// Retain the child window before closing it. If the last reference to the
|
|
|
// NSWindow goes away inside -[NSWindow close], then bad stuff can happen.
|
|
|
// See e.g. http://crbug.com/616701.
|