Commit graph

1384 commits

Author SHA1 Message Date
Serge Gautherie
6756c2ad03 [*_VISTA] Add/Improve version resources 2024-08-13 12:39:42 +02:00
Whindmar Saksit
f3d03760e9
[NTUSER] Rewrite Window Snap handling (#5705)
Fixes many Window Snap related bugs and uses the WS_EX2_VERTICALLYMAXIMIZED* styles to remember which edge it is snapped to.

The most significant change is that GetWindowPlacement lies about the normal position when it is snapped, just like Windows.

CORE-19160 CORE-19165 CORE-19166
2024-08-11 20:21:58 +02:00
Doug Lyons
9ee30c57fd
[NTUSER] Fix popup menu placement when part way off right edge of screen (#7220)
* Move the popup menu to the right edge of the screen when it is past the screen edge on the right.

CORE-19706
2024-08-10 16:00:44 -05:00
Doug Lyons
90de2b660b
[NTUSER] Implement BroadcastSystemMessage with 'Environment' parameter (#6884)
* [NTUSER] Implement BroadcastSystemMessage with 'Environment' parameter

CORE-19372
CORE-19583

* Changes based on reviewer comments.

* Make sure that lParamMsg has a UNICODE_NULL in it.

* Skip extra handling of 1 word messsages.
2024-08-04 02:53:04 -05:00
Katayama Hirofumi MZ
7e8de0466d
[NTUSER] Use co_UserActivateKeyboardLayout in loading (#7200)
Refactoring on keyboard layout.
JIRA issue: CORE-19268
- Delete co_UserActivateKbl function.
Use co_UserActivateKeyboardLayout
  function instead of
  co_UserActivateKbl in
  co_IntLoadKeyboardLayoutEx
  function.
- Improve
  co_UserActivateKeyboardLayout.
2024-08-02 04:35:05 +09:00
Katayama Hirofumi MZ
063e5e2514
[USER32] Simplify CliSaveImeHotKey (#7199)
Code diet. RegCreateKeyExW will
create sub-keys recursively, so
this code is okay.
JIRA issue: CORE-19268
Simplify registry key creation code.
2024-07-31 03:50:29 +09:00
Katayama Hirofumi MZ
dcf0788f59
[IMM32][SDK][USER32] Fix ImmFreeLayout parameter (#7195)
JIRA issue: CORE-19268
- Define ImmFreeLayout parameter special
  values (HKL_SWITCH_TO_NON_IME and
  HKL_RELEASE_IME) at <imm32_undoc.h>.
- Make ImmFreeLayout parameter an HKL.
2024-07-30 11:45:23 +09:00
Katayama Hirofumi MZ
7dd081e945
[SDK][NTUSER] s/KLF_UNLOAD/KL_UNLOAD/ (#7196)
JIRA issue: CORE-19268
- Rename KLF_UNLOAD as KL_UNLOAD.
- Move it from win32ss/user/ntuser/input.h
  to sdk/include/reactos/undocuser.h.
- Add UKL_NOACTIVATENEXT constant
  and use it.
2024-07-29 19:30:49 +09:00
Katayama Hirofumi MZ
ec24b54731
[IMM32][NTUSER] Use HandleToUlong, UlongToHandle etc. macros (#7180)
Respect coding standard.
JIRA issue: N/A
- Use HandleToUlong, UlongToHandle,
  UlongToPtr etc. macros for type
  casting.
- Remove redundant casts.
2024-07-29 07:15:44 +09:00
Tomáš Veselý
466a19817f
[COMCTL32][USER32] STATIC: Fix grayed drawing (#7024)
CORE-15298

Use DrawTextW() to correctly render disabled grayed text.
Applies to both dll\win32\comctl32\static.c and win32ss\user\user32\controls\static.c

A similar solution is already used by button.c!BUTTON_DrawLabel().
2024-07-18 22:03:36 +02:00
Serge Gautherie
c6298321a3
[NTUSER] Fix IntDefWindowProc()'s WM_MOUSEACTIVATE case (#7038)
CORE-17545

Clang 13.0.1 was warning about broken 'Ret' handling.
Also remove an unrelated redundant 'else ...'.

Addendum to commit 6dfa71c487 (r68904).
2024-07-18 20:35:04 +02:00
Serge Gautherie
5385f32794
[NTUSER] defwnd.c: Trivial formatting fixes (#7038)
And (re)move 2 'break;'.
2024-07-18 20:33:11 +02:00
Doug Lyons
fb87f0f88c
[NTUSER] Fix popup menu position when menu item is half off the left side of the screen (#7108)
[CORE-16729](https://jira.reactos.org/browse/CORE-16729)
2024-07-16 14:36:45 -05:00
Andrei Miloiu
fc7bc3bbbd
[LOCALMON] Update Romanian (ro-RO) translation (#6877) 2024-07-16 21:20:16 +02:00
George Bișoc
4093d0e164
[NTUSER] Estabilish power callouts and invoke the cleanup procedure when unloading Win32k 2024-07-13 11:30:19 +02:00
George Bișoc
181b666fc4
[NTUSER] Stubplement the Win32 power manager
In order for the NT power manager to interact with the Win32 subsystem (thus the whole rest of the system), the Win32 kernel-mode subsystem provides a mechanism that communicates with the kernel power manager via power callouts (aka power requests as per Windows' PDB symbols).
Such mechanism enters in action as soon as Win32 callout routines are estabilished with the PsEstablishWin32Callouts() function.

The NT power manager, the power policy manager respectively, invokes a power callout to denote an exceptional phenomena as a result of power policies or capabilities changes, turning ON/OFF the display, a system time change has occurred, etc.
Such scenarios are described as power events of which the NT power manager sends a WIN32_POWEREVENT_PARAMETERS packet to Win32k via the estabilished "PowerEventCallout" pointer function callout.
For other callouts that inform the Win32 subsystem of impeding power state changes across the system or devices, these are sent as WIN32_POWERSTATE_PARAMETERS packets with its own separate callout.

The purpose of such mechanism is to give Win32k the opportunity to do power related tasks and alert every application of such power events in accordance with what it gets notified by the NT power manager.
Currently this patch stubplements this mechanism in ROS, it is only just the barebones for now. The development of the Win32 power manager will go in parallel with the kernel power manager development (expand, improve, fix the code of issues that whatever may arise).
So far only the PsW32SystemTime power event is implemented for the moment being. This work was decoupled from PR #5719 to avoid clobbering it too much.

=== TODO ===

- Implement power states management communication with the kernel power manager
- Implement the rest of the power events in IntHandlePowerEventWorker
- Implement power event handling in CSRSS (or WinSrv?) which handles any of the events that could not be handled by Win32k otherwise
- Estabilish the power state callout in PsEstablishWin32Callouts() (currently there is no a pointer function that gets assigned to such callout)

CORE-18969
2024-07-13 11:30:19 +02:00
George Bișoc
560428e250
[WIN32K] Add debug switch for the Win32 power manager 2024-07-13 11:30:07 +02:00
Oleg Dubinskiy
04f04efc96
[NTGDI] FontLink: avoid invalid font name buffer freeing (#7131)
Don't free the linked font name if it's already NULL. Since it is allocated only once (when loading the font name from Registry), it should be freed only once too. All subsequent freeing attempts will result in invalid pool freeing.
This fixes the 0xC2 BAD_POOL_CALLER bugcheck when trying to resize window (and draw more text) from soundcloud.com in K-Meleon 76.5.4 Goanna engine and when switching between channels (during redrawing the text) in DiscordMessenger v1.06 Beta.
Addendum to 0f9e889736.
CORE-19681
2024-07-11 14:27:26 +02:00
Hermès Bélusca-Maïto
c02289a08a
[UXTHEME][NTUSER] Check class style for CS_NOCLOSE instead of window style (#7130)
CORE-11569, CORE-19684

Addendum to commit 71bed0f5f8 (PR #7123).

The problem in uxtheme was introduced in commit 685084b63c (as part
of a fix for CORE-17203), because it was a copy-paste and adaptation
of the corresponding code in `ntuser/nonclient.c!NC_DoButton()`.

The bugs in `win32ss/user/ntuser/defwnd.c` (and `nonclient.c` as fixed by
the previous commit) were in turn introduced from the migration of menu
and related code from user32 to win32k, see commit 6dfa71c487 (r68904).
2024-07-10 19:49:09 +02:00
Doug Lyons
71bed0f5f8
[NTUSER] Check class style for CS_NOCLOSE instead of window style (#7123)
Change 'pWnd->style' to 'pWnd->pcls->style' to check for CS_NOCLOSE.
Incorrect struct field was used for checking previously.

Fixes a bug with Ad Muncher that did not close when clicking on the window
title "X" button while being used with a Classic window style theme.
Patch by I_Kill_Bugs. CORE-11569
2024-07-10 13:30:53 +03:00
Katayama Hirofumi MZ
ef3e27e2c9
[NTUSER] Improve NtUserSetWindowPlacement (#7096)
Splitted from #7082. Correct behavior of
NtUserSetWindowPlacement function.
JIRA issue: N/A
- Check gptiCurrent->dwExpWinVer in
  NtUserSetWindowPlacement function.
- Fix the last error.
2024-07-09 07:42:56 +09:00
Katayama Hirofumi MZ
6c74e69d12
[NTUSER][USER32] Populate dwExpWinVer (#7095)
This value is needed for
SetWindowPlacement and IMM.
JIRA issue: CORE-19675
JIRA issue: CORE-19268
- Add RtlGetExpWinVer function
  into win32ss/user/rtl/image.c.
- Add RtlGetExpWinVer prototype
  into win32ss/include/ntuser.h.
- Delete RtlGetExpWinVer
  definition in
  win32ss/user/user32/windows/window.c.
- Populate THREADINFO.dwExpWinVer
  and CLIENTINFO.dwExpWinVer
  by using RtlGetExpWinVer in
  InitThreadCallback function.
2024-07-09 04:22:14 +09:00
Tomáš Veselý
a9bdd62d84
[GDI32] SetBkMode: Avoid invalid input. CORE-19656 (#7089)
Fixes a bug in Midori 0.5.11 installer which caused bad rendering
that was making the text hard to read (no background).
In Windows it's visible as FillRect(0x89011a1f, 0x0019f87c, 0xabababab),
and in ReactOS as SetBkMode(0xb5010fce, -1546139919).

After a number of attempts to get the same behavior, I haven't found a way
to fix it without a hack to make the installer look identical to Windows.

At least I added handling for the incorrect value in SetBkMode.
This shouldn't matter anywhere. It may not look the same as on Windows,
but the text will at least be readable.
2024-07-08 21:34:36 +03:00
Katayama Hirofumi MZ
efe42074cc
[USER32][USER32_APITEST] CopyImage: Check flags (#7075)
JIRA issue: N/A
- Check CopyImage flags.
- If there is any invalid flag, then set ERROR_INVALID_PARAMETER
  and return NULL.
- Add CopyImage testcase.
2024-07-08 19:24:15 +09:00
Katayama Hirofumi MZ
0cfd7bde9b
[USER32] TileWindows: Adjust timeout of QuerySizeFix (#7081)
Since my machine performance
became lower, we have to adjust
timeout to get correct pattern of
user32!TileWindows function.
JIRA issue: CORE-19674
Adjust timeout value in QuerySizeFix
function.
2024-07-07 06:48:36 +09:00
Jose Carlos Jesus
c3a45b679d
Fix return value from GetObject gdi32_apitest (#7046) 2024-07-06 22:55:06 +02:00
Katayama Hirofumi MZ
61cdd02d1c
[NTGDI] Fix MaskBlt error code and check pattern usage (#7083)
Follow-up to #7074. Fix MaskBlt behaviour.
JIRA issue: CORE-13133
- Fix MaskBlt error code.
- Fix MaskBlt pattern usage check.
2024-07-06 13:28:26 +09:00
Katayama Hirofumi MZ
80c170d7bc
[IMM32][NTUSER] Reduce a little IMM spams (#7077)
Reduce log spams that @julenuri reported.
JIRA issue: CORE-19268
- Use Imm32IsCrossThreadAccess
  instead of IS_CROSS_THREAD_HIMC in
  ImmSetCompositionWindow function.
- Reduce ERR logging in
  NtUserQueryInputContext function.
2024-07-05 05:07:49 +09:00
Oleg Dubinskiy
1a1025011f
[REACTOS] Fix LoadCursorW() incorrect usage cases (#7053)
Fix wrong MAKEINTRESOURCEW() macro usage cases in LoadCursorW() system-wide.
MSDN documentation for this function states we need to use MAKEINTRESOURCEW() macro only for internal application-defined cursors (loaded from the app instance specified by hInstance parameter), but not for system-defined cursors (those begin with IDC_* prefix), in case when hInstance is NULL.
So get rid from MAKEINTRESOURCEW() macro usage for all cases when hInstance parameter is NULL. And on the contrary, when hInstance is valid and points to the application instance, then use it for the resource identifier.
2024-07-01 18:05:46 +02:00
Katayama Hirofumi MZ
a207a3c931
[NTGDI][FREETYPE] Fix FontLink freeze (#7063)
#7009 introduced unexpected freezing on gdi* bot tests.
JIRA issue: CORE-19667
Fix the locking-related assertions by adding/removing
lock/unlock.
2024-07-01 22:34:59 +09:00
Katayama Hirofumi MZ
0f9e889736
[NTGDI][FREETYPE][SETUP][INF] Support FontLink (#7009)
If East Asian people were unable
to see the Latin characters, it
becomes a barrier to mutual
understanding.
FontLink will break that barrier.
JIRA issue: CORE-9616
JIRA issue: CORE-15480
- Modify font substitutes.
- Unify the lock variables.
- Add FONTLINK and
  FONTLINK_CHAIN structures.
- Add FontLink_Create and
  FontLink_Destroy functions.
- Add FontLink_Chain_Init,
  FontLink_Chain_Free,
  FontLink_Chain_LoadReg,
  FontLink_Chain_Populate, and
  FontLink_Chain_FindGlyph
  functions.
- Implement FontLink.
- Add font file DroidSansFallback.ttf
  for LiveCD.
2024-06-30 22:15:34 +09:00
Doug Lyons
cd88a97115
[NTUSER] Fix popup menu positioning for Miranda IM (#6981)
CORE-17838
2024-06-19 18:55:12 -05:00
Doug Lyons
6190a97df4
[NTGDI][FREETYPE] Multiple indirect Font Substitutes fix for Factusol (#7020)
Fixes double use of Font Substitutes "Helv" -> "MS Sans Serif" -> "Tahoma".
2024-06-15 17:08:59 -05:00
Gabriele Lo Re
ae27ffcddc
[TRANSLATION] Improve Italian (it-IT) translation (#6820)
I have edited some traslation files for the italian language, as the text
looked robotic in the way senteces were written, or in some cases it used
not-really-fitting synonymous or incorrect spelling. The edited strings
are from varius areas of ReactOS. I hope this contribution makes italian
language less strange to native speakers.

- [ACCESS] Improve Italian (it-IT) translation
- [DESK] Improve Italian (it-IT) translation
- [JOY] Improve Italian (it-IT) translation
- [MAIN] Improve Italian (it-IT) translation
- [SYSDM] Improve Italian (it-IT) translation
- [TIMEDATE] Improve Italian (it-IT) translation
- [ACPPAGE] Improve Italian (it-IT) translation
- [DESKADP] Improve Italian (it-IT) translation
- [DEVCPUX] Add Italian (it-IT) translation
- [FONTEXT] Improve Italian (it-IT) translation
- [ZIPFLDR] Improve Italian (it-IT) translation
- [BROWSEUI] Improve Italian (it-IT) translation
- [USER32] Improve Italian (it-IT) translation
- [CONSRV] Improve Italian (it-IT) translation
- [USERSRV] Improve Italian (it-IT) translation

Reviewed-by: Joachim Henze <joachim.henze@reactos.org>
Reviewed-by: Simone Mario Lombardo <me@simonelombardo.com>
2024-06-10 13:45:00 +03:00
Carl J. Bialorucki
ad73e17418
[USER32] Introduce user32_vista and stubplement GetDpiForWindow() (#6208)
Add user32_vista.dll to introduce new NT6+ User32 features without changing the existing User32.dll when compiled as NT5.x. Also implements a stub for GetDpiForWindow(). The GetDpiForWindow() function will be required to Wine-sync common controls to modern Wine versions.

Changes:
Expose GetDpiForWindow() function and USER_DEFAULT_SCREEN_DPI to appropriate versions in winuser.h
Introduce a basic user32_vista library that can be expanded as needed.
2024-06-04 10:19:32 -06:00
Katayama Hirofumi MZ
890b9c0b93
[NTGDI][FREETYPE] Simplify get_glyph_index_flagged (#6977)
Simplify code.
JIRA issue: CORE-9616
- Reduce one parameter of get_glyph_index_flagged function.
2024-06-03 09:28:52 +09:00
Katayama Hirofumi MZ
a541a468ba
[NTGDI][FREETYPE] Unload font engine on system shut-down (#6955)
Check system integrity by explicitly
releasing the font engine.
JIRA issue: CORE-9616
- Use RTL_STATIC_LIST_HEAD against
  g_FontListHead and
  g_FontCacheListHead variables and
  omit initialization of them.
- Implement FreeFontSupport function.
- Call FreeFontSupport in win32k!
  DriverUnload function.
- Fix some usages of
  CONTAINING_RECORD macro.
2024-05-29 09:41:39 +09:00
Katayama Hirofumi MZ
817f89466d
[BOOTDATA][IMM32][NTUSER] Follow-up to #6961 (#6962)
JIRA issue: CORE-19320
- Delete "(brain-dead)".
- Fix "despite of" as "despite".
- Use "%S" instead of debugstr_w.
2024-05-29 01:14:52 +09:00
Katayama Hirofumi MZ
c8a3c919e5 [BOOTDATA][IMM32][NTUSER] Set "LoadIMM" to zero
We set "LoadIMM" to zero in order to disable Cicero.
The name of "LoadIMM" is a brain-dead name. This name
means Cicero despite of its name (brain-dead).
They use a human-confusing name intentionally.

JIRA issue: CORE-19320

- Set HKLM\SOFTWARE\Microsoft\Windows NT\
  CurrentVersion\IMM:LoadIMM to 0.
- Add warning comments to the brain-dead name "LoadIMM".
2024-05-28 23:17:22 +09:00
Katayama Hirofumi MZ
4225717dc9 [IMM32][NTUSER] Fix NtUserGetThreadState call of Imm32InquireIme
There was a mistake of parameter value for NtUserGetThreadState
call in Imm32InquireIme function. This affected the logon process.

JIRA issue: CORE-19320

- Replace THREADSTATE_ISWINLOGON2 with THREADSTATE_ISWINLOGON in
  NtUserGetThreadState call in Imm32InquireIme function.
- Rename THREADSTATE_ISWINLOGON2 as THREADSTATE_UNKNOWN_0x10.
- Adapt NtUserGetThreadState to this change.
2024-05-28 23:17:22 +09:00
Doug Lyons
6338913f26
[NTUSER] menu.c position fix to not obscure 'Close' (#6923)
CORE-19579

When IS_SYSTEM_MENU was redefined in https://github.com/reactos/reactos/commit/3ae0ccdcc,
this broke the logic here. So now we restore the correctly working logic.
2024-05-24 19:15:07 -05:00
Oleg Dubinskiy
96acfcb3dc
[NTGDI] AlphaBlend/TransparentBlt: check whether the source DC is an INFO DC too (#6885)
Improve checks in AlphaBlend and TransparentBlt functions: check whether DCSrc is of DCTYPE_INFO also, to fail in that case properly too.
Spotted by PVS-Studio analysis.
Reference: https://pvs-studio.com/en/blog/posts/cpp/1122/.
2024-05-14 19:08:37 +02:00
Andrei Miloiu
3b99e294f5
[USER32] Update Romanian (ro-RO) translation (#6704) 2024-05-10 21:34:05 +02:00
Doug Lyons
cf9f7548d5
[NTUSER] Fix double click on title bar icon not closing window (#6697)
Patch by @I_Kill_Bugs

* [NTUSER] Fix double click on title bar icon not closing window

Improve MENU_TrackMenu handling.

Guilty commit:0.4.15-dev-7750-gc17a654 c17a6542ac

CORE-19492
2024-05-07 09:52:57 -05:00
Doug Lyons
0c0062ac9a
[NTUSER] Fix Skype and other programs installer windows not able to be moved with mouse by clicking on title bar (#6819)
Patch by @I_Kill_Bugs

Add condition into msgqueue along with filter testing to reject messages that are "NotForUs".
Also, do not set AcceptMessage to FALSE, but just keep msgDblClk and idSysPeek values and continue.

CORE-19487
CORE-19538
2024-05-07 09:10:11 -05:00
Katayama Hirofumi MZ
5a287473fd
[NTGDI][FREETYPE] Initial support of Surrogate Pairs and emojis (#6851)
Support emoji characters and minor characters.
JIRA issue: CORE-19030
NOTE: Not every emoji is supported yet (No ZWJ support). Surrogate pairs only.
NOTE: This feature only works if the appropriate font is selected.
- Add IS_HIGH_SURROGATE and
  IS_LOW_SURROGATE macros.
- Add Utf32FromSurrogatePair helper function
  to convert a surrogate pair to a UTF-32 code
  point.
- Convert the surrogate pairs in the text in
  TextIntGetTextExtentPoint, IntGetTextDisposition,
  and IntExtTextOutW functions.
2024-05-07 15:24:34 +09:00
Katayama Hirofumi MZ
d076146f4e
[NTGDI][FREETYPE] Check 'No transformation' for performance (#6850)
Slight performance improvement.
JIRA issue: CORE-15554
- Add bNoTransform variable.
- Check whether mat is identity matrix.
- If so, then don't do FT_Vector_Transform.
2024-05-07 11:14:16 +09:00
Timo Kreuzer
e8e770fd14 [WIN32K:NTUSER] Fix NULL pointer dereference in MENU_HideSubPopups
Fixes CORE-19367.
2024-05-06 15:47:30 +02:00
Katayama Hirofumi MZ
521eb0c7c0
[NTGDI][FREETYPE] Increase STACK_TEXT_BUFFER_SIZE (#6847)
Slight performance improvement. STACK_TEXT_BUFFER_SIZE = 100 was too small
for long text. This PR can reduce unnecessary buffer allocations in NtGdiExtTextOutW
function.
JIRA issue: CORE-15554
- Change STACK_TEXT_BUFFER_SIZE to 512.
2024-05-06 20:39:26 +09:00
Katayama Hirofumi MZ
0056313e15
[NTGDI][FREETYPE] Simplify code around bold/italic glyph caches (#6846)
Simplify and reduce font code.
JIRA issue: CORE-15554
- Don't treat bold/italic glyphs specially in font cache.
- Delete useless IntGetBitmapGlyphNoCache function.
2024-05-06 19:17:09 +09:00