Here's what I can make out of the patch:
Replaces mPeekMessage calls by PeekMessageW calls.
Replaces mDispatchMessage calls by DispatchMessageW calls.
Pulls out support for Win9x print drivers. For WinNT it's WINSPOOLER, for Win9x it's NULL.
It does this by removing the Windows version check and always using WINSPOOLER.
Replaces mSHGetPathFromIDList calls by SHGetPathFromIDListW calls.
Replaces mSHBrowseForFolder calls by SHBrowseForFolderW calls.
Replaces mGetOpenFileName calls by GetOpenFileNameW calls.
Replaces mGetSaveFileName calls by GetSaveFileNameW calls.
The KeyboardLayout::LoadLayout procedure got modified so that it doesn't compensate anymore for Win9x' inexistant Unicode support. Before, it would use ASCII for Win9x.
Removal of ANSI version of a certain procedure in favor of Unicode.
Something to do with calling APIs for multiple monitors that are only available on Win98 and Win2000.
Implements GetMonitorInfoW in favor of other detection methods.
Removes winmm.dll loading, which seems to be used to play back certain sounds.
Next it removes all the Win9x support calls that were used before from nsToolkit. Here's parts of it the functions defined:
CODE
-HMODULE nsToolkit::mShell32Module = NULL;
-NS_DefWindowProc nsToolkit::mDefWindowProc = DefWindowProcA;
-NS_CallWindowProc nsToolkit::mCallWindowProc = CallWindowProcA;
-NS_SetWindowLong nsToolkit::mSetWindowLong = SetWindowLongA;
-NS_GetWindowLong nsToolkit::mGetWindowLong = GetWindowLongA;
-NS_SendMessage nsToolkit::mSendMessage = nsSendMessage;
-NS_DispatchMessage nsToolkit::mDispatchMessage = DispatchMessageA;
-NS_GetMessage nsToolkit::mGetMessage = GetMessageA;
-NS_PeekMessage nsToolkit::mPeekMessage = PeekMessageA;
-NS_GetOpenFileName nsToolkit::mGetOpenFileName = nsGetOpenFileName;
-NS_GetSaveFileName nsToolkit::mGetSaveFileName = nsGetSaveFileName;
-NS_GetClassName nsToolkit::mGetClassName = nsGetClassName;
-NS_CreateWindowEx nsToolkit::mCreateWindowEx = nsCreateWindowEx;
-NS_RegisterClass nsToolkit::mRegisterClass = nsRegisterClass;
-NS_UnregisterClass nsToolkit::mUnregisterClass = nsUnregisterClass;
CODE
- // For Windows 9x base OS nsFoo is already pointing to A functions
- // However on NT base OS we should point them to respective W functions
- nsToolkit::mDefWindowProc = DefWindowProcW;
- nsToolkit::mCallWindowProc = CallWindowProcW;
- nsToolkit::mSetWindowLong = SetWindowLongW;
- nsToolkit::mGetWindowLong = GetWindowLongW;
- nsToolkit::mSendMessage = SendMessageW;
- nsToolkit::mDispatchMessage = DispatchMessageW;
- nsToolkit::mGetMessage = GetMessageW;
- nsToolkit::mPeekMessage = PeekMessageW;
- nsToolkit::mGetOpenFileName = GetOpenFileNameW;
- nsToolkit::mGetSaveFileName = GetSaveFileNameW;
- nsToolkit::mGetClassName = GetClassNameW;
- nsToolkit::mCreateWindowEx = CreateWindowExW;
- nsToolkit::mRegisterClass = RegisterClassW;
- nsToolkit::mUnregisterClass = UnregisterClassW;
- // Explicit call of SHxxxW in Win95 makes moz fails to run (170969)
- // we use GetProcAddress() to hide
I guess this is enough food for thought for anyone interested. The patch is huge.