Index: chrome/browser/render_widget_host_view_win.cc |
=================================================================== |
--- chrome/browser/render_widget_host_view_win.cc (revision 7750) |
+++ chrome/browser/render_widget_host_view_win.cc (working copy) |
@@ -67,8 +67,6 @@ |
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() { |
- if (cursor_is_custom_) |
- DestroyIcon(cursor_); |
ResetTooltip(); |
} |
@@ -218,33 +214,22 @@ |
} |
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); |
- HCURSOR display_cursor = cursor_; |
+ // 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); |
+ |
// 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::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 @@ |
render_widget_host_->Shutdown(); |
// Do not touch any members at this point, |this| has been deleted. |
} |
- |