mac: Disable resizing window when changing style mask
This commit is contained in:
		
					parent
					
						
							
								488a69d461
							
						
					
				
			
			
				commit
				
					
						1505dc207b
					
				
			
		
					 1 changed files with 28 additions and 2 deletions
				
			
		| 
						 | 
					@ -20,7 +20,26 @@
 | 
				
			||||||
#include "content/public/browser/render_widget_host_view.h"
 | 
					#include "content/public/browser/render_widget_host_view.h"
 | 
				
			||||||
#include "native_mate/dictionary.h"
 | 
					#include "native_mate/dictionary.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const CGFloat kAtomWindowCornerRadius = 4.0;
 | 
					namespace {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// The radius of rounded corner.
 | 
				
			||||||
 | 
					const CGFloat kAtomWindowCornerRadius = 4.0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Prevents window from resizing during the scope.
 | 
				
			||||||
 | 
					class ScopedDisableResize {
 | 
				
			||||||
 | 
					 public:
 | 
				
			||||||
 | 
					  ScopedDisableResize() { disable_resize_ = true; }
 | 
				
			||||||
 | 
					  ~ScopedDisableResize() { disable_resize_ = false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static bool IsResizeDisabled() { return disable_resize_; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 private:
 | 
				
			||||||
 | 
					  static bool disable_resize_;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool ScopedDisableResize::disable_resize_ = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}  // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@interface NSView (PrivateMethods)
 | 
					@interface NSView (PrivateMethods)
 | 
				
			||||||
- (CGFloat)roundedCornerRadius;
 | 
					- (CGFloat)roundedCornerRadius;
 | 
				
			||||||
| 
						 | 
					@ -214,8 +233,12 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
 | 
				
			||||||
  enable_larger_than_screen_ = enable;
 | 
					  enable_larger_than_screen_ = enable;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Enable the window to be larger than screen.
 | 
					 | 
				
			||||||
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen*)screen {
 | 
					- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen*)screen {
 | 
				
			||||||
 | 
					  // Resizing is disabled.
 | 
				
			||||||
 | 
					  if (ScopedDisableResize::IsResizeDisabled())
 | 
				
			||||||
 | 
					    return [self frame];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Enable the window to be larger than screen.
 | 
				
			||||||
  if (enable_larger_than_screen_)
 | 
					  if (enable_larger_than_screen_)
 | 
				
			||||||
    return frameRect;
 | 
					    return frameRect;
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
| 
						 | 
					@ -561,6 +584,9 @@ gfx::Size NativeWindowMac::GetMaximumSize() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NativeWindowMac::SetResizable(bool resizable) {
 | 
					void NativeWindowMac::SetResizable(bool resizable) {
 | 
				
			||||||
 | 
					  // Change styleMask for frameless causes the window to change size, so we have
 | 
				
			||||||
 | 
					  // to explicitly disables that.
 | 
				
			||||||
 | 
					  ScopedDisableResize disable_resize;
 | 
				
			||||||
  if (resizable) {
 | 
					  if (resizable) {
 | 
				
			||||||
    [[window_ standardWindowButton:NSWindowZoomButton] setEnabled:YES];
 | 
					    [[window_ standardWindowButton:NSWindowZoomButton] setEnabled:YES];
 | 
				
			||||||
    [window_ setStyleMask:[window_ styleMask] | NSResizableWindowMask];
 | 
					    [window_ setStyleMask:[window_ styleMask] | NSResizableWindowMask];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue