diff options
Diffstat (limited to 'chrome/browser/render_widget_host_view_win.cc')
-rw-r--r-- | chrome/browser/render_widget_host_view_win.cc | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/chrome/browser/render_widget_host_view_win.cc b/chrome/browser/render_widget_host_view_win.cc index d927868..04ad8f5 100644 --- a/chrome/browser/render_widget_host_view_win.cc +++ b/chrome/browser/render_widget_host_view_win.cc @@ -67,8 +67,6 @@ RenderWidgetHostView* RenderWidgetHostView::CreateViewForWidget( RenderWidgetHostViewWin::RenderWidgetHostViewWin(RenderWidgetHost* widget) : render_widget_host_(widget), - cursor_(LoadCursor(NULL, IDC_ARROW)), - cursor_is_custom_(false), track_mouse_leave_(false), ime_notification_(false), is_hidden_(false), @@ -85,8 +83,6 @@ RenderWidgetHostViewWin::RenderWidgetHostViewWin(RenderWidgetHost* widget) } RenderWidgetHostViewWin::~RenderWidgetHostViewWin() { - if (cursor_is_custom_) - DestroyIcon(cursor_); ResetTooltip(); } @@ -218,33 +214,22 @@ gfx::Rect RenderWidgetHostViewWin::GetViewBounds() const { } void RenderWidgetHostViewWin::UpdateCursor(const WebCursor& cursor) { - static HINSTANCE module_handle = - GetModuleHandle(chrome::kBrowserResourcesDll); - - // If the last active cursor was a custom cursor, we need to destroy - // it before setting the new one. - if (cursor_is_custom_) - DestroyIcon(cursor_); - - cursor_is_custom_ = cursor.IsCustom(); - if (cursor_is_custom_) { - cursor_ = cursor.GetCustomCursor(); - } else { - // We cannot pass in NULL as the module handle as this would only - // work for standard win32 cursors. We can also receive cursor - // types which are defined as webkit resources. We need to specify - // the module handle of chrome.dll while loading these cursors. - cursor_ = cursor.GetCursor(module_handle); - } - + current_cursor_ = cursor; UpdateCursorIfOverSelf(); } void RenderWidgetHostViewWin::UpdateCursorIfOverSelf() { static HCURSOR kCursorArrow = LoadCursor(NULL, IDC_ARROW); static HCURSOR kCursorAppStarting = LoadCursor(NULL, IDC_APPSTARTING); + static HINSTANCE module_handle = + GetModuleHandle(chrome::kBrowserResourcesDll); + + // We cannot pass in NULL as the module handle as this would only work for + // standard win32 cursors. We can also receive cursor types which are defined + // as webkit resources. We need to specify the module handle of chrome.dll + // while loading these cursors. + HCURSOR display_cursor = current_cursor_.GetCursor(module_handle); - HCURSOR display_cursor = cursor_; // If a page is in the loading state, we want to show the Arrow+Hourglass // cursor only when the current cursor is the ARROW cursor. In all other // cases we should continue to display the current cursor. @@ -780,6 +765,9 @@ LRESULT RenderWidgetHostViewWin::OnWheelEvent(UINT message, WPARAM wparam, LRESULT RenderWidgetHostViewWin::OnMouseActivate(UINT, WPARAM, LPARAM, BOOL& handled) { + if (!focus_on_show_) + return MA_NOACTIVATE; + HWND focus_window = GetFocus(); if (!::IsWindow(focus_window) || !IsChild(focus_window)) { // We handle WM_MOUSEACTIVATE to set focus to the underlying plugin @@ -916,4 +904,3 @@ void RenderWidgetHostViewWin::ShutdownHost() { render_widget_host_->Shutdown(); // Do not touch any members at this point, |this| has been deleted. } - |