Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6053)

Unified Diff: chrome/browser/ui/views/apps/app_window_native_widget_mac.mm

Issue 1023083002: [MacViews] Implement size constraints for app windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/apps/app_window_native_widget_mac.mm
diff --git a/chrome/browser/ui/views/apps/app_window_native_widget_mac.mm b/chrome/browser/ui/views/apps/app_window_native_widget_mac.mm
index 4cde263d0542b8c8ee8db827b631e66ac27eff4e..78c1523d4bbbf3822de4c9eeeb8ef2ef1a86a397 100644
--- a/chrome/browser/ui/views/apps/app_window_native_widget_mac.mm
+++ b/chrome/browser/ui/views/apps/app_window_native_widget_mac.mm
@@ -6,8 +6,12 @@
#import <Cocoa/Cocoa.h>
+#include "base/mac/mac_util.h"
+#include "base/mac/sdk_forward_declarations.h"
+#import "chrome/browser/ui/cocoa/apps/nswindow_util.h"
#import "chrome/browser/ui/views/apps/native_widget_mac_frameless_nswindow.h"
#import "ui/base/cocoa/window_size_constants.h"
+#include "ui/views/widget/widget_delegate.h"
AppWindowNativeWidgetMac::AppWindowNativeWidgetMac(views::Widget* widget)
: NativeWidgetMac(widget) {
@@ -16,6 +20,32 @@ AppWindowNativeWidgetMac::AppWindowNativeWidgetMac(views::Widget* widget)
AppWindowNativeWidgetMac::~AppWindowNativeWidgetMac() {
}
+void AppWindowNativeWidgetMac::OnSizeConstraintsChanged() {
+ NativeWidgetMac::OnSizeConstraintsChanged();
+
+ gfx::Size minimum_size = delegate()->GetMinimumSize();
tapted 2015/03/20 12:12:53 I think to be consistent with aura widgets, this c
jackhou1 2015/03/25 23:32:23 Done.
+ gfx::Size maximum_size = delegate()->GetMaximumSize();
+ bool is_resizable = delegate()->AsWidget()->widget_delegate()->CanResize();
+ bool shows_resize_controls =
+ is_resizable && (minimum_size.IsEmpty() || minimum_size != maximum_size);
+ bool shows_fullscreen_controls =
+ is_resizable && delegate()->AsWidget()->widget_delegate()->CanMaximize();
+
+ NSWindow* window = GetNativeWindow();
+ SetResizableStyleMask(window, shows_resize_controls);
+ if (base::mac::IsOSSnowLeopard())
+ [window setShowsResizeIndicator:shows_resize_controls];
+
+ // Set the window to participate in Lion Fullscreen mode. Setting this flag
+ // has no effect on Snow Leopard or earlier. UI controls for fullscreen are
+ // only shown for apps that have unbounded size.
+ if (base::mac::IsOSLionOrLater())
+ SetFullScreenCollectionBehavior(window, shows_fullscreen_controls);
+
+ [[window standardWindowButton:NSWindowZoomButton]
+ setEnabled:shows_fullscreen_controls];
tapted 2015/03/20 12:12:53 I wonder if this is all complicated enough to try
jackhou1 2015/03/25 23:32:23 Done.
+}
+
NSWindow* AppWindowNativeWidgetMac::CreateNSWindow(
const views::Widget::InitParams& params) {
// If the window has a standard frame, use the same NSWindow as

Powered by Google App Engine
This is Rietveld 408576698