parent
0b668b8e17
commit
7457f81283
2 changed files with 47 additions and 3 deletions
|
@ -11,6 +11,7 @@
|
||||||
#include "base/memory/scoped_ptr.h"
|
#include "base/memory/scoped_ptr.h"
|
||||||
#include "atom/browser/native_window.h"
|
#include "atom/browser/native_window.h"
|
||||||
|
|
||||||
|
@class FullSizeContentView;
|
||||||
class SkRegion;
|
class SkRegion;
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
@ -98,6 +99,9 @@ class NativeWindowMac : public NativeWindow {
|
||||||
|
|
||||||
base::scoped_nsobject<NSWindow> window_;
|
base::scoped_nsobject<NSWindow> window_;
|
||||||
|
|
||||||
|
// The view that will fill the whole frameless window.
|
||||||
|
base::scoped_nsobject<FullSizeContentView> content_view_;
|
||||||
|
|
||||||
bool is_kiosk_;
|
bool is_kiosk_;
|
||||||
|
|
||||||
NSInteger attention_request_id_; // identifier from requestUserAttention
|
NSInteger attention_request_id_; // identifier from requestUserAttention
|
||||||
|
|
|
@ -25,6 +25,31 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
|
||||||
- (CGFloat)roundedCornerRadius;
|
- (CGFloat)roundedCornerRadius;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
// This view always takes the size of its superview. It is intended to be used
|
||||||
|
// as a NSWindow's contentView. It is needed because NSWindow's implementation
|
||||||
|
// explicitly resizes the contentView at inopportune times.
|
||||||
|
@interface FullSizeContentView : NSView
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation FullSizeContentView
|
||||||
|
|
||||||
|
// This method is directly called by NSWindow during a window resize on OSX
|
||||||
|
// 10.10.0, beta 2. We must override it to prevent the content view from
|
||||||
|
// shrinking.
|
||||||
|
- (void)setFrameSize:(NSSize)size {
|
||||||
|
if ([self superview])
|
||||||
|
size = [[self superview] bounds].size;
|
||||||
|
[super setFrameSize:size];
|
||||||
|
}
|
||||||
|
|
||||||
|
// The contentView gets moved around during certain full-screen operations.
|
||||||
|
// This is less than ideal, and should eventually be removed.
|
||||||
|
- (void)viewDidMoveToSuperview {
|
||||||
|
[self setFrame:[[self superview] bounds]];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
@interface AtomNSWindowDelegate : NSObject<NSWindowDelegate> {
|
@interface AtomNSWindowDelegate : NSObject<NSWindowDelegate> {
|
||||||
@private
|
@private
|
||||||
atom::NativeWindowMac* shell_;
|
atom::NativeWindowMac* shell_;
|
||||||
|
@ -690,9 +715,24 @@ void NativeWindowMac::InstallView() {
|
||||||
[view setFrame:[[window_ contentView] bounds]];
|
[view setFrame:[[window_ contentView] bounds]];
|
||||||
[[window_ contentView] addSubview:view];
|
[[window_ contentView] addSubview:view];
|
||||||
} else {
|
} else {
|
||||||
NSView* frameView = [[window_ contentView] superview];
|
if (base::mac::IsOSYosemiteOrLater()) {
|
||||||
[view setFrame:[frameView bounds]];
|
// In OSX 10.10, adding subviews to the root view for the NSView hierarchy
|
||||||
[frameView addSubview:view];
|
// produces warnings. To eliminate the warnings, we resize the contentView
|
||||||
|
// to fill the window, and add subviews to that.
|
||||||
|
// http://crbug.com/380412
|
||||||
|
content_view_.reset([[FullSizeContentView alloc] init]);
|
||||||
|
[content_view_
|
||||||
|
setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
|
||||||
|
[content_view_ setFrame:[[[window_ contentView] superview] bounds]];
|
||||||
|
[window_ setContentView:content_view_];
|
||||||
|
|
||||||
|
[view setFrame:[content_view_ bounds]];
|
||||||
|
[content_view_ addSubview:view];
|
||||||
|
} else {
|
||||||
|
NSView* frameView = [[window_ contentView] superview];
|
||||||
|
[view setFrame:[frameView bounds]];
|
||||||
|
[frameView addSubview:view];
|
||||||
|
}
|
||||||
|
|
||||||
ClipWebView();
|
ClipWebView();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue