| Index: views/bubble/bubble_delegate.cc
|
| diff --git a/views/bubble/bubble_delegate.cc b/views/bubble/bubble_delegate.cc
|
| index 14a06e8ac0695fb6f69b9eb6ec05e1a7c0791932..b9907fdc13e04979db085fcedd9cbb2da280ab4d 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(), GetEnableAccelerator());
|
| }
|
|
|
| -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
|
|
|