mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 01:10:26 +00:00
- Fix the mouse wheel page.
- Get rid of global variables. svn path=/trunk/; revision=26341
This commit is contained in:
parent
f4a15a31a1
commit
82bb46d16d
1 changed files with 51 additions and 33 deletions
|
@ -75,9 +75,14 @@ typedef struct _BUTTON_DATA
|
||||||
} BUTTON_DATA, *PBUTTON_DATA;
|
} BUTTON_DATA, *PBUTTON_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _WHEEL_DATA
|
||||||
|
{
|
||||||
|
UINT uWheelScrollLines;
|
||||||
|
} WHEEL_DATA, *PWHEEL_DATA;
|
||||||
|
|
||||||
|
|
||||||
ULONG g_Initialized = 0;
|
ULONG g_Initialized = 0;
|
||||||
|
|
||||||
UINT g_WheelScrollLines = 5;
|
|
||||||
BOOL g_DropShadow = 0;
|
BOOL g_DropShadow = 0;
|
||||||
|
|
||||||
ULONG g_MouseSensitivity = DEFAULT_MOUSE_SENSITIVITY;
|
ULONG g_MouseSensitivity = DEFAULT_MOUSE_SENSITIVITY;
|
||||||
|
@ -148,9 +153,6 @@ InitializeMouse(VOID)
|
||||||
/* snap to default button */
|
/* snap to default button */
|
||||||
SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, &g_SnapToDefaultButton, 0);
|
SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, &g_SnapToDefaultButton, 0);
|
||||||
|
|
||||||
/* wheel scroll lines */
|
|
||||||
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &g_WheelScrollLines, 0);
|
|
||||||
|
|
||||||
//FIXME
|
//FIXME
|
||||||
//pointer precision
|
//pointer precision
|
||||||
// SPI_GETMOUSE?
|
// SPI_GETMOUSE?
|
||||||
|
@ -1208,11 +1210,11 @@ OptionProc(IN HWND hwndDlg,
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
ShowDialogWheelControls(HWND hwndDlg)
|
ShowDialogWheelControls(HWND hwndDlg, UINT uWheelScrollLines, BOOL bInit)
|
||||||
{
|
{
|
||||||
HWND hDlgCtrl;
|
HWND hDlgCtrl;
|
||||||
|
|
||||||
if (g_WheelScrollLines != -1)
|
if (uWheelScrollLines != WHEEL_PAGESCROLL)
|
||||||
{
|
{
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_LINES);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_LINES);
|
||||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
||||||
|
@ -1235,10 +1237,14 @@ ShowDialogWheelControls(HWND hwndDlg)
|
||||||
EnableWindow(hDlgCtrl, FALSE);
|
EnableWindow(hDlgCtrl, FALSE);
|
||||||
|
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES);
|
||||||
EnableWindow(hDlgCtrl, TRUE);
|
EnableWindow(hDlgCtrl, FALSE);
|
||||||
|
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_PAGE);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_WHEEL_SCROLL_PAGE);
|
||||||
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
||||||
|
|
||||||
|
/* Set the default scroll lines value */
|
||||||
|
if (bInit == TRUE)
|
||||||
|
SetDlgItemInt(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES, DEFAULT_WHEEL_SCROLL_LINES, FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1249,54 +1255,66 @@ WheelProc(IN HWND hwndDlg,
|
||||||
IN WPARAM wParam,
|
IN WPARAM wParam,
|
||||||
IN LPARAM lParam)
|
IN LPARAM lParam)
|
||||||
{
|
{
|
||||||
HWND hDlgCtrl;
|
|
||||||
WCHAR buffer[MAX_PATH];
|
|
||||||
LPPSHNOTIFY lppsn;
|
LPPSHNOTIFY lppsn;
|
||||||
|
PWHEEL_DATA pWheelData;
|
||||||
|
|
||||||
|
pWheelData = (PWHEEL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
ShowDialogWheelControls(hwndDlg);
|
pWheelData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WHEEL_DATA));
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES), UDM_SETRANGE, 0, MAKELONG ((short) 100, (short) 0));
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pWheelData);
|
||||||
if (g_WheelScrollLines != UINT_MAX)
|
|
||||||
|
/* Get wheel scroll lines */
|
||||||
|
if (!SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &pWheelData->uWheelScrollLines, 0))
|
||||||
{
|
{
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
|
pWheelData->uWheelScrollLines = DEFAULT_WHEEL_SCROLL_LINES;
|
||||||
wsprintf(buffer, _T("%d"), g_WheelScrollLines);
|
}
|
||||||
SendMessage(hDlgCtrl, WM_SETTEXT, (WPARAM)0, (LPARAM)buffer);
|
|
||||||
|
ShowDialogWheelControls(hwndDlg, pWheelData->uWheelScrollLines, TRUE);
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_UPDOWN_WHEEL_SCROLL_LINES, UDM_SETRANGE, 0, MAKELONG((short)100, (short)0));
|
||||||
|
if (pWheelData->uWheelScrollLines != WHEEL_PAGESCROLL)
|
||||||
|
{
|
||||||
|
SetDlgItemInt(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES, pWheelData->uWheelScrollLines, FALSE);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
case WM_DESTROY:
|
||||||
|
HeapFree(GetProcessHeap(), 0, pWheelData);
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case IDC_RADIO_WHEEL_SCROLL_LINES:
|
case IDC_RADIO_WHEEL_SCROLL_LINES:
|
||||||
{
|
pWheelData->uWheelScrollLines = GetDlgItemInt(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES, NULL, FALSE);
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
|
ShowDialogWheelControls(hwndDlg, pWheelData->uWheelScrollLines, FALSE);
|
||||||
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)100, (LPARAM)buffer);
|
|
||||||
g_WheelScrollLines = _wtoi(buffer);
|
|
||||||
ShowDialogWheelControls(hwndDlg);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case IDC_RADIO_WHEEL_SCROLL_PAGE:
|
|
||||||
{
|
|
||||||
g_WheelScrollLines = UINT_MAX;
|
|
||||||
ShowDialogWheelControls(hwndDlg);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDC_RADIO_WHEEL_SCROLL_PAGE:
|
||||||
|
pWheelData->uWheelScrollLines = WHEEL_PAGESCROLL;
|
||||||
|
ShowDialogWheelControls(hwndDlg, pWheelData->uWheelScrollLines, FALSE);
|
||||||
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_EDIT_WHEEL_SCROLL_LINES:
|
||||||
|
if (pWheelData && HIWORD(wParam) == EN_CHANGE)
|
||||||
|
{
|
||||||
|
pWheelData->uWheelScrollLines = GetDlgItemInt(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES, NULL, FALSE);
|
||||||
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
lppsn = (LPPSHNOTIFY)lParam;
|
lppsn = (LPPSHNOTIFY)lParam;
|
||||||
if (lppsn->hdr.code == PSN_APPLY)
|
if (lppsn->hdr.code == PSN_APPLY)
|
||||||
{
|
{
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_WHEEL_SCROLL_LINES);
|
SystemParametersInfo(SPI_SETWHEELSCROLLLINES, pWheelData->uWheelScrollLines,
|
||||||
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)buffer);
|
0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
|
||||||
g_WheelScrollLines = _wtoi(buffer);
|
|
||||||
SystemParametersInfo(SPI_SETWHEELSCROLLLINES, g_WheelScrollLines, 0, SPIF_SENDCHANGE);
|
|
||||||
|
|
||||||
SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue