Commit Graph
1629 Commits
Author SHA1 Message Date
Ahmed Arif 984657bdf0 [WIN32SS:ENG] Fix Y coordinate of the software pointer exclude rectangle (#9116)
Crazy that this typo survived two decades, but here we are, that might fix some GDI test.

Bug was introduced in https://github.com/reactos/reactos/commit/50b193239bd9554a4e7cf671a001dc12ec726454 (r12035).
2026-06-08 13:48:12 +03:00
Katayama Hirofumi MZ 3ebf95acaa [IMM32] softkbd.c: Fix warnings (#9061)
JIRA issue: N/A
- Erase "pT1 = pT1;" self-assignment.
- Add SOFTKBDDATAEX structure as
  an extension of SOFTKBDDATA.
- Fix array-bounds warning, by using
  SOFTKBDDATAEX.
2026-05-28 23:09:44 +09:00
Timo Kreuzer 7f459b49f0 [WIN32K:NTGDI] Fix brush origin for pattern painting
Use pdc->ptlFillOrigin (which is adjusted by the Window origin already) instead of pdc->pdcattr->ptlBrushOrigin.
Fixes several gdiplus_winetest:brush tests
2026-05-22 18:23:42 +00:00
Katayama Hirofumi MZ df7c1fbc6b [NTGDI][FREETYPE] Remove dead parameters (#9022)
Improve simplicity for future.
JIRA issue: CORE-8466
- Remove the 1st parameter (PDC) of
  TextIntUpdateSize function.
- Remove the 1st parameter (PDC) of
  IntRequestFontSize function.
2026-05-17 09:58:56 +09:00
Katayama Hirofumi MZ 713888355b [NTGDI][FREETYPE] 2-line fix: Changing DPRINT1 to DPRINT
to avoid unnecessary log spam. @KRosUser suggests.
JIRA issue: N/A
2026-05-14 21:31:44 +09:00
Thomas Anderson b2b166c565 [USERSRV] Fix cut off text in all dialog translations (#8945)
CORE-19470
2026-05-14 13:36:25 +03:00
Timo Kreuzer f85e19ecfb [GDI32] Relax an ASSERT
This prevents an assertion failure in gdi32_winetest
2026-05-08 19:30:33 +00:00
Timo Kreuzer 1cf31524d5 [REACTOS] Stop using non-conforming swprintf / vswprintf
Use the underscored versions instead.
2026-05-07 06:27:58 +00:00
Doug LyonsandJose Carlos Jesus 1dc2e6de72 [USER32][COMCTL32] EDIT control: Fix vertical scrolling past line number 32767 (#8930)
CORE-19305

Change how WM_VSCROLL is handled to allow higher line counts to be passed to EDIT_WM_VScroll.
Use the GetScrollInfo() function to determine vertical scroll position and pass this to EDIT_WM_VScroll.
---------
Co-authored-by: Jose Carlos Jesus <[email protected]>
2026-05-06 19:11:58 -05:00
Doug Lyons 049085f106 [GDI32] Fix pptviewer '97 and calls to PolylineTo and PolyBezierTo (#8902)
CORE-20553

Fix PolylineTo and PolyBezierTo based on Wine 10.0.
Include starting point in the "POINTS" variable being passed to PolylineTo and PolyBezierTo.
Handle the starting point as the origin for drawing the lines.
2026-05-04 20:53:32 -05:00
Katayama Hirofumi MZ 5ab1ff188c [NTUSER][ENG] Remove needless comments (#8896)
JIRA issue: N/A
2026-04-24 07:02:23 +09:00
Katayama Hirofumi MZ eb9a73c975 [NTUSER] IntImmProcessKey: Use KF_... flags (#8897)
A tiny refactoring for code readability.
JIRA issue: CORE-19268
Use HIWORD macro and KF_...
constants.
2026-04-23 22:53:36 +09:00
Timo Kreuzer 9d1418fcb6 [NDK][NTDLL][KERNEL32] Improve tick count to ms calculation
Use an inline function to do the calculation (optimized for 32/64 bit).
2026-04-23 11:58:15 +00:00
Katayama Hirofumi MZ 40252ff735 [KERNEL32][CONSRV][SDK] Implement ConsoleIMERoutine (#8862)
Preparing for Console IME.
JIRA issue: CORE-18923
- Add IntRegQueryValue,
  IntPathQuoteSpacesW, and
  GetConsoleIMECommandLine helper
  functions.
- Add ConsoleIMERoutine function.
- Modify ConnectInfo.ImeRoutine in
  ConDllInitialize function.
- Modify kernel32.spec to add
  ConsoleIMERoutine.
- Add ConsoleIMERoutine prototype
  to <wincon_undoc.h>.
- Connect ImeRoutine in
  ConSrvConnect function.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-04-21 17:52:19 +09:00
Katayama Hirofumi MZ 9533ad790a [WINSRV] ConioWriteConsole: Modify update rect for CJK (#8859)
Correctly displaying Asian characters
on Asian Console.
JIRA issue: CORE-18972
Modify the update rectangle for Chinese,
Japanese, and Korean.
2026-04-17 00:59:34 +09:00
Katayama Hirofumi MZ 747b3c0cc0 [IMM32] Implement WINNLSTranslateMessage (#8852)
Completing the IME messaging framework.
JIRA issue: CORE-19268
- Fix corner cases at ImmGenerateMessage and
  ImmTranslateMessage functions.
- Implement WINNLSTranslateMessage function.
2026-04-14 11:23:18 +09:00
Max Korostil feb9febaae [WIN32KNT_APITEST][NTUSER] Fix NtUserConvertMemHandle BSOD (#7878)
Fix NtUserConvertMemHandle BSOD.

JIRA issue: CORE-18121
2026-04-12 19:10:34 -05:00
Katayama Hirofumi MZ 215d409f52 [IMM32][NTUSER][SDK] Implement ImmSendIMEMessageExA/W (#8850)
Supporting Win3.x IMM.
JIRA issue: CORE-19268
- Move <wine/ime.h> to psdk <ime.h>.
- Add some constants to
  <imm32_undoc.h>.
- Implement ImmSendIMEMessageExA
  and ImmSendIMEMessageExW
  functions.
2026-04-11 09:45:38 +09:00
Katayama Hirofumi MZ 61fb4db34c [SDK][IMM32][NTUSER] Delete <jpnvkeys.h> and use <wine/ime.h> instead (#8847)
Follow-up of #8846. Now <jpnvkeys.h>
is useless. Minor refactoring and
standardation.
JIRA issue: CORE-19268
- Replace <jpnvkeys.h> usage with
  <wine/ime.h> and fix
  VK_DBE_ENTERIMECONFIGMODE
  naming.
- Remove duplicated
  WM_IME_REPORT/IR_* and
  UNDETERMINESTRUCT definitions
  now provided by wine/ime.h.
- Introduce win3send.c half-
  implementing
  ImmSendIMEMessageExA/W.
- Add CMake option
  IMM_WIN3_SUPPORT (default: ON).
2026-04-10 08:30:56 +09:00
Katayama Hirofumi MZ ce73ba4426 [IMM32][SDK] ImmGetCompositionString: Support GCS_PRIVATE (#8844)
Prepare for CTF IME support.
JIRA issue: CORE-19268
- Add GCS_PRIVATE (0x8000) constant,
  COMPSTR_PRIVATE structure, and
  CtfImmIsGuidMapEnable prototype
  to <imm32_undoc.h>.
- Implement GCS_PRIVATE index in
  ImmGetCompositionStringA/W.
2026-04-10 07:10:11 +09:00
Katayama Hirofumi MZ 4671b481a3 [NTGDI][FREETYPE] FontLink: Request sub-font sizes (#8806)
A bug fix of FontLink'ed glyph size.
JIRA issue: CORE-20470
- Add FONTLINK_ENTRY structure
  and g_FontLinkEntries variable.
- Delete font-link cache mechanism.
- Don't access the registry while
  rendering is in progress.
- Request sub-font sizes while
  drawing FontLink text.
2026-04-07 14:06:50 +09:00
Katayama Hirofumi MZ 45a4f95b04 [NTGDI][FREETYPE] Revert 'font look-up cache #8641' (#8816)
#8641 introduced some bugs. We revert it.
JIRA issue: CORE-20538
- Delete FONT_LOOKUP_CACHE and
  s_FontLookupCacheList.
- Delete FontLookUp_... functions.
- Revert FontLink_PrepareFontInfo and
  TextIntRealizeFont functions.
2026-04-01 19:23:17 +09:00
Katayama Hirofumi MZ 863203030f [IMM32][SDK] Rename CLIENTIMC_UNKNOWN2 as CLIENTIMC_LOCKED (#8807)
Improve code readability.
JIRA issue: CORE-19268
- Rename CLIENTIMC_UNKNOWN2
  flag as CLIENTIMC_LOCKED.
- Delete unused
  CLIENTIMC_UNKNOWN4 flag.
- Fix the return value of
  Imm32AssignNewLayout function.
2026-03-30 04:39:26 +09:00
Katayama Hirofumi MZ 75e1d78fe9 [IMM32][SDK] imemenu.c: Rewrite IME Menu feature (#8769)
There were some design difference
comparing to Windows. Improve
IME Menu compatibility.
JIRA issue: CORE-20142
- Re-implement IME Menu.
- Modify
  ImmPutImeMenuItemsIntoMappedFile
  prototype.
2026-03-29 11:33:23 +09:00
Alex Mendoza d5697b231c [IMM32] Ensure minimum size in Imm32CreateInputContext (#8791)
Ensure minimum size of hPrivate
in Imm32CreateInputContext, just
like Imm32SelectInputContext does
2026-03-28 19:41:40 +09:00
Katayama Hirofumi MZ b7510137d9 [IMM32] Fix Imm32AssignNewLayout (#8764)
Fix behavior of IME installation.
JIRA issue: CORE-19268
Rewrite Imm32AssignNewLayout function.
2026-03-28 09:11:13 +09:00
Alex Mendoza f76ed0625b [IMM32] ImmEnumInputContext: Add IS_IMM_MODE check (#8768) 2026-03-25 16:51:13 +09:00
Katayama Hirofumi MZ ed0b44f3b9 [IMM32] ImmGetDescriptionW: Check IS_IME_HKL (#8762)
Tougher system.
JIRA issue: CORE-19268
2026-03-25 09:36:59 +09:00
Katayama Hirofumi MZ 4ca47af13f Revert "[IMM32] ImmInstallIMEW: Use uppercase filename" (#8767)
Reverts #8763.
We should consider case-sensitive
file-systems we have.
2026-03-24 09:45:11 +09:00
Katayama Hirofumi MZ 8b3663d2b6 [IMM32] ImmGetGuideLineAW: Fix return value for error (#8766)
The function has to return zero on error.
JIRA issue: CORE-19268
Return zero on error (in GGL_STRING and GGL_PRIVATE).
2026-03-24 06:50:16 +09:00
Katayama Hirofumi MZ 0c7d3f20fa [IMM32] Fix Imm32ReconvertWideFromAnsi (#8758)
Fix recoversion feature.
JIRA issue: CORE-19268
- Replace pSrc with pDest in
  Imm32ReconvertWideFromAnsi.
2026-03-23 23:34:00 +09:00
Katayama Hirofumi MZ 35d30ec5fe [IMM32] ImmSetConversionStatus: Check IS_CICERO_COMPAT_DISABLED (#8760)
Improve IME compatibility.
JIRA issue: CORE-19268
- Check IS_CICERO_COMPAT_DISABLED's
  value.
- Initialize dwOldConversion and
  dwOldSentence variables.
2026-03-23 23:28:58 +09:00
Katayama Hirofumi MZ e2ef2c9923 [IMM32] ImmEnumInputContext: Validate hIMC (#8761)
Tougher system.
JIRA issue: CORE-19268
Check hIMC and gpsi in
ImmEnumInputContext function.
2026-03-23 22:43:33 +09:00
Katayama Hirofumi MZ cad71d733f [IMM32] Fix Imm32IsSystemJapaneseOrKorean (#8757)
The if-condition for Japanese or
Korean was wrong.
JIRA issue: CORE-19268
Replace logical operator || with
operator &&.
2026-03-23 22:33:51 +09:00
Katayama Hirofumi MZ 3b619baeb5 [IMM32] ImmGenerateMessage: Always use SendMessageW (#8765)
SendMessageA for IME message
won't work in some situations.
JIRA issue: CORE-19268
Always use SendMessageW instead of
SendMessageA in ImmGenerateMessage.
2026-03-23 22:23:47 +09:00
Katayama Hirofumi MZ d47c613c26 [IMM32] ImmInstallIMEW: Use uppercase filename (#8763)
Avoid data inconsistencies in
interoperability.
JIRA issue: CORE-19268
Call CharUpperW in ImmInstallIMEW
function.
2026-03-23 22:16:51 +09:00
Katayama Hirofumi MZ 0566a0f699 [NTGDI][GDI32][FREETYPE] Rewrite GetGlyphIndicesA/W (#8747)
JIRA issue: CORE-20505
- NtGdiGetGlyphIndicesW function simply calls
  NtGdiGetGlyphIndicesWInternal function.
- NtGdiGetGlyphIndicesWInternal allocates buffer
  and calls GreGetGlyphIndicesW function.
- Add GreGetGlyphIndicesW definition in freetype.c.
- Modify GetGlyphIndicesA function.
2026-03-23 12:05:19 +09:00
Doug Lyons 16a65a0df2 [NTUSER][COMCTL32] Fix ListBox background color setting (#8665)
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
2026-03-22 22:38:36 +01:00
Ahmed Arif 057d978fcb [USER32] button.c Fix extra-byte layout on x64 (#8733)
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.
2026-03-16 13:01:44 +01:00
Katayama Hirofumi MZ e6328fbf1e [NTGDI][FREETYPE][SDK] Rewrite NtGdiGetCharABCWidthsW (#8704)
Refactor and improve readability.
JIRA issue: CORE-20505
- Add GreGetCharABCWidthsW helper function.
- Rewrite NtGdiGetCharABCWidthsW by using
  GreGetCharABCWidthsW.
2026-03-13 18:24:26 +09:00
Ratin Gao 36ffee8ea3 [WIN32SS:NTUSER] Implement SharedUserData->LastSystemRITEventTickCount (#8537)
This field was introduced in NT5.1, records the tick count of the last user input
(system-wide), updated at most once per minute (or once per second since NT6.0).

Unlike `GetLastInputInfo` which is designed for providing session-specific
user input information, `SharedUserData->LastSystemRITEventTickCount` provides
system-wide time, used by:
- [Task Schedule (TASK_EVENT_TRIGGER_ON_IDLE)](https://learn.microsoft.com/en-us/windows/win32/taskschd/i)
- [Inactivity Monitoring](https://learn.microsoft.com/en-us/windows/win32/devnotes/inactivity-monitoring)
- Maybe some places I don't know...

See also:
- [KUSER_SHARED_DATA - Geoff Chappell](https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/ntexapi_x/kuser_shared_data/index.htm)
- [TASK_TRIGGER_TYPE enumeration - Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/mstask/ne-mstask-task_trigger_type)
- [Task Scheduler: idle conditions](https://learn.microsoft.com/en-us/windows/win32/taskschd/i)
- [GetLastInputInfo function - Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getlastinputinfo)
- [Inactivity Monitoring](https://learn.microsoft.com/en-us/windows/win32/devnotes/inactivity-monitoring)

## Proposed changes

Before this PR, `SharedUserData->LastSystemRITEventTickCount` is never used
and always 0, `gpsi->dwLastSystemRITEventTickCountUpdate` is never used too.
After this PR, `SharedUserData->LastSystemRITEventTickCount` updates correctly
by using `gpsi->dwLastSystemRITEventTickCountUpdate` to record previous update
time, the behavior is the same as on Windows.
2026-03-08 18:58:37 +01:00
Hermès Bélusca-Maïto e22f447467 [WIN32SS:NTUSER] Implement EnableHexNumpad support (#8680)
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.
2026-03-08 18:35:37 +01:00
Hermès Bélusca-Maïto 03b1e240bf [VIDEOPRT] Deduplicate the IntIsVgaSaveDriver(Name) functionality (#8718)
- Initialize the device extension `IsVgaDriver` field with a single
  `IntIsVgaSaveDriver()` call when the video device extension is first
  initialized in `IntVideoPortCreateAdapterDeviceObject()`.

- The `IsVgaDriver` field can then be used wherever we previously
  invoked `IntIsVgaSaveDriver()` (see e.g. in resource.c)

NOTE: It may be possible to move the `IsVgaDriver` field to the driver
extension structure instead, if it's not possible for miniport drivers
to influence this during calls `VideoPortInitialize()` with a custom-made
registry path (2nd parameter) containing a "\\VgaSave" substring...
(To be investigated.)

Addendum to commits 08a6834075 and 0511e9d869.
2026-03-08 17:24:20 +01:00
Hermès Bélusca-Maïto 1de8b4f0ce [DDK][VIDEOPRT] VideoPortDebugPrint(): Fix the debug filter being used; update SAL annotations (#8718)
- Use the `DPFLTR_VIDEO_ID` debug filter ID, which is the same as what
  Windows' videoprt.sys uses, so that tools and people who debug can
  easily interoperate between the two.
  Addendum to commits 11c95f7b5d (r19801) and 5b799176ba (r31477).

- Use SAL2 annotations.
2026-03-08 15:25:09 +01:00
Hermès Bélusca-Maïto e6f7e89ccd [VIDEOPRT] Fix a debug print newline (#8718) 2026-03-08 15:24:55 +01:00
Hermès Bélusca-Maïto f4786c1b91 [VIDEOPRT] Fix INT10h support initialization (#8717)
This problem was noticed by Zombiedeth.

Addendum to commit 89d5a3dbb8 (PR #8451).

There exist buggy 3rd-party miniport drivers, like those for the NVIDIA GeForce
8400 GS card (`nv4_mini.sys` from `181.22_geforce_winxp_32bit_english_whql.exe`)
that invoke the VideoPort Int10 routines (either `VideoPortInt10()`, or the
INT10 interface via `VideoPortQueryServices()`) from their `HwFindAdapter()`
callback (invoked via `VideoPortInitialize()`) or from their `DriverEntry()`.

However, at this point, the VideoPort Int10 services are not fully initialized:
on the x86 port, the VDM memory isn't mapped until later, when the `\Device\VideoX`
is opened by Win32k as part of its initialization in the context of the CSRSS process.

Additionally on the x86 ReactOS port since commit 89d5a3dbb8 (PR #8451), the
X86 emulator is used by default, unless either a registry setting is set to
disable the emulator, or the HAL (e.g. the NT5.x HAL) doesn't export the X86
emulator routines; in these cases the VDM is employed instead.
In the NT5.x builds VideoPort imports the HAL X86 emulator routines at runtime,
since it has to handle their possible absence. However, this importing was
previously delayed up until VideoPort initialized the Int10 services (when
`\Device\VideoX` is opened the first time by Win32k from CSRSS), meaning,
these services and the X86 emulator imports weren't initialized until then.
When booting ReactOS in these conditions with the NVIDIA driver installed,
its too-early `VideoPortInt10()` call was invoking the X86 emulator with no
imports set up, which resulted in the invocation of a NULL function pointer,
leading to a BSOD.

## Proposed changes

- Make the existing `IntInitializeInt10()` function support two invocations:
  * When invoked the first time, it initializes the X86 emulator support, by
    importing the HAL emulator routines, if applicable.
  * When invoked the second+ time, it maps the VDM memory space (done when
    `Device\VideoX` is opened by Win32k/CSRSS initialization).

- Actually perform the first `IntInitializeInt10()` invocation in the
  `if (!FirstInitialization)` block of `VideoPortInitialize()`.

- Set a `VDMAddressSpaceInitialized` flag to TRUE only when the VDM memory
  space is mapped (during the second `IntInitializeInt10()` invocation).
  Check this flag in both `IntInt10CallBiosV86()` and `IntInt10CallBiosEmu()`
  (x86 build only).

- Adjust two returned status values in `IntInitializeVideoAddressSpace()`.
2026-03-08 15:13:54 +01:00
Katayama Hirofumi MZ 06ae7ec211 [FREETYPE][NTGDI][GDI32][GDI32_APITEST] Rewrite GetCharWidth etc. (#8690)
Refactoring and improve readability.
JIRA issue: CORE-20505
- Add GreGetCharWidthW helper
  function.
- Rewrite NtGdiGetCharWidthW
  using GreGetCharWidthW.
- Refactor NtGdiGetGlyphIndicesW.
- Improve sanity check of
  GetCharWidthA/W/I,
  GetCharWidth32A/W, and
  GetCharWidthFloatA/W.
- Add GetCharWidth testcase to
  gdi32_apitest.
2026-03-01 20:12:45 +09:00
Katayama Hirofumi MZ 80bd460836 [SDK][KBSWITCH][CONIME][IMM32][NTUSER][MSCTFIME][MSUTB] Define LANGID_... (#8691)
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.
2026-02-27 10:02:23 +09:00
Katayama Hirofumi MZ 0c4091cd04 [FREETYPE][NTGDI] Update FreeType from 2.10.0 to 2.10.4 (#8671)
Modernize modules.
JIRA issue: CORE-17390
- Update FreeType to 2.10.4.
- Delete ChangeLog.
- Delete sdk/lib/3rdparty/freetype/src/gxvalid
  (useless for us).
- Delete sdk/lib/3rdparty/freetype/src/otvalid
  (useless for us).
- Keep ReactOS hacks on FreeType.
- Adapt ntgdi/freetype.c to new FreeType.
2026-02-26 09:32:57 +09:00
Katayama Hirofumi MZ f7ef944dca [NTGDI][FREETYPE] Refactor NtGdiGetGlyphIndicesW (#8682)
Make code faster and improve readability.
JIRA issue: N/A
- Avoid buffer allocation by using
  stack variables if possible.
- Add IntGetFontDefaultChar helper
  function and use it.
2026-02-26 08:56:02 +09:00