123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // Copyright (c) 2017 GitHub, Inc.
- // Use of this source code is governed by the MIT license that can be
- // found in the LICENSE file.
- #include "atom/browser/native_browser_view_mac.h"
- #include "brightray/browser/inspectable_web_contents_view.h"
- #include "skia/ext/skia_utils_mac.h"
- #include "ui/gfx/geometry/rect.h"
- // Match view::Views behavior where the view sticks to the top-left origin.
- const NSAutoresizingMaskOptions kDefaultAutoResizingMask =
- NSViewMaxXMargin | NSViewMinYMargin;
- namespace atom {
- NativeBrowserViewMac::NativeBrowserViewMac(
- brightray::InspectableWebContentsView* web_contents_view)
- : NativeBrowserView(web_contents_view) {
- auto* view = GetInspectableWebContentsView()->GetNativeView();
- view.autoresizingMask = kDefaultAutoResizingMask;
- }
- NativeBrowserViewMac::~NativeBrowserViewMac() {}
- void NativeBrowserViewMac::SetAutoResizeFlags(uint8_t flags) {
- NSAutoresizingMaskOptions autoresizing_mask = kDefaultAutoResizingMask;
- if (flags & kAutoResizeWidth) {
- autoresizing_mask |= NSViewWidthSizable;
- }
- if (flags & kAutoResizeHeight) {
- autoresizing_mask |= NSViewHeightSizable;
- }
- auto* view = GetInspectableWebContentsView()->GetNativeView();
- view.autoresizingMask = autoresizing_mask;
- }
- void NativeBrowserViewMac::SetBounds(const gfx::Rect& bounds) {
- auto* view = GetInspectableWebContentsView()->GetNativeView();
- auto* superview = view.superview;
- const auto superview_height = superview ? superview.frame.size.height : 0;
- view.frame =
- NSMakeRect(bounds.x(), superview_height - bounds.y() - bounds.height(),
- bounds.width(), bounds.height());
- }
- void NativeBrowserViewMac::SetBackgroundColor(SkColor color) {
- auto* view = GetInspectableWebContentsView()->GetNativeView();
- view.wantsLayer = YES;
- view.layer.backgroundColor = skia::CGColorCreateFromSkColor(color);
- }
- // static
- NativeBrowserView* NativeBrowserView::Create(
- brightray::InspectableWebContentsView* web_contents_view) {
- return new NativeBrowserViewMac(web_contents_view);
- }
- } // namespace atom
|