reactos/win32ss
Julio Carchi 9c4397afdf
[USER32] GetQueueStatus() should not return 0 when passing QS_ALLINPUT flag that includes QS_RAWINPUT (#4115)
GTK applications call GetQueueStatus(QS_ALLINPUT), where QS_ALLINPUT
specifies the QS_RAWINPUT flag as well, when these are compiled for
Windows XP+, and they expect the call to succeed on this platform.

On one side, ReactOS does not currently support this flag at all, but
since it claims to be XP/2003-compatible, applications may implicitly
expect the flag to be supported by GetQueueStatus() and the function
*NOT* failing when this flag is set.
(Later GTK apps don't care and just call GetQueueStatus(QS_ALLINPUT)
that includes QS_RAWINPUT, and therefore would fail as well on e.g.
Windows 2000...)

Otherwise, an observable effect is that some versions of libgdk-win32-2.0.0.dll
enter into an infinite loop when calling GetQueueStatus(QS_ALLINPUT),
since this call always failed on ReactOS.

On the other side, however, we should honour our winetests that handle
the presence of the QS_RAWINPUT flag and behave differently accordingly.
But since we do not support QS_RAWINPUT yet, we should keep their old
behaviour where QS_RAWINPUT is unused.

Thus, in order to accomodate both sides, we don't fail the GetQueueStatus()
call, but just set the ERROR_INVALID_FLAGS last error and continue it.


This fixes CORE-15686, CORE-17551 and probably CORE-11850.
Fixes also all user32:TrackMouseEvent tests.

Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
2021-11-20 00:45:35 +01:00
..
drivers [LIVECD] Add more registry entries for vbemp/vgamp 2021-10-25 21:44:45 +02:00
gdi [WIN32K] Fix a weird control character in dibobj.c CreateDIBPalette() CORE-17848 2021-11-15 03:05:20 +01:00
include [IMM32] Rewrite ImmInstallIMEW (#4044) 2021-10-21 10:28:04 +09:00
printing [WINSPOOL] QS_SENDMESSAGE|QS_ALLEVENTS == QS_ALLINPUT, so use the latter instead. 2021-11-19 21:13:26 +01:00
reactx [WIN32SS][NTDDRAW] Get complexity of visible region in DxEngGetDCState (#2604) 2020-05-01 15:57:11 +02:00
user [USER32] GetQueueStatus() should not return 0 when passing QS_ALLINPUT flag that includes QS_RAWINPUT (#4115) 2021-11-20 00:45:35 +01:00
CMakeLists.txt [WIN32K] Fix getting long value from float object 2021-03-31 18:35:31 +02:00
napi.h Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
pch.h [Win32SS] Fix build 2020-04-19 18:49:46 -05:00
sys-stubs.S Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
w32ksvc.db Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
w32ksvc.h [WIN32K] Implement NtUserSetWindowLongPtr for 64 bit builds 2018-02-19 22:36:36 +01:00
win32k.h Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
win32k.rc Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
win32k.spec [WIN32K] Add x64/arm exports 2021-06-12 14:11:14 +02:00
win32kp.h [WIN32K:NTUSER] Assert global user lock is held exclusively when using global & desktop heaps 2021-08-03 23:13:19 +02:00