Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(446)

Unified Diff: views/bubble/bubble_delegate.cc

Issue 8227003: Views Bubble API adjustments and cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698