Prevent the window from being destroyed twice
fixes CORE-18821 'WIN32K BSOD 0x1E when opening Build menu in AVR Studio 4.19'
port of 0.4.15-dev-5938-g 77d4653164
And port back also some unrelated formatting improvements,
and kill a block of code that was commented out in all branches,
and was not x64 compatible in 0.4.7/0.4.8, and therefore was a diff already anyway.
Win+Left, Win+Right, Win+Up, and Win+Down can be disabled by registry value WindowArrangementActive REG_SZ 0 in
HKEY_CURRENT_USER\Control Panel\Desktop
Snapping mouse can be also disabled.
by porting back:
0.4.15-dev-5703-g d04e148d1c Optimize window snap disabling (#5061)
0.4.15-dev-5641-g ea55101aad Allow Window Snap to be disabled (#5014) CORE-16379 (#5014)
Also port back some minor unrelated improvements:
0.4.15-dev-3341-g 4bc95812fd defwnd.c Mark default as unreachable.
0.4.15-dev-316-g 938df97b54 nonclient.c NC_IconForWindow(): Remove redundant if() (#2842)
and:
-defwnd.c: delete a malformed TRACE() which had a format string, but no argument.
The symptom was unhidden by (regression from users perspective):
0.4.12-dev-389-g 5f2bebf7a5
by porting back:
0.4.15-dev-5608-g afb953ae4d [BUTTERFLIES] Do not release the DC passed to OpenGL. CORE-18498
0.4.15-dev-5607-g 8b19b6ec5a [GDI32] Fix memory leak in case of public DC. CORE-18498
For now I will not port it back further than releases/0.4.12
although the code in both modules might be suboptimal even in earlier release-branches.
But we see no symptoms in those yet.
Prevents a BSOD 0x1E upon dereference.
CORE-18091 CORE-18558
By partially porting back:
0.4.15-dev-5587-ga999c43 a999c43746
and take also some cosmetic changes from master head, like EOL-whitespace-removal.
by porting back 2 fixes:
0.4.15-dev-5355-g 0484beb04b [NTUSER] Don't redraw scrollbar if it is hidden (#4849) CORE-18593
0.4.15-dev-3875-g 977c129f33 [USER32] SetScrollPos should not bypass UserApiHook (#4372) CORE-18048
Both regressions were caused/unhidden by 0.4.14-dev-1134-g 00adb1a3f9
Based on patch by I_Kill_Bugs.
Fixes the regression which was introduced to master by 0.4.15-dev-1126-g 58b0558f94
fix picked from 0.4.15-dev-5532-g ca9ded7af8
WS_EX_NOACTIVATE flag forbids the window to be activated
fix picked from 0.4.15-dev-5137-g 826bd41d88 (1 of 3 commits for CORE-18417)
My reason for picking it is that it fixes CORE-13257 'Reboot leaving Evernote 5.9.8 in tray causes WIN32K BSOD 0x50'
I also had to pick together with it the
0.4.15-dev-5491-g 1fbed1710e to prevent it from introducing (+2 failures in user32:msg_focus) unittests.
----------------
The above patch allows/encourages us to pick then also:
0.4.15-dev-5492-g 47f3a4e144 [OSK] Delete WS_EX_NOACTIVATE workaround code
(which referenced CORE-18528, but is not fixing this minor GUI glitch yet, it just removes workaround-code that is no longer needed,
I just mention the ticket here, because the commit on master did that as well)
----------------
----------------
The following 2 things were small *unrelated* improvements nearby, and I decided to take them with me:
0.4.15-dev-4323-g 9f5cde9cbe [WIN32K:NTUSER] window.c Remove broken assert in NtUserCreateWindowEx. CORE-18123 fixed
and
a tiny part of 0.4.15-dev-3476-g 55a1c29341 [WIN32K] appswitch.c: delete unused func DWORD wtodw(const WCHAR *psz)
Fixes:
CORE-12342 '7zip is not drawing some of its controls until forcing a repaint'
CORE-8734 '[WIN32SS] dxdiag exposes a tabsheet redraw problem'
...
and many other duplicates in JIRA.
If a Rebar window is altered by calling either ShowWindow() or UpdateWindow()
then we were only updating the parent and omitting their children windows.
This is closer to the behavior of the very very old SVN r27394 == git f1a7f30887 .
And therefore intentionally excludes parts of SVN r27403 == git e2651a0dbc .
The bots have no complaints about it:
KVM https://reactos.org/testman/compare.php?ids=81266,81290
VBox https://reactos.org/testman/compare.php?ids=81267,81291
fix picked from 0.4.15-dev-3885-g ea7c14919e
The main part in [USER32] was already committed into 0.4.14-RC-123-g 75e9ac7727
but we do have two follow-ups that are worth picking as well:
---------------------
[NTUSER] Do not remove message from the Msg Queue if it is not for us. (#4129)
CORE-8217 This part of the fix keeps the buttons working (Cancel/Ok/top-Right-X) even under high CPU-load
Patch from 'I_Kill_Bugs' contributor.
Fix picked from 0.4.15-dev-3499-g 7d1b50394b
---------------------
[3DTEXT] Fix 3dtext.scr using near 100% CPU (#4125) CORE-17866, CORE-8217
Fix picked from 0.4.15-dev-3443-g 5c9fdcb1de
It popped up very reliably when performing git-clone of the ros sources
while having the taskmgr open in the processes-tab.
Or when building 'ninja bootcd -j1' while having the taskmgr open in the processes-tab.
It is always possible to ignore it and then continue using ros for days without
noticing any side effects.
James Tabor judged the assert to have a "questionable logic".
Giannis who once added it, was also ok with commenting it.
His words:
This assertion isn't something fatal,
the worst thing that can happen from continuing on it would be
to make the thread get awake more times than it should.
The assert was once added by SVN r63880 == git 9ad857369a
It was commented out already via 0.4.14-dev-1519-g 87f6c82d85 (2020-04-21)
Final Removal picked from 0.4.15-dev-3780-g bf16435303 (2022-02-05)
InternalPos.NormalRect is a key data for detecting whether a window was snapped.
Keeping it after restore affecting next snap actions.
Fix picked from 0.4.15-dev-3422-g db810d8e44
CORE-17856 BSOD 0x50 when starting Castle of the Winds second time, with WineVDM
CORE-17857 BSOD 0x50 on shutdown after closing Castle of the Winds with WineVDM
The fix is a squashed back port of:
0.4.15-dev-3430-g 9cff384c22
0.4.15-dev-3440-g a89844f740
CORE-17861 Symptom: 'MS Visual Studio 2010 Pro Fatal System Error 0x00000050'
It regressed by 0.4.15-dev-2850-g 847b037fe9
which was ported back into 0.4.14-RC-84-g 4295544598
The fix was ported back from 0.4.15-dev-3420-g b538b9abb8
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:
'All user32:TrackMouseEvent tests'
CORE-15686: Gimp 2.8.22 from rapps hangs after startup with 90%-100% CPU usage
and many dupes of that ticket like:
CORE-17551: Ardour hangs at the first start (GTK2 issue)
CORE-15151: newer "Inkscape 0.92.3" is unusable due to WIN32SS message queue lockup
CORE-14086: RawTherapee 5.0-r1-gtk2 fails to start (using 100% CPU)
CORE-11850: Geany 1.28 hangs with endless MsqSendMessage timed out
CORE-8475: Wireshark hangs after launch
It will also slightly appease, but not entirely fix:
CORE-8217: 3D Text ScreenSaver freezes system
Fix picked from 0.4.15-dev-3407-g 9c4397afdf
This prevents the tracking menu from erroneously closing itself right after it was opened in some cases.
Fixes CORE-17338 which got unhidden by 0.4.15-dev-1126-g 58b0558f94
And fixes CORE-15760 which got unhidden by SVN r74972 == git 19dd22d422
Since both symptoms look very similar but the unhiding revisions did differ,
that could mean we do have some kind of race condition here.
I guess this fix is more like a workaround.
Fix picked from 0.4.15-dev-3313-g 6417b2323d
This is an addendum to
0.4.15-dev-3174-g dda9c3979e CORE-17769 and
0.4.15-dev-3147-g 3bf7e3ac13 CORE-17754 CORE-17755
We have not seen this happening in real-life yet, but some code-fragments within co_IntSetScrollInfo()
e.g. line 628 if (nBar == SB_CTL) do clearly indicate that nBar can be 2 (SB_CTL).
Some lines below we definitely must not access those 4 static arrays out of bounds then via nBar as access index!
Ftr with a bit of grepping I also found some calls like NtUserSetScrollInfo(Wnd, SB_CTL, &Info, FALSE);
e.g: in win32ss/user/user32/controls/scrollbar.c so I am pretty sure nBar == 2 can happen in practice within co_IntSetScrollInfo().
I question whether any of those reads/writes to those static arrays (or the comparisons) would make any sense on index 2,
so we should aim to eliminate them altogether in the future.
fix picked from 0.4.15-dev-3175-g 222acf5a3e
squashed backport of:
0.4.15-dev-2375-g ffea5152e6 integer underflow and
0.4.15-dev-3174-g dda9c3979e CORE-17769
Fixes CORE-17769 'Rapps Listview manual resize may erroneously not draw the triangles sometimes'
This could happen for both: themed and unthemed.
CORE-17769 was a regression introduced by 0.4.14-dev-1134-g 00adb1a3f9
We don't really like the added state in form of the static variables,
but the patch works good from a pure testing-perspective.
Many Thanks to the patches author: Doug Lyons
Squashed backport of:
0.4.15-dev-3086-g 236649c626 (#3868) and
0.4.15-dev-3147-g 3bf7e3ac13 (#3953)
to fix some regressions for themed scrollbars that were introduced by
0.4.14-dev-1134-g 00adb1a3f9
fixes all or most parts of CORE-16735 without introducing CORE-17754 and CORE-17755
Fixes gdi32:dib / gdi32:bitmap tests and
CORE-16236 "SIMS graphics", which regressed by
SVN 51005 == git 2bbd8711a7
Thanks to the patches author Doug Lyons.
fix picked from 0.4.15-dev-2850-g 847b037fe9
This fixes some blurry icons in systray when 2k3sp2 kernel32.dll is used in ros CORE-12004
That part in user32 was a regression of SVN r71609 == git a44dfe6c76
While we are at it we do fix some other modules as well, that used those NT6+flags.
The fix was picked from 0.4.15-dev-788-g a04831677e
in CreateDIBPalette() when passing invalid arguments to CreateDIBSection.
This could be triggered by using the broken test-application "GDIProg".
After this patch not only the BSOD is fixed but also the app does
properly start up, like it is the case on 2k3sp2.
Thanks to the patches author Doug Lyons.
a squashed port of
0.4.15-dev-2776-g 4130f0b1c5 (compilation fix)
0.4.15-dev-2775-g c596fd3ef6 (improvement #3758)
0.4.15-dev-2734-g 514147776a (fixes the BSOD)
Revert incorrect code for Realize Palette
Revert part of SVN R50928 that causes Durak card suites to have wrong colors.
SVN r50928 == git 5de8339cd1
JIRA issue: CORE-13748 <= Durak Example
JIRA issue: CORE-16510 <= GDIProg Example
The patch also fixes 2 crashes on each bot, although
it was not targeted for that explicitly:
KVM: https://reactos.org/testman/compare.php?ids=77304,77308 LGTM
VBox: https://reactos.org/testman/compare.php?ids=77305,77309 LGTM
Thanks to the patches author Doug Lyons.
picked from 0.4.15-dev-2735-g c7954134d0
This is a sane addendum to 0.4.14-RC-67-g ef623b1616
by porting back the following master commits:
[WIN32SS][NTUSER] ShowWindow.SW_MINIMIZE should show window (#3700)
- user32!ShowWindow.SW_MINIMIZE should show the window.
- Fix the return value of ShowWindow function on invalid parameter.
CORE-15669
picked from 0.4.15-dev-2621-g 59d4c11203
[WIN32SS][NTUSER] Improve HSHELL_WINDOWCREATED condition (#3697)
Modify the condition of generating HSHELL_WINDOWCREATED, especially on WS_CHILD window style. CORE-15669
picked from 0.4.15-dev-2618-g 32b0cf6fc6
[USER32_APITEST] Add ShowWindow testcase (#3689)
Investigate the implementation of user32!ShowWindow. CORE-15669
picked from 0.4.15-dev-2616-g a8ed286c86
[SHELL32_APITEST] Strengthen and improve ShellHook testcase (#3687)
- Add tests to find the missing parameters against HSHELL_WINDOWCREATED conditions.
- Improve code readability. CORE-15669
picked from 0.4.15-dev-2611-g d21adc9b31
fixes CORE-17330 'Regression, many installers that should have only 1 taskbar pane, now have 2 of them erroneously'
which was introduced by 0.4.14-dev-369-g 141cf04239
and made ros behave a lot different than previous and future releases would perform.
The main fix was picked from 0.4.15-dev-1126-g 58b0558f94 (#3294)
and the new ShellHook testcase from 0.4.15-dev-1123-g 0089291751 (#3289)
The implementation atm passes all those 384 new ShellHookTests.
Beside that it entirely fixes the very old:
CORE-13584 'Winamp 5.666 erroneously has a secret tab shown in taskbar'
But brings back:
CORE-15669 'DVD Write Now 1.5.12 SP2 setup has no taskbar pane' (which was never working in any earlier release up to now)
but which we had fixed for a very short moment in master since the guilty 0.4.14-dev-369-g 141cf04239
That alone would be no biggy, but it also unhides?/introduces? for me the new:
CORE-17338 'Can not open a context menu in the taskbar pane of Double Commander setup, instantly closes'
Well in sum it is an improvement, but we are not in urgent need of porting it back any further than 0.4.14 yet,
because older releases would only benefit from CORE-13584 'Winamp...'
flip_fix_9.patch fixes:
CORE-16984 " 'SPINA Thrulg' / 'SPINA Thyr' / 'Sim Thyr' have images flipped"
CORE-17194 "StretchDIBits test" isn't work correctly"
"Output of 'Project 3 Test'"
CORE-14701 "DVDStyler 3.0.4 transparent toolbars"
CORE-14701 "DVDStyler 3.0.4 erroneously black around icons of welcome-dlg"
CORE-14671 "'Peazip' shows icons in buttons and menubar vertically flipped"
"Double Commander shoes icons flipped in buttons, menubar, listview and the treeview"
CORE-13273 "Welcome to Lazarus" icon shows flipped
CORE-13026 "'CudaText app' icon shows flipped"
Not all of those are duplicates, although they appear to be at first glance.
It affects different controls and some of those tickets do have different 'guilty revs' than others.
The patch does consist of 3 parts:
1.) win32ss/gdi/ntgdi/dibobj.c
This one is the most clean part of it, that addresses most of the flipping issues now.
2.) The hack in comctl32.h redefining the version:
We used that in the past to appease some, but not all of the issues listed above.
But it does hide additional issues, e.g. in DvDStyler, therefore we seem to still need that appeasement even today.
Most likely it would make sense to aim to avoid this part in the future.
part 2.) was committed as first appeasement on its own already into
0.4.14-RC-24-g 198b61e
0.4.13-RC-7-g 67211fa
0.4.12-RC-5-g 8449527
0.4.11-RC-16-g b906163
0.4.10-RC-7-g f1e80fe
0.4.9-RC-34-g 9d758ae
3.) toolbar.c change
That part fixes at least the toolbar case for DvDStyler
without relying on the comctl32.h hack any longer,
but it was still not enough to completely get rid of part 2.) yet.
Many thanks to all contributors: 'I_kill_Bugs', Doug Lyons and also 'Julenuri' for testing.
The patch gave nice testbot results:
KVM: https://reactos.org/testman/compare.php?ids=75704,75714
VBox: https://reactos.org/testman/compare.php?ids=75705,75715
and we also created a summary of manual test-results:
https://jira.reactos.org/browse/CORE-17415?focusedCommentId=126668&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-126668
If you read this comment via git blame and your goal is to get rid of the hack in comctl32.h, I would highly recommend
to redo the tests of that testing table, and if that is asked too much, then please test at least the following cases:
CORE-14701 "DVDStyler 3.0.4 transparent toolbars"
CORE-14701 "DVDStyler 3.0.4 erroneously black around icons of welcome-dlg"
"DVDStyler 3.0.4 erroneously black/transparent within comboboxes of properties of VMGM menu"
and try to add what might be needed to fix them, and double-check again:
"DoubleCommander optionsDlg the most complex testcase, contains flip-prone icons in treeview, listview, menubar, buttons, statics". Only some of its flipped icons were impacted by the comctl32.h change before.
fix picked from 0.4.15-dev-1603-g 232c45fcd7
This fixes the ReactOS Calculator buttons disappearing in CORE-16827
It once regressed by 0.4.13-dev-221-g
2161dd85dc
which did aim to fix CORE-15934.
Noteworthy that releases/0.4.12 was never affected although I fixed CORE-15934
there as well, but *not* with the fix that went into master later!
fix picked from commit 0.4.15-dev-1197-g
8081ba9332
fixes regression CORE-16747 according to JIRA user 'Oleg Dubinskiy'.
The regression did not reproduce for me when I tested the unpatched
state locally though.
According to Oleg Dubinskiy the regression started to happen in
0.4.14-dev-599-g
2d4d3f5fce
fix cherry picked from commit 0.4.15-dev-204-g
97ccef7761
my testcase: this allows opening an exe/dll with MsDepends (CORE-12052)
Unfortunately still necessary, luckily still effective
and also reliably hides a lot of other crashes due to uncaught exceptions
like done in all earlier releases since 0.4.3
cherry picked from commit bca25b10b4
In return of GetGlyphOutline function call, gm.gmBlackBoxX and gm.gmBlackBoxY must be non-zero to avoid Division by Zero. At epilogue of ftGdiGetGlyphOutline, we adjust the values. CORE-15949
It popped up 2-3 times for me during several
months of ros usage and I could continue without
noticing any side effects.
Giannis who once added it, was ok with commenting it.
His words:
This assertion isn't something fatal,
the worst thing that can happen from continuing on it would be
to make the thread get awake more times than it should.
- Move ConSrvInitHandlesTable() & rename it ConSrvInitProcessHandles()
since its purpose is to initialize the standard input, output and
error handles for a console process.
- Move ConSrvAllocateConsole(), ConSrvInheritConsole() and
ConSrvRemoveConsole().
All the per-API message structure unpacking and console validation done
with ConSrvGetConsole() is now automatically generated using the macros,
so that the actual implementation of each API can be done independently
of how the console object is obtained.
This could also allow reusing these API implementations with a different
mechanism for obtaining the console without changing anything in them.
Need a way to send WM_DEVICECHANGE from the Service manager application.
Next step is to process it in the Client/Server Run-time Subsystem.
See CORE-16492.
Any new features/architectural changes to the console will either be
done in separate branches, or incrementally in master within the
existing console module.