Index: views/bubble/bubble_delegate.cc |
diff --git a/views/bubble/bubble_delegate.cc b/views/bubble/bubble_delegate.cc |
index 14a06e8ac0695fb6f69b9eb6ec05e1a7c0791932..1c0c5f323d7116df9eb52280d50b3d074856294a 100644 |
--- a/views/bubble/bubble_delegate.cc |
+++ b/views/bubble/bubble_delegate.cc |
@@ -3,64 +3,56 @@ |
// found in the LICENSE file. |
#include "views/bubble/bubble_delegate.h" |
+ |
#include "views/bubble/bubble_frame_view.h" |
#include "views/bubble/bubble_view.h" |
- |
-#include "base/logging.h" |
#include "views/widget/widget.h" |
namespace views { |
-BubbleDelegate* BubbleDelegate::AsBubbleDelegate() { return this; } |
+BubbleDelegateView::~BubbleDelegateView() {} |
-ClientView* BubbleDelegate::CreateClientView(Widget* widget) { |
- BubbleView* bubble_view = new BubbleView(widget, GetContentsView()); |
- bubble_view->SetBounds(0, 0, GetBounds().width(), GetBounds().height()); |
- if (widget->GetFocusManager()) { |
- widget->GetFocusManager()->RegisterAccelerator( |
- views::Accelerator(ui::VKEY_ESCAPE, false, false, false), |
- bubble_view); |
- } |
- return bubble_view; |
-} |
+// static |
+Widget* BubbleDelegateView::ConstructBubble(BubbleDelegateView* bubble_delegate, |
+ Widget* parent_widget) { |
+ bubble_delegate->Init(); |
+ views::Widget* bubble_widget = new views::Widget(); |
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_BUBBLE); |
+ params.delegate = bubble_delegate; |
+ params.transparent = true; |
+ if (!parent_widget) |
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
+ params.parent_widget = parent_widget; |
+ bubble_widget->Init(params); |
-NonClientFrameView* BubbleDelegate::CreateNonClientFrameView() { |
- return new BubbleFrameView(GetWidget(), |
- GetBounds(), |
- GetFrameBackgroundColor(), |
- GetFrameArrowLocation()); |
-} |
+ // TODO(msw): Adjust the widget bounds to point the arrow as intended. |
+ bubble_widget->SetBounds(gfx::Rect(bubble_delegate->GetArrowPoint(), |
+ bubble_delegate->GetBubbleFrameView()->GetPreferredSize())); |
-const BubbleView* BubbleDelegate::GetBubbleView() const { |
- return GetWidget()->client_view()->AsBubbleView(); |
+ return bubble_widget; |
} |
-BubbleView* BubbleDelegate::GetBubbleView() { |
- return GetWidget()->client_view()->AsBubbleView(); |
+ClientView* BubbleDelegateView::CreateClientView(Widget* widget) { |
+ return new BubbleView(widget, GetContentsView()); |
} |
-const BubbleFrameView* BubbleDelegate::GetBubbleFrameView() const { |
- return static_cast<BubbleFrameView*>( |
- GetWidget()->non_client_view()->frame_view()); |
+NonClientFrameView* BubbleDelegateView::CreateNonClientFrameView() { |
+ return new BubbleFrameView(GetArrowLocation(), |
+ GetPreferredSize(), |
+ GetColor()); |
} |
-BubbleFrameView* BubbleDelegate::GetBubbleFrameView() { |
- return static_cast<BubbleFrameView*>( |
- GetWidget()->non_client_view()->frame_view()); |
-} |
- |
-BubbleDelegateView::BubbleDelegateView(Widget* frame):frame_(frame) { |
-} |
- |
-BubbleDelegateView::~BubbleDelegateView() { |
+gfx::Point BubbleDelegateView::GetArrowPoint() const { |
+ return gfx::Point(); |
} |
-Widget* BubbleDelegateView::GetWidget() { |
- return frame_; |
+BubbleView* BubbleDelegateView::GetBubbleView() { |
+ return GetWidget()->client_view()->AsBubbleView(); |
} |
-const Widget* BubbleDelegateView::GetWidget() const { |
- return frame_; |
+BubbleFrameView* BubbleDelegateView::GetBubbleFrameView() { |
+ return static_cast<BubbleFrameView*>( |
+ GetWidget()->non_client_view()->frame_view()); |
} |
} // namespace views |