mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
osr: win: Implement page scroll mode (fixes #3849)
This commit is contained in:
committed by
Marshall Greenblatt
parent
189b247282
commit
2dd1d1f94b
@@ -743,6 +743,8 @@ void OsrWindowWin::OnMouseEvent(UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
|
||||
ScreenToClient(hwnd_, &screen_point);
|
||||
int delta = GET_WHEEL_DELTA_WPARAM(wParam);
|
||||
int deltaX = IsKeyDown(VK_SHIFT) ? delta : 0;
|
||||
int deltaY = !IsKeyDown(VK_SHIFT) ? delta : 0;
|
||||
|
||||
CefMouseEvent mouse_event;
|
||||
mouse_event.x = screen_point.x;
|
||||
@@ -750,9 +752,17 @@ void OsrWindowWin::OnMouseEvent(UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
ApplyPopupOffset(mouse_event.x, mouse_event.y);
|
||||
DeviceToLogical(mouse_event, device_scale_factor_);
|
||||
mouse_event.modifiers = GetCefMouseModifiers(wParam);
|
||||
browser_host->SendMouseWheelEvent(mouse_event,
|
||||
IsKeyDown(VK_SHIFT) ? delta : 0,
|
||||
!IsKeyDown(VK_SHIFT) ? delta : 0);
|
||||
|
||||
UINT sys_info_lines;
|
||||
if (SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &sys_info_lines,
|
||||
0) &&
|
||||
sys_info_lines == WHEEL_PAGESCROLL) {
|
||||
mouse_event.modifiers |= EVENTFLAG_SCROLL_BY_PAGE;
|
||||
deltaX = 0;
|
||||
deltaY = (delta > 0) ? 1 : -1;
|
||||
}
|
||||
|
||||
browser_host->SendMouseWheelEvent(mouse_event, deltaX, deltaY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user