| Index: chrome/browser/views/status_bubble_views.cc
|
| ===================================================================
|
| --- chrome/browser/views/status_bubble_views.cc (revision 22173)
|
| +++ chrome/browser/views/status_bubble_views.cc (working copy)
|
| @@ -9,9 +9,6 @@
|
| #include "app/gfx/canvas.h"
|
| #include "app/gfx/text_elider.h"
|
| #include "app/l10n_util.h"
|
| -#if defined(OS_WIN)
|
| -#include "app/l10n_util_win.h"
|
| -#endif
|
| #include "app/animation.h"
|
| #include "app/resource_bundle.h"
|
| #include "base/message_loop.h"
|
| @@ -25,11 +22,10 @@
|
| #include "third_party/skia/include/core/SkPath.h"
|
| #include "third_party/skia/include/core/SkRect.h"
|
| #include "views/controls/label.h"
|
| +#include "views/screen.h"
|
| #include "views/widget/root_view.h"
|
| #include "views/widget/widget.h"
|
| -#if defined(OS_WIN)
|
| -#include "views/widget/widget_win.h"
|
| -#endif
|
| +#include "views/window/window.h"
|
|
|
| // The alpha and color of the bubble's shadow.
|
| static const SkColor kShadowColor = SkColorSetARGB(30, 0, 0, 0);
|
| @@ -466,26 +462,14 @@
|
|
|
| void StatusBubbleViews::Init() {
|
| if (!popup_.get()) {
|
| -#if defined(OS_WIN)
|
| - views::WidgetWin* popup = new views::WidgetWin;
|
| - popup->set_delete_on_destroy(false);
|
| -
|
| + popup_.reset(views::Widget::CreateTransparentPopupWidget(false));
|
| if (!view_)
|
| - view_ = new StatusView(this, popup, frame_->GetThemeProvider());
|
| -
|
| - popup->set_window_style(WS_POPUP);
|
| - popup->set_window_ex_style(WS_EX_LAYERED | WS_EX_TOOLWINDOW |
|
| - WS_EX_TRANSPARENT |
|
| - l10n_util::GetExtendedTooltipStyles());
|
| - popup->SetOpacity(0x00);
|
| - popup->Init(frame_->GetNativeView(), gfx::Rect());
|
| - popup->SetContentsView(view_);
|
| + view_ = new StatusView(this, popup_.get(), frame_->GetThemeProvider());
|
| + popup_->SetOpacity(0x00);
|
| + popup_->Init(frame_->GetNativeView(), gfx::Rect());
|
| + popup_->SetContentsView(view_);
|
| Reposition();
|
| - popup->Show();
|
| - popup_.reset(popup);
|
| -#else
|
| - NOTIMPLEMENTED();
|
| -#endif
|
| + popup_->Show();
|
| }
|
| }
|
|
|
| @@ -589,24 +573,17 @@
|
| }
|
|
|
| void StatusBubbleViews::AvoidMouse() {
|
| - // Our status bubble is located in screen coordinates, so we should get
|
| - // those rather than attempting to reverse decode the web contents
|
| - // coordinates.
|
| - gfx::Point cursor_location;
|
| -#if defined(OS_WIN)
|
| - POINT tmp = { 0, 0 };
|
| - GetCursorPos(&tmp);
|
| - cursor_location = tmp;
|
| -#else
|
| - NOTIMPLEMENTED();
|
| -#endif
|
| -
|
| // Get the position of the frame.
|
| gfx::Point top_left;
|
| views::RootView* root = frame_->GetRootView();
|
| views::View::ConvertPointToScreen(root, &top_left);
|
| int window_width = root->GetLocalBounds(true).width(); // border included.
|
|
|
| + // Our status bubble is located in screen coordinates, so we should get
|
| + // those rather than attempting to reverse decode the web contents
|
| + // coordinates.
|
| + gfx::Point cursor_location = views::Screen::GetCursorScreenPoint();
|
| +
|
| // Get the cursor position relative to the popup.
|
| if (view_->UILayoutIsRightToLeft()) {
|
| int top_right_x = top_left.x() + window_width;
|
| @@ -648,16 +625,9 @@
|
|
|
| // Check if the bubble sticks out from the monitor or will obscure
|
| // download shelf.
|
| -#if defined(OS_WIN)
|
| - MONITORINFO monitor_info;
|
| - monitor_info.cbSize = sizeof(monitor_info);
|
| - GetMonitorInfo(MonitorFromWindow(frame_->GetNativeView(),
|
| - MONITOR_DEFAULTTONEAREST), &monitor_info);
|
| - gfx::Rect monitor_rect(monitor_info.rcWork);
|
| -#else
|
| - gfx::Rect monitor_rect;
|
| - NOTIMPLEMENTED();
|
| -#endif
|
| + gfx::NativeWindow window = frame_->GetWindow()->GetNativeWindow();
|
| + gfx::Rect monitor_rect =
|
| + views::Screen::GetMonitorWorkAreaNearestWindow(window);
|
| const int bubble_bottom_y = top_left.y() + position_.y() + size_.height();
|
|
|
| if (bubble_bottom_y + offset > monitor_rect.height() ||
|
|
|