| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "chrome/browser/views/browser_bubble.h" | 5 #include "chrome/browser/views/browser_bubble.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "chrome/browser/views/frame/browser_view.h" | 8 #include "chrome/browser/views/frame/browser_view.h" |
| 9 #include "views/widget/root_view.h" | 9 #include "views/widget/root_view.h" |
| 10 #include "views/window/window.h" | 10 #include "views/window/window.h" |
| 11 | 11 |
| 12 BrowserBubble::BrowserBubble(views::View* view, views::Widget* frame, | 12 BrowserBubble::BrowserBubble(views::View* view, views::Widget* frame, |
| 13 const gfx::Point& origin) | 13 const gfx::Point& origin) |
| 14 : frame_(frame), | 14 : frame_(frame), |
| 15 view_(view), | 15 view_(view), |
| 16 visible_(false), | 16 visible_(false), |
| 17 delegate_(NULL), | 17 delegate_(NULL), |
| 18 attached_(false) { | 18 attached_(false) { |
| 19 frame_native_view_ = frame_->GetNativeView(); | 19 frame_native_view_ = frame_->GetNativeView(); |
| 20 gfx::Size size = view->GetPreferredSize(); | 20 gfx::Size size = view->GetPreferredSize(); |
| 21 bounds_.SetRect(origin.x(), origin.y(), size.width(), size.height()); | 21 bounds_.SetRect(origin.x(), origin.y(), size.width(), size.height()); |
| 22 InitPopup(); | 22 InitPopup(); |
| 23 } | 23 } |
| 24 | 24 |
| 25 BrowserBubble::~BrowserBubble() { | 25 BrowserBubble::~BrowserBubble() { |
| 26 DCHECK(!attached_); | 26 DCHECK(!attached_); |
| 27 popup_->CloseNow(); | 27 popup_->Close(); |
| 28 |
| 28 // Don't call DetachFromBrowser from here. It needs to talk to the | 29 // Don't call DetachFromBrowser from here. It needs to talk to the |
| 29 // BrowserView to deregister itself, and if BrowserBubble is owned | 30 // BrowserView to deregister itself, and if BrowserBubble is owned |
| 30 // by a child of BrowserView, then it's possible that this stack frame | 31 // by a child of BrowserView, then it's possible that this stack frame |
| 31 // is a descendant of BrowserView's destructor, which leads to problems. | 32 // is a descendant of BrowserView's destructor, which leads to problems. |
| 32 // In that case, Detach doesn't need to get called anyway since BrowserView | 33 // In that case, Detach doesn't need to get called anyway since BrowserView |
| 33 // will do the necessary cleanup. | 34 // will do the necessary cleanup. |
| 34 } | 35 } |
| 35 | 36 |
| 36 void BrowserBubble::DetachFromBrowser() { | 37 void BrowserBubble::DetachFromBrowser() { |
| 37 DCHECK(attached_); | 38 DCHECK(attached_); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 MovePopup(top_left.x() + bounds_.x(), | 91 MovePopup(top_left.x() + bounds_.x(), |
| 91 top_left.y() + bounds_.y(), | 92 top_left.y() + bounds_.y(), |
| 92 bounds_.width(), | 93 bounds_.width(), |
| 93 bounds_.height()); | 94 bounds_.height()); |
| 94 } | 95 } |
| 95 | 96 |
| 96 void BrowserBubble::ResizeToView() { | 97 void BrowserBubble::ResizeToView() { |
| 97 gfx::Size size = view_->GetPreferredSize(); | 98 gfx::Size size = view_->GetPreferredSize(); |
| 98 SetBounds(bounds_.x(), bounds_.y(), size.width(), size.height()); | 99 SetBounds(bounds_.x(), bounds_.y(), size.width(), size.height()); |
| 99 } | 100 } |
| OLD | NEW |