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

Side by Side Diff: chrome/browser/renderer_host/render_widget_host_view_win.cc

Issue 743003: Send mouse events to the renderer before changing mouse capture, so that the ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/renderer_host/render_widget_host_view_win.h" 5 #include "chrome/browser/renderer_host/render_widget_host_view_win.h"
6 6
7 #include "app/gfx/canvas.h" 7 #include "app/gfx/canvas.h"
8 #include "app/gfx/gdi_util.h" 8 #include "app/gfx/gdi_util.h"
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/l10n_util_win.h" 10 #include "app/l10n_util_win.h"
(...skipping 1539 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 } 1550 }
1551 1551
1552 void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message, 1552 void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message,
1553 WPARAM wparam, 1553 WPARAM wparam,
1554 LPARAM lparam) { 1554 LPARAM lparam) {
1555 if (!render_widget_host_) 1555 if (!render_widget_host_)
1556 return; 1556 return;
1557 1557
1558 WebMouseEvent event( 1558 WebMouseEvent event(
1559 WebInputEventFactory::mouseEvent(m_hWnd, message, wparam, lparam)); 1559 WebInputEventFactory::mouseEvent(m_hWnd, message, wparam, lparam));
1560
1561 // Send the event to the renderer before changing mouse capture, so that the
1562 // capturelost event arrives after mouseup.
1563 render_widget_host_->ForwardMouseEvent(event);
darin (slow to review) 2010/03/10 00:14:06 LGTM I think you should make a similar change to
jam 2010/03/10 01:51:19 good idea, thanks. will add it and commit.
1564
1560 switch (event.type) { 1565 switch (event.type) {
1561 case WebInputEvent::MouseMove: 1566 case WebInputEvent::MouseMove:
1562 TrackMouseLeave(true); 1567 TrackMouseLeave(true);
1563 break; 1568 break;
1564 case WebInputEvent::MouseLeave: 1569 case WebInputEvent::MouseLeave:
1565 TrackMouseLeave(false); 1570 TrackMouseLeave(false);
1566 break; 1571 break;
1567 case WebInputEvent::MouseDown: 1572 case WebInputEvent::MouseDown:
1568 SetCapture(); 1573 SetCapture();
1569 break; 1574 break;
1570 case WebInputEvent::MouseUp: 1575 case WebInputEvent::MouseUp:
1571 if (GetCapture() == m_hWnd) 1576 if (GetCapture() == m_hWnd)
1572 ReleaseCapture(); 1577 ReleaseCapture();
1573 break; 1578 break;
1574 } 1579 }
1575 1580
1576 render_widget_host_->ForwardMouseEvent(event);
1577
1578 if (activatable_ && event.type == WebInputEvent::MouseDown) { 1581 if (activatable_ && event.type == WebInputEvent::MouseDown) {
1579 // This is a temporary workaround for bug 765011 to get focus when the 1582 // This is a temporary workaround for bug 765011 to get focus when the
1580 // mouse is clicked. This happens after the mouse down event is sent to 1583 // mouse is clicked. This happens after the mouse down event is sent to
1581 // the renderer because normally Windows does a WM_SETFOCUS after 1584 // the renderer because normally Windows does a WM_SETFOCUS after
1582 // WM_LBUTTONDOWN. 1585 // WM_LBUTTONDOWN.
1583 SetFocus(); 1586 SetFocus();
1584 } 1587 }
1585 } 1588 }
1586 1589
1587 void RenderWidgetHostViewWin::ShutdownHost() { 1590 void RenderWidgetHostViewWin::ShutdownHost() {
1588 shutdown_factory_.RevokeAll(); 1591 shutdown_factory_.RevokeAll();
1589 if (render_widget_host_) 1592 if (render_widget_host_)
1590 render_widget_host_->Shutdown(); 1593 render_widget_host_->Shutdown();
1591 // Do not touch any members at this point, |this| has been deleted. 1594 // Do not touch any members at this point, |this| has been deleted.
1592 } 1595 }
1593 1596
1594 // static 1597 // static
1595 RenderWidgetHostView* 1598 RenderWidgetHostView*
1596 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView( 1599 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView(
1597 gfx::NativeView native_view) { 1600 gfx::NativeView native_view) {
1598 if (::IsWindow(native_view)) { 1601 if (::IsWindow(native_view)) {
1599 HANDLE raw_render_host_view = ::GetProp(native_view, 1602 HANDLE raw_render_host_view = ::GetProp(native_view,
1600 kRenderWidgetHostViewKey); 1603 kRenderWidgetHostViewKey);
1601 if (raw_render_host_view) 1604 if (raw_render_host_view)
1602 return reinterpret_cast<RenderWidgetHostView*>(raw_render_host_view); 1605 return reinterpret_cast<RenderWidgetHostView*>(raw_render_host_view);
1603 } 1606 }
1604 return NULL; 1607 return NULL;
1605 } 1608 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698