SendMessageA for IME message
won't work in some situations.
JIRA issue: CORE-19268
Always use SendMessageW instead of
SendMessageA in ImmGenerateMessage.
CORE-20433
The brush returned from WM_CTLCOLORLISTBOX message is ignored when painting the background. This bug can be found at https://bugs.winehq.org/show_bug.cgi?id=2948
Fixed by handling backgound painting in LISTBOX_PaintItem and LISTBOX_Paint functions.
Patch by @I_Kill_Bugs
One visible case is the setup LiveCD error dialog, where the message box button can appear with a wrong bold/garbled look instead of the normal default-pushbutton appearance.
## Root cause
`win32ss/user/user32/controls/button.c` stores button state with `GetWindowLongPtrW` / `SetWindowLongPtrW`, but the control extra-byte layout was still defined as if the first slot were only `sizeof(LONG)`
On 64-bit builds, that causes the stored state to overlap the cached font, image, and UI-state fields.
Supplements commit cac013abef (PR #8104).
CORE-5680
The `EnableHexNumpad` string value is specified in the
`HKEY_CURRENT_USER\Control Panel\Input Method` registry key.
When enabled, the user can enter codepoints in hexadecimal form, using:
- `Alt .xxx` ('dot' prefix), for current ANSI codepage (ACP) codepoints;
- `Alt +xxx` ('plus' prefix), for Unicode codepoints.
These two modes complement the known `Alt xxx` and `Alt 0xxx` decimal forms
for entering codepoints in the current OEM or ACP codepage, respectively.
Follow-up of #8678. Commonize the definition of
LANGID_... values.
JIRA issue: CORE-20243
- Define LANGID_... values for CJK in <cjkcode.h> and
use it.
Ensure we dereference the same parent window object after a user-mode callback. We cache spwndParent in a local before sending messages so a parent change during the callback no longer trips the LIFO reference check.
- Capture the parent window in a local in IntDefWindowProc (WM_APPCOMMAND) and IntSendParentNotify.
- Use the local for UserRefObjectCo, co_IntSendMessage, and UserDerefObjectCo to prevent object mismatches when the parent changes mid-callback.
CORE-17331
Prepare to support CTF IMEs.
The IS_IME_HKL macro cannot
detect CTF IME.
JIRA issue: CORE-1926
- Use ImmIsIME instead of
IS_IME_HKL to check whether
the keyboard is IME.
CORE-13935
Improve "is_dib_monochrome" function in win32ss/user/user32/windows/cursoricon.c
so that it returns TRUE on a monochrome color table with WHITE first and BLACK second.
Pass it to EXLATEOBJ_vInitXlateFromDCsEx, which uses it (or, if it's CLR_INVALID, the source DC's background color) to initialize the EXLATEOBJ.
Adjust all callers to pass CLR_INVALID instead of 0.
Enable IMM mode and reduce
imm32_apitest failures.
JIRA issue: CORE-19268
- Enable LoadIMM registry setting.
NOTE: We have already DontLoadCTFIME
setting to avoid loading CTF IME.
Supporting CTF IME will be future work.
Fix SAL2 annotations of the IME hot-key functions.
JIRA issue: N/A
- Add ImmGetHotKey and ImmSetHotKey prototypes
into <imm32_undoc.h>.
- Fix CliImmSetHotKey annotation in user32 and
<undocuser.h>.
- Also fixes ImmSetHotKey, NtUserGetImeHotKey and
NtUserSetImeHotKey annotations.
Fix `UnregisterDeviceNotification()` crash on x64 due to pointer truncation.
Change signature of `CMP_REGNOTIFY` and `CMP_UNREGNOTIFY` to be correct (use `HDEVNOTIFY` instead of `ULONG`).
Like with all the other win32k NtUser* functions, acquire on entry and
release on exit the global lock, since the function is reading/writing
to global variables.
Also, set the last-error to ERROR_ACCESS_DENIED if the caller isn't the
registered logon process.
- Move sdk\include\reactos\wine to sdk\include\wine
- Reorder the directories in include_directories() to be closer to alphabetical. This should make it easier to determine what global include directories can be removed in the future.
One more step to support ghost windows.
JIRA issue: CORE-19671
- Add IntForceMinimizeWindow helper
function.
- Use IntForceMinimizeWindow in
co_WinPosShowWindow function.
- Enhance ShowWindow testcase in
user32_apitest.
- Add mask to the return value of
GetWindowLong.
Fix BSoD when toggling visibility of the IME status
window (IME Toolbar).
JIRA issue: CORE-20261
- Add IntGetImeUIFromWnd helper function.
- Fix exception in IntNotifyImeShowStatus function.
- Fix initialization of IME UI in ImeWndProc_common
function.
- Delete RegisterIMEClass function.
A bit clearer code. A bit faster execution.
- NtUserGetTitleBarInfo(): Add/Use early returns.
Addendum to
3b4c9ded42 (r33657).
- NtUserTrackPopupMenuEx():
Check flags a bit earlier.
Addendum to
3c35117f97
(0.4.16-dev-1275).
- NtUserThunkedMenuItemInfo():
Sort out code and comments
- menu.c: Move UserLeave() a bit earlier.
The following code in user32_winetest scroll.c was causing it:
ret = EnableScrollBar( mainwnd, SB_CTL, ESB_ENABLE_BOTH );
ok( !ret, "EnableScrollBar should fail.\n" );
This PR resolves a bug of #8094. #8094
correctly validates the flags. TPM_SYSTEM_MENU is an internal flag
and not a valid flag for TrackPopupMenu.
Thus, calling TrackPopupMenu.TPM_SYSTEM_MENU
in User32DefWindowProc was wrong.
This caused failure of taskbar context
menu.
JIRA issue: CORE-20238
- Move WM_POPUPSYSTEMMENU
message handling of user32 into
win32k.sys!IntDefWindowProc.
- Use win32k.sys!IntTrackPopupMenuEx
instead of user32!TrackPopupMenu
in handling of WM_POPUPSYSTEMMENU.
The caret move on IME was slow until this PR.
JIRA issue: CORE-19268
- Don't use ImmIsIME but use IS_IME_HKL(hKL) in
EDIT_SetCaretPos function. This change improves
the caret speed.
- Prohibit display of composition window for Korean
in the handling of WM_IME_SETCONTEXT and
WM_IME_STARTCOMPOSITION, because Korean
doesn't want it.
Improve CTF IME customization.
Use the proper names for CTF IME.
JIRA issue: CORE-19268
- In the registry key "HKLM\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\IMM", add
DontLoadCTFIME value and set it to 1.
- Delete LoadCTFIME value to avoid user
confusing.
- Rename UserIsCiceroEnabled function
as UserIsCTFIMEEnabled.
- Rename SRVINFO_CICERO_ENABLED
flag as SRVINFO_CTFIME_ENABLED.