wineconsole: Handle mouse wheel scrolling for user backend.

The mouse wheel will scroll if the buffer height is greater than the
console window's height in lines, otherwise console mouse input events
are generated.
This commit is contained in:
Dylan Smith 2010-02-25 19:15:13 -05:00 committed by Alexandre Julliard
parent b6439286b6
commit 3fbe40e2f9
1 changed files with 26 additions and 12 deletions

View File

@ -1197,9 +1197,6 @@ static LRESULT CALLBACK WCUSER_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
case WM_RBUTTONDBLCLK:
WCUSER_GenerateMouseInputRecord(data, WCUSER_GetCell(data, lParam), wParam, DOUBLE_CLICK);
break;
case WM_MOUSEWHEEL:
WCUSER_GenerateMouseInputRecord(data, WCUSER_GetCell(data, lParam), wParam, MOUSE_WHEELED);
break;
case WM_SETFOCUS:
if (data->curcfg.cursor_visible)
{
@ -1240,10 +1237,24 @@ static LRESULT CALLBACK WCUSER_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
}
}
break;
case WM_MOUSEWHEEL:
if (data->curcfg.sb_height <= data->curcfg.win_height)
{
WCUSER_GenerateMouseInputRecord(data, WCUSER_GetCell(data, lParam), wParam, MOUSE_WHEELED);
break;
}
/* else fallthrough */
case WM_VSCROLL:
{
int pos = data->curcfg.win_pos.Y;
if (uMsg == WM_MOUSEWHEEL)
{
UINT scrollLines = 3;
SystemParametersInfoW(SPI_GETWHEELSCROLLLINES, 0, &scrollLines, 0);
scrollLines *= -GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA;
pos += scrollLines;
} else {
switch (LOWORD(wParam))
{
case SB_PAGEUP: pos -= 8; break;
@ -1253,6 +1264,8 @@ static LRESULT CALLBACK WCUSER_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
case SB_THUMBTRACK: pos = HIWORD(wParam); break;
default: break;
}
}
if (pos < 0) pos = 0;
if (pos > data->curcfg.sb_height - data->curcfg.win_height)
pos = data->curcfg.sb_height - data->curcfg.win_height;
@ -1268,6 +1281,7 @@ static LRESULT CALLBACK WCUSER_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
}
}
break;
case WM_SYSCOMMAND:
switch (wParam)
{