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

Side by Side Diff: ui/gfx/mac/nswindow_util.mm

Issue 1023083002: [MacViews] Implement size constraints for app windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/gfx/mac/nswindow_util.h"
6
7 #include "base/mac/mac_util.h"
8 #include "base/mac/sdk_forward_declarations.h"
tapted 2015/03/25 18:50:23 nit: include->import all (3) of these.
jackhou1 2015/03/26 03:50:46 Done.
9
10 namespace {
11
12 // The value used to represent an unbounded width or height.
13 const int kUnboundedSize = 0;
14
15 } // namespace
16
17 void SetFullScreenCollectionBehavior(NSWindow* window, bool allow_fullscreen) {
18 NSWindowCollectionBehavior behavior = [window collectionBehavior];
19 if (allow_fullscreen)
20 behavior |= NSWindowCollectionBehaviorFullScreenPrimary;
21 else
22 behavior &= ~NSWindowCollectionBehaviorFullScreenPrimary;
23 [window setCollectionBehavior:behavior];
24 }
25
26 void SetResizableStyleMask(NSWindow* window, bool resizable) {
27 NSUInteger style_mask = [window styleMask];
28 if (resizable)
29 style_mask |= NSResizableWindowMask;
30 else
31 style_mask &= ~NSResizableWindowMask;
32 [window setStyleMask:style_mask];
33 }
34
35 void ApplySizeConstraints(NSWindow* window,
36 gfx::Size min_size,
37 gfx::Size max_size,
38 bool can_resize,
39 bool can_fullscreen) {
40 [window setContentMinSize:NSMakeSize(min_size.width(), min_size.height())];
41
42 CGFloat max_width =
43 max_size.width() == kUnboundedSize ? CGFLOAT_MAX : max_size.width();
44 CGFloat max_height =
45 max_size.height() == kUnboundedSize ? CGFLOAT_MAX : max_size.height();
46 [window setContentMaxSize:NSMakeSize(max_width, max_height)];
47
48 SetResizableStyleMask(window, can_resize);
49 if (base::mac::IsOSSnowLeopard())
50 [window setShowsResizeIndicator:can_resize];
51
52 // Set the window to participate in Lion Fullscreen mode. Setting this flag
53 // has no effect on Snow Leopard or earlier. UI controls for fullscreen are
54 // only shown for apps that have unbounded size.
55 if (base::mac::IsOSLionOrLater())
56 SetFullScreenCollectionBehavior(window, can_fullscreen);
57
58 [[window standardWindowButton:NSWindowZoomButton] setEnabled:can_fullscreen];
59 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698