OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import <Carbon/Carbon.h> | 5 #import <Carbon/Carbon.h> |
6 | 6 |
7 #import "content/browser/web_contents/web_contents_view_mac.h" | 7 #import "content/browser/web_contents/web_contents_view_mac.h" |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 RenderViewHostDelegateView** render_view_host_delegate_view) { | 74 RenderViewHostDelegateView** render_view_host_delegate_view) { |
75 WebContentsViewMac* rv = new WebContentsViewMac(web_contents, delegate); | 75 WebContentsViewMac* rv = new WebContentsViewMac(web_contents, delegate); |
76 *render_view_host_delegate_view = rv; | 76 *render_view_host_delegate_view = rv; |
77 return rv; | 77 return rv; |
78 } | 78 } |
79 | 79 |
80 WebContentsViewMac::WebContentsViewMac(WebContentsImpl* web_contents, | 80 WebContentsViewMac::WebContentsViewMac(WebContentsImpl* web_contents, |
81 WebContentsViewDelegate* delegate) | 81 WebContentsViewDelegate* delegate) |
82 : web_contents_(web_contents), | 82 : web_contents_(web_contents), |
83 delegate_(delegate), | 83 delegate_(delegate), |
84 allow_overlapping_views_(false), | |
85 allow_other_views_(false) { | 84 allow_other_views_(false) { |
86 } | 85 } |
87 | 86 |
88 WebContentsViewMac::~WebContentsViewMac() { | 87 WebContentsViewMac::~WebContentsViewMac() { |
89 // This handles the case where a renderer close call was deferred | 88 // This handles the case where a renderer close call was deferred |
90 // while the user was operating a UI control which resulted in a | 89 // while the user was operating a UI control which resulted in a |
91 // close. In that case, the Cocoa view outlives the | 90 // close. In that case, the Cocoa view outlives the |
92 // WebContentsViewMac instance due to Cocoa retain count. | 91 // WebContentsViewMac instance due to Cocoa retain count. |
93 [cocoa_view_ cancelDeferredClose]; | 92 [cocoa_view_ cancelDeferredClose]; |
94 [cocoa_view_ clearWebContentsView]; | 93 [cocoa_view_ clearWebContentsView]; |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 if (popup_menu_helper_) | 254 if (popup_menu_helper_) |
256 popup_menu_helper_->Hide(); | 255 popup_menu_helper_->Hide(); |
257 } | 256 } |
258 | 257 |
259 gfx::Rect WebContentsViewMac::GetViewBounds() const { | 258 gfx::Rect WebContentsViewMac::GetViewBounds() const { |
260 // This method is not currently used on mac. | 259 // This method is not currently used on mac. |
261 NOTIMPLEMENTED(); | 260 NOTIMPLEMENTED(); |
262 return gfx::Rect(); | 261 return gfx::Rect(); |
263 } | 262 } |
264 | 263 |
265 void WebContentsViewMac::SetAllowOverlappingViews(bool overlapping) { | |
266 if (allow_overlapping_views_ == overlapping) | |
267 return; | |
268 | |
269 allow_overlapping_views_ = overlapping; | |
270 RenderWidgetHostViewMac* view = static_cast<RenderWidgetHostViewMac*>( | |
271 web_contents_->GetRenderWidgetHostView()); | |
272 if (view) | |
273 view->SetAllowOverlappingViews(allow_overlapping_views_); | |
274 } | |
275 | |
276 bool WebContentsViewMac::GetAllowOverlappingViews() const { | |
277 return allow_overlapping_views_; | |
278 } | |
279 | |
280 void WebContentsViewMac::SetAllowOtherViews(bool allow) { | 264 void WebContentsViewMac::SetAllowOtherViews(bool allow) { |
281 if (allow_other_views_ == allow) | 265 if (allow_other_views_ == allow) |
282 return; | 266 return; |
283 | 267 |
284 allow_other_views_ = allow; | 268 allow_other_views_ = allow; |
285 RenderWidgetHostViewMac* view = static_cast<RenderWidgetHostViewMac*>( | 269 RenderWidgetHostViewMac* view = static_cast<RenderWidgetHostViewMac*>( |
286 web_contents_->GetRenderWidgetHostView()); | 270 web_contents_->GetRenderWidgetHostView()); |
287 if (view) | 271 if (view) |
288 view->SetAllowPauseForResizeOrRepaint(!allow_other_views_); | 272 view->SetAllowPauseForResizeOrRepaint(!allow_other_views_); |
289 } | 273 } |
(...skipping 24 matching lines...) Expand all Loading... |
314 | 298 |
315 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac( | 299 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac( |
316 render_widget_host); | 300 render_widget_host); |
317 if (delegate()) { | 301 if (delegate()) { |
318 base::scoped_nsobject<NSObject<RenderWidgetHostViewMacDelegate> > | 302 base::scoped_nsobject<NSObject<RenderWidgetHostViewMacDelegate> > |
319 rw_delegate( | 303 rw_delegate( |
320 delegate()->CreateRenderWidgetHostViewDelegate(render_widget_host)); | 304 delegate()->CreateRenderWidgetHostViewDelegate(render_widget_host)); |
321 | 305 |
322 view->SetDelegate(rw_delegate.get()); | 306 view->SetDelegate(rw_delegate.get()); |
323 } | 307 } |
324 view->SetAllowOverlappingViews(allow_overlapping_views_); | |
325 view->SetAllowPauseForResizeOrRepaint(!allow_other_views_); | 308 view->SetAllowPauseForResizeOrRepaint(!allow_other_views_); |
326 | 309 |
327 // Fancy layout comes later; for now just make it our size and resize it | 310 // Fancy layout comes later; for now just make it our size and resize it |
328 // with us. In case there are other siblings of the content area, we want | 311 // with us. In case there are other siblings of the content area, we want |
329 // to make sure the content area is on the bottom so other things draw over | 312 // to make sure the content area is on the bottom so other things draw over |
330 // it. | 313 // it. |
331 NSView* view_view = view->GetNativeView(); | 314 NSView* view_view = view->GetNativeView(); |
332 [view_view setFrame:[cocoa_view_.get() bounds]]; | 315 [view_view setFrame:[cocoa_view_.get() bounds]]; |
333 [view_view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; | 316 [view_view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; |
334 // Add the new view below all other views; this also keeps it below any | 317 // Add the new view below all other views; this also keeps it below any |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 // When the subviews require a layout, their size should be reset to the size | 577 // When the subviews require a layout, their size should be reset to the size |
595 // of this view. (It is possible for the size to get out of sync as an | 578 // of this view. (It is possible for the size to get out of sync as an |
596 // optimization in preparation for an upcoming WebContentsView resize. | 579 // optimization in preparation for an upcoming WebContentsView resize. |
597 // http://crbug.com/264207) | 580 // http://crbug.com/264207) |
598 - (void)resizeSubviewsWithOldSize:(NSSize)oldBoundsSize { | 581 - (void)resizeSubviewsWithOldSize:(NSSize)oldBoundsSize { |
599 for (NSView* subview in self.subviews) | 582 for (NSView* subview in self.subviews) |
600 [subview setFrame:self.bounds]; | 583 [subview setFrame:self.bounds]; |
601 } | 584 } |
602 | 585 |
603 @end | 586 @end |
OLD | NEW |