summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/views/browser_bubble_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/views/browser_bubble_win.cc')
-rw-r--r--chrome/browser/ui/views/browser_bubble_win.cc33
1 files changed, 13 insertions, 20 deletions
diff --git a/chrome/browser/ui/views/browser_bubble_win.cc b/chrome/browser/ui/views/browser_bubble_win.cc
index 3effe25..ce4b66c 100644
--- a/chrome/browser/ui/views/browser_bubble_win.cc
+++ b/chrome/browser/ui/views/browser_bubble_win.cc
@@ -14,7 +14,8 @@
class BubbleWidget : public views::WidgetWin {
public:
explicit BubbleWidget(BrowserBubble* bubble)
- : bubble_(bubble),
+ : views::WidgetWin(new views::Widget),
+ bubble_(bubble),
border_widget_(new BorderWidgetWin) {
set_window_style(WS_POPUP | WS_CLIPCHILDREN);
set_window_ex_style(WS_EX_TOOLWINDOW);
@@ -108,17 +109,18 @@ class BubbleWidget : public views::WidgetWin {
void BrowserBubble::InitPopup(const gfx::Insets& content_margins) {
// popup_ is a Widget, but we need to do some WidgetWin stuff first, then
// we'll assign it into popup_.
- BubbleWidget* pop = new BubbleWidget(this);
- popup_ = pop;
+ BubbleWidget* bubble_widget = new BubbleWidget(this);
- BorderWidgetWin* border_widget = pop->border_widget();
+ BorderWidgetWin* border_widget = bubble_widget->border_widget();
border_widget->InitBorderWidgetWin(new BorderContents,
frame_->GetNativeView());
border_widget->border_contents()->set_content_margins(content_margins);
+ popup_ = bubble_widget->GetWidget();
// We make the BorderWidgetWin the owner of the Bubble HWND, so that the
// latter is displayed on top of the former.
views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+ params.native_widget = bubble_widget;
params.parent = border_widget->GetNativeView();
popup_->Init(params);
popup_->SetContentsView(view_);
@@ -128,30 +130,21 @@ void BrowserBubble::InitPopup(const gfx::Insets& content_margins) {
AttachToBrowser();
}
-void BrowserBubble::MovePopup(int x, int y, int w, int h) {
- views::WidgetWin* pop = static_cast<views::WidgetWin*>(popup_);
- pop->SetBounds(gfx::Rect(x, y, w, h));
-}
-
void BrowserBubble::Show(bool activate) {
- if (visible_)
- return;
- BubbleWidget* pop = static_cast<BubbleWidget*>(popup_);
- pop->ShowAndActivate(activate);
- visible_ = true;
+ if (!popup_->IsVisible()) {
+ static_cast<BubbleWidget*>(popup_->native_widget())->ShowAndActivate(
+ activate);
+ }
}
void BrowserBubble::Hide() {
- if (!visible_)
- return;
- views::WidgetWin* pop = static_cast<views::WidgetWin*>(popup_);
- pop->Hide();
- visible_ = false;
+ if (popup_->IsVisible())
+ static_cast<BubbleWidget*>(popup_->native_widget())->Hide();
}
void BrowserBubble::ResizeToView() {
BorderWidgetWin* border_widget =
- static_cast<BubbleWidget*>(popup_)->border_widget();
+ static_cast<BubbleWidget*>(popup_->native_widget())->border_widget();
gfx::Rect window_bounds;
window_bounds = border_widget->SizeAndGetBounds(GetAbsoluteRelativeTo(),