Thanks for contributing,
Harold
[EMAIL PROTECTED] wrote:
--- xc/programs/Xserver/hw/xwin/winwndproc.c.orig 2003-02-12 16:01:38.000000000 +0100 +++ xc/programs/Xserver/hw/xwin/winwndproc.c 2003-06-05 12:54:36.000000000 +0200 @@ -58,6 +58,8 @@ static Bool s_fCursor = TRUE; static Bool s_fTracking = FALSE; static unsigned long s_ulServerGeneration = 0; + static UINT s_wheel_message = WM_NULL; + static Bool s_wheel_message_defined = FALSE; int iScanCode; int i;
@@ -87,6 +89,41 @@ s_hwndLastPrivates = NULL; }
+ /* Init s_wheel_message */ + if ( !s_wheel_message_defined ) + { + OSVERSIONINFO osvi; + + /* Gets the operating system version */ + ZeroMemory (&osvi, sizeof (osvi)); + osvi.dwOSVersionInfoSize = sizeof (osvi); + GetVersionEx (&osvi); + + /* + * If we're running an OS version that doesn't support WM_MOUSEWHEEL, + * find out what message number we should be using instead. + */ + if (osvi.dwMajorVersion < 4 || + (osvi.dwMajorVersion == 4 && osvi.dwPlatformId != VER_PLATFORM_WIN32_NT)) + { + s_wheel_message = RegisterWindowMessage ("MSWHEEL_ROLLMSG"); + if (s_wheel_message == WM_NULL) + ErrorF ("Error registering MSWHEEL_ROLLMSG window message."); + } + s_wheel_message_defined=TRUE; + } + + if (message == s_wheel_message && message != WM_NULL) + { + if (s_pScreenPriv != NULL && !s_pScreenInfo->fIgnoreInput) + { +#if CYGDEBUG + ErrorF ("winWindowProc - MSWHEEL_ROLLMSG\n"); +#endif + winMouseWheel (s_pScreen, wParam); + } + } + /* Branch on message type */ switch (message) {
