Add 'accept-first-mouse' in window's option.

This commit is contained in:
Cheng Zhao 2014-03-15 19:28:23 +08:00
Родитель 834d02d65b
Коммит b1bb4d911f
3 изменённых файлов: 30 добавлений и 8 удалений

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

@ -29,18 +29,26 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
@interface AtomNSWindowDelegate : NSObject<NSWindowDelegate> { @interface AtomNSWindowDelegate : NSObject<NSWindowDelegate> {
@private @private
atom::NativeWindowMac* shell_; atom::NativeWindowMac* shell_;
BOOL acceptsFirstMouse_;
} }
- (id)initWithShell:(atom::NativeWindowMac*)shell; - (id)initWithShell:(atom::NativeWindowMac*)shell;
- (void)setAcceptsFirstMouse:(BOOL)accept;
@end @end
@implementation AtomNSWindowDelegate @implementation AtomNSWindowDelegate
- (id)initWithShell:(atom::NativeWindowMac*)shell { - (id)initWithShell:(atom::NativeWindowMac*)shell {
if ((self = [super init])) if ((self = [super init])) {
shell_ = shell; shell_ = shell;
acceptsFirstMouse_ = NO;
}
return self; return self;
} }
- (void)setAcceptsFirstMouse:(BOOL)accept {
acceptsFirstMouse_ = accept;
}
- (void)windowDidResignMain:(NSNotification*)notification { - (void)windowDidResignMain:(NSNotification*)notification {
shell_->NotifyWindowBlur(); shell_->NotifyWindowBlur();
} }
@ -50,6 +58,13 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
shell_->ClipWebView(); shell_->ClipWebView();
} }
- (void)windowDidExitFullScreen:(NSNotification*)notification {
if (!shell_->has_frame()) {
NSWindow* window = shell_->GetNativeWindow();
[[window standardWindowButton:NSWindowFullScreenButton] setHidden:YES];
}
}
- (void)windowWillClose:(NSNotification*)notification { - (void)windowWillClose:(NSNotification*)notification {
shell_->window() = nil; shell_->window() = nil;
[self autorelease]; [self autorelease];
@ -63,11 +78,8 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
return NO; return NO;
} }
- (void)windowDidExitFullScreen:(NSNotification*)notification { - (BOOL)acceptsFirstMouse:(NSEvent*)event {
if (!shell_->has_frame()) { return acceptsFirstMouse_;
NSWindow* window = shell_->GetNativeWindow();
[[window standardWindowButton:NSWindowFullScreenButton] setHidden:YES];
}
} }
@end @end
@ -77,7 +89,6 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
atom::NativeWindowMac* shell_; atom::NativeWindowMac* shell_;
} }
- (void)setShell:(atom::NativeWindowMac*)shell; - (void)setShell:(atom::NativeWindowMac*)shell;
- (IBAction)showDevTools:(id)sender;
@end @end
@implementation AtomNSWindow @implementation AtomNSWindow
@ -162,7 +173,14 @@ NativeWindowMac::NativeWindowMac(content::WebContents* web_contents,
[atomWindow setShell:this]; [atomWindow setShell:this];
window_ = atomWindow; window_ = atomWindow;
[window() setDelegate:[[AtomNSWindowDelegate alloc] initWithShell:this]]; AtomNSWindowDelegate* delegate =
[[AtomNSWindowDelegate alloc] initWithShell:this];
[window() setDelegate:delegate];
// Enable the NSView to accept first mouse event.
bool acceptsFirstMouse = false;
options->GetBoolean(switches::kAcceptFirstMouse, &acceptsFirstMouse);
[delegate setAcceptsFirstMouse:acceptsFirstMouse];
// Disable fullscreen button when 'fullscreen' is specified to false. // Disable fullscreen button when 'fullscreen' is specified to false.
bool fullscreen; bool fullscreen;

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

@ -33,6 +33,9 @@ const char kAlwaysOnTop[] = "always-on-top";
const char kNodeIntegration[] = "node-integration"; const char kNodeIntegration[] = "node-integration";
// Enable the NSView to accept first mouse event.
const char kAcceptFirstMouse[] = "accept-first-mouse";
} // namespace switches } // namespace switches
} // namespace atom } // namespace atom

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

@ -27,6 +27,7 @@ extern const char kFullscreen[];
extern const char kKiosk[]; extern const char kKiosk[];
extern const char kAlwaysOnTop[]; extern const char kAlwaysOnTop[];
extern const char kNodeIntegration[]; extern const char kNodeIntegration[];
extern const char kAcceptFirstMouse[];
} // namespace switches } // namespace switches