CORE-17601, CORE-17803
Replaces PR #4281.
Implement SrvGetConsoleLangId() (server-side) and set the new current
thread's locale after connecting to a console, or changing its output
code page.
Based on API tracing on Windows 2003, as well as on comments and code
gathered from: https://github.com/microsoft/terminal
Tests results are listed in PR #4301.
- Rename <ddk/imm.h> as <ddk/immdev.h>.
- Delete sdk/include/reactos/wine/imm.h (this header is confusing and nonsense).
- Changes related to it.
CORE-11700
colors.c(129): warning C6287: Redundant code: the left and right sub-expressions are identical.
colors.c(159): warning C6001: Using uninitialized memory 'colorIndex'.
colors.c(180): warning C6385: Reading invalid data from 'ConInfo->ColorTable': the readable size is '64' bytes, but '259696' bytes may be read.
(I thank ThFabba for the suggestion fix.)
console.c(313): warning C6387: 'ConInfo->hWnd' could be '0': this does not adhere to the specification for the function 'SendMessageW'.
font.c(60): warning C6387: 'Preview->hFont' could be '0': this does not adhere to the specification for the function 'GetFontCellSize'.
font.c(230): warning C6001: Using uninitialized memory 'szFontSize'.
font.c(230): warning C6054: String 'szFontSize' might not be zero-terminated.
font.c(671): warning C6387: 'hFont' could be '0': this does not adhere to the specification for the function 'GetFontCellSize'.
layout.c(502): warning C6387: 'FontPreview.hFont' could be '0': this does not adhere to the specification for the function 'SelectObject'.
Any valid code page value name in System\CurrentControlSet\Control\Nls\CodePage
is a string representation of its corresponding decimal value, that
cannot be larger than MAXUSHORT == 65535, i.e. longer than 5+1
characters.
Noticed with the analyser warning
dll\cpl\console\options.c(74): warning C6262: Function uses '32808' bytes
of stack: exceeds /analyze:stacksize '16384'. Consider moving some data to heap.
Make the enumeration loop actually stop when ERROR_NO_MORE_ITEMS is
returned. If we got another error, e.g. because the value name was
too long (and thus, an invalid code page), just ignore and continue
looping.
Strip the backslash to avoid GCC8.4.0 RosBE2.2.1 warning:
[104/108] Building RC object dll/win32.../CMakeFiles/cryptui.dir/cryptui.rc.obj
C:/ros/reactos/dll/win32/cryptui/lang/cryptui_En.rc:383: unrecognized escape sequence
The glitch was introduced yesterday
by 0.4.15-dev-3739-g ff9301e9db
Improve debuggability. Fix "WorkerW" window class conflict.
- Enable _DEBUG macro if debugging, in order to enable ATLASSERT macro.
- Fix assertion failures.
- Add SHCreateDefaultWorkerWindow helper function and CWorkerTraits, then use them.
- Don't create the broker and server windows by themselves, but subclass.
CORE-17505, CORE-13950
CORE-3938
Icon extraction from the recycle bin was not possible due to the partial absence of IExtractIcon interface support.
Adding it inside the RecycleBinFile's QueryInterface private implementation, and then calling it from CRecycleBin, now allows retrieving and displaying the files' icons.
- Added translation for:
- [W32TIME]
- [MODE]
- [TIMEOUT]
- [MODEMUI]
- [ARPING]
- [FRAGINATOR]
- and more
- Updated existing translation
- [WINNLS] Update cht (zh-TW) and zhh (zh-HK)
- [DOC] Update rules in Chinese translation notes.txt
- Wine translation sync
Some of the punctuation use in WIne has been converted to half-width,
so the punctuation will no longer synced.
The Asian logo and bar positions are different from English or Latin positions, due to Asian font.
Add positional adjustment to IDD_STATUS if Asian.
Follow-up of #4280ef4f0d0.
The Asian logo and bar positions are different from English or Latin positions, due to Asian font.
Add positional adjustment to IDD_STATUSWINDOW_DLG if Asian.
Add missing structs and handler in BCryptOpenAlgorithmProvider().
Cherry-pick a part of Michael Müller's
76b6c360fa
Follow-up to e0a47b7 (0.4.15-dev-3603).
CORE-14198
CORE-11000
- Now, folders can be sent to recycle bin (fixed a bug inside the implementation).
- Adjust column size of the RecycleBin virtual folder in details mode.
CORE-13730
There was a handle reference leak in the recycler bin and the bin wasn't removing the copied file after restoring it.
Close the handle were the memory leak was and move the file when restoring it.
Fix the issue of the changes of the environment values not being set sometimes through fancy dialog box:
Make sure the environment value buffer is always reallocated before taking the values.
This fixes CORE-15708 "PdfSam 3.3.5 setup can not decode bmp"
https://jira.reactos.org/browse/CORE-15708
Wine does not have this issue, but it did not have it back when last sync to
WineStaging-4.18 was done. This commit is as near as possible to actual
wine-7.0-rc3 version. This wine code uses reverse_bgr8 instead of own
convert_rgba_to_bgra, but it leads to wrong colors.
- Modify NtUserCreateInputContext prototype.
- Add UserCreateInputContext helper function.
- Implement NtUserCreateInputContext function by using UserCreateInputContext.
- Call UserCreateInputContext(0) in InitThreadCallback function to create the default input context.
CORE-11700
Note that even if the MS PSDK and MSDN documents an hypothetical
ANSI version SHCreateFileExtractIconA(), this one never existed
exported in any Windows version!
Converted from Cantonese to HK-Style Written Chinese.
Also assign zh-HK translations to the ReactOS Chinese
translation team in the CODEOWNERS file.
Reviewed-by: He Yang <1160386205@qq.com>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
CORE-17702
Only show the main dialog pane in the taskbar when executing a Cancel dialog.
- Improve previous msi/dialog.c patch to match current Wine code.
- Remove #ifdef's for already committed Wine Code.
In effect, importing Wine's commit 4b88e290521ef9fde9290c9bcbae7420966a6f46:
msi: Set dialog as parent in subsequent dialog.
Author: Fabian Maurer <dark.shadow4@web.de>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51576
- Correctly handle the return values for WM_SIZING and WM_SIZE messages.
- Use NULL for hWndInsertAfter parameter of DeferWindowPos() when
we don't care about the Z-order.
- Specify SWP_NOMOVE for controls that don't move during resizing.
- Fix the IDOK and IDCANCEL buttons when resizing the environment
variables list dialog.
- Fix the dialog "moving" effect that happened whenever an attempt
was made to resize the dialog from either of the
top/left borders, or the top-right/top-left/bottom-left corners,
to a size smaller than the minimal one.
- Use DWLP_USER instead of GWLP_USERDATA when storing user-specific
data into the dialog, since the latter can be used internally by
the Win32 dialog manager implementation.
This is a part of the Partial Network Login Implementation PR.
- Extract code for SamValidateUser (sam.c) from LsaApLogonUserEx2.
- Make SamValidateNormalUser a local function for sam.c
- Move dependent function GetNtAuthorityDomainSid to sam.c
This is a part of the Partial Network Login Implementation PR.
- Extract code for SamValidateNormalUser (sam.c) from LsaApLogonUserEx2.
- Move dependent functions to sam.c:
* GetAccountDomainSid
* MsvpCheckPassword
* MsvpCheckLogonHours
* MsvpCheckWorkstations
Improve the "Edit Environment Variable" dialog box to be functionally as similar to the one of Windows 10.
CORE-11733
- Improved the existing dialog box. In particular, allow it to be resizable.
- Implemented new "fancy" dialog box for variables containing multiple directories as values,
showing them in a list.
CopyFileW also copies the file attributes, and the copy will be opened with
write access later on.
This is import of Wine commit:
e830975806
Fixes MS Office 2000/2003 installers and probably others. CORE-17693
This allows user to know when there is not enough space on the target media,
when there is no permissions for the operation, or some other error.
CORE-9239
- NLS: Change weekdays name to capital letter.
- USETUP: Fix typos to pt-PT translation.
- SYSSETUP: Update pt-PT translation.
+ Sync IDS_USER_ADMINISTRATOR_NAME and IDS_ADMINISTRATOR_NAME (in samsrv).
The server-side CsrSrvIdentifyAlertableThread and CsrSrvSetPriorityClass
functions are completely removed in Win2k3+, and are since stubbed by
CsrSrvUnusedFunction instead. They however were present up to Windows XP,
albeit with an extremely minimal implementation.
The corresponding client-side CsrIdentifyAlertableThread and CsrSetPriorityClass
now become just stubs that either trivially succeed or fail, respectively.
See https://www.geoffchappell.com/studies/windows/win32/csrsrv/api/srvinit/apidispatch.htm
for more information.
- Fix typo "al*T*ertable" --> "alertable".
- Remove ROS-specific CSRSS_IDENTIFY_ALERTABLE_THREAD that was
deprecated since ages (at least before 2005)!
- If the Right-dropped item was a drive, then get the display name of the drive and use it.
- Use FAILED_UNEXPECTEDLY instead of FAILED macro.
- Accept ::{GUID}.
CORE-17813
Instead of duplicating the token and masquerade it as if the token was filtered (which is a big hack), properly implement CreateRestrictedToken function by calling NtFilterToken which it'll create a restricted token for us.
- Add registry handling of two keys to COpenWithMenu.cpp
- Add code to stop OpenWith from using registry entries that should be excluded
- Stop logspam when right-click menu testing for OpenWith is done
CORE-17816
- Implement functions to get regional data from system
- Disable setup window and buttons when control panel applet is started
- Update regional information when control panel applet is closed
- Add a horizontal separator between user locale and keyboard layout
The window initialization handler code should update these properly,
but for now just put empty strings there until it's implemented.
This makes reviewing dialog layout easier in visual resource editors
like Resource Hacker and others, so the translation maintenance takes
much less time.
We already use this technique in some other modules like sysdm and zipfldr.
Spotted by Can Taşan. Fix suggested by Thomas Faber.
Additionally:
- Fix position of some elements to avoid overlapping
- Fix some headers according to the latest coding style
Call native Nt* function to do the actual work, similarly to as it done in Wine: 530c183960:/dlls/kernel32/file.c#l258.
Also add/fix some declarations in internal kernel32/public ndk neaders, to fix compilation.
CORE-17821
Logspam started during 0.4.9-dev'ing when zipfldr got committed, logspam became much worse by
0.4.10-dev-599-g 932df378bf
But the actual bug of 'calling those functions when not needed' is much older than that.
I do intend to port this improvement back into older rls-branches.
Revert my last dsound fix, because it does not fix the actual problem with audio formats support. It only makes the situation worse. It prevents the error when creating an audio stream, but the sound is not playing correctly, both in ReactOS and Windows (with our dsound.dll). Without this fix, it works perfectly on Windows, but does not in ROS.
In particular, the sound is not playing properly in AIMP 4.71 with other audio formats besides default (44100 Hz, 16 bit, stereo). And any other apps which request these audio formats may be also affected as well.
Force the status back to failure, because otherwise the badly required code is not executed at all.
I've made a more correct fix(es) in other audio component(s) instead and will submit them if further PRs.
This reverts commit 183566ee58.
CORE-10907
- Rewrite ImmGetImeMenuItemsA and ImmGetImeMenuItemsW functions.
- Add Imm32GetImeMenuItemsAW, Imm32IsImcAnsi, Imm32ImeMenuAnsiToWide and Imm32ImeMenuWideToAnsi helper functions.
- Make IME module's ImeGetImeMenuItems function optional.
CORE-11700
* [IERNONCE] Implement the registry management code.
* [EXPLORER] handle RunOnceEx by invoking RunOnceEx in iernonce.dll
* [IERNONCE] Display a dialog to show progress, and execute entries.
* [IERNONCE] Add `InitCallback` function
Avoids spamming
(ntoskrnl\ob\obwait.c:441) Failed to reference the handle with status 0xc0000008
CAutoComplete::FinishCompletion(): Remove two useless 'if (m_pThread || !m_hThread)'
tests: No need to check these after each code instruction...
Don't force HRESULT status to DSERR_BUFFERLOST by default in primarybuffer_SetFormat function.
Assign to it S_OK instead, as done in current Wine:
a8583acae9:/dlls/dsound/primary.c#l440
That variable is already set to failure in other appropriate place, when this is indeed needed:
https://git.reactos.org/?p=reactos.git;a=blob;h=b04a526929e4e817ff63aa652530e5901a3253a6;f=dll/directx/wine/dsound/primary.c#l511
The assigned failure status caused executing failure handling code even when the fail actually didn't happen.
In particular, DSOUND_ReopenDevice failed on waveOutOpen call when calling this was not needed.
After my changes, it's called only when needed, i. e., only when the actual failure happens
Otherwise, if all goes good, that code is not called, so the data is transfered successfully and the function is working correctly.
It fixes non-working playback in QMMP 0.11.1 (via DirectSound ouput plugin) and AIMP 3.10 and newer versions.
Also it improves the DirectSound test results from MS DxDiag: now all 4 available tests are passing successfully, instead of only 2.
Other dsound issues also might be fixed as well.
CORE-10907 CORE-14783
The British language wasn't included here, so I have corrected some texts that were in American English.
Also fixed one string that uses British English language.
CORE-17741
This function (which should belong to the user32 helpers) depends on the
internal format of the USER handles table, that is ReactOS-specific. Its
pointer value is stored in the win32k/user32 shared info section, and
thus cannot be converted to user-space and stored back into that section.
Therefore it needs to be retrieved and manually converted when the function
is called.
Co-authored-by: Gabriel Aguiar <fgygh5804@gmail.com>
Reviewed-by: Joachim Henze <Joachim.Henze@reactos.org>
Reviewed-by: Jose Carlos Jesus <zecarlos1957@hotmail.com>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
Signed-off-by: Gabriel Aguiar <fgsoftwarestudio@gmail.com>
[NETID]
- Add and improve Russian translation. Addendum to b9426a3f and c276681e.
[MACHINE.INF]
- Fix probably a machine translation. Addendum to 2d8274bd.
- Standardize some device names.
- Also add missing Ukrainian translation.
- usetup: New bootsector page.
- shell32: Copy and paste, and moving elements.
Also, some strings related to the shutdown and logoff.
- Minor Spanish grammar fix - some female words and minor latin american typos.
- First revision of the .inf, that includes the translation of the Services,
audio, processors and other drivers and minor things.
Fix and improve DirectSoundEnumerateW and DirectSoundCaptureEnumerateW implementations in our dsound.
Use the Windows-compatible way to get the device name and pass it to callback.
- Don't use Wine-specific DSDRIVERDESC structure and DRV_QUERYDSOUNDDESC message, declared in sdk/include/dxsdk/dsdriver.h, whose are obsolete even in Wine for now.
- Instead, declare a new WAVEINCAPSW and WAVEOUTCAPSW structures (for input and output appropriately), call waveInGetDevCapsW and WaveOutGetDevCapsW for enumerated device ID and store retieved device name in these structures.
- Then pass them to a lpDSEnumCallbackW as well, without Ansi to Unicode conversion (since the retrieved string is Unicode already).
- Do this both for capture and playback functions.
- Addtionally, add MMSYSERR_BADDEVICEID status code to mmErr macro, because it also might be returned by waveIn/OutGetDevCapsW as well, in case of failure.
- And mark our dosund as forked, because it definitely will not be synced at least until we'll retarget to Vista or newer. Add an appropriate comment.
This fixes incorrect detection of DirectSound audio input and output devices, so now a lot of apps are able to detect it correctly, and can play the sound properly (e.g. AIMP 2.61 and IcyTower from RAPPS).
CORE-7535 CORE-10907 CORE-15324 CORE-15533 CORE-16340
Only show the main dialog pane on taskbar when executing a Cancel dialog.
Assign previous window handle as a parent when creating Cancel dialog box.
CORE-17702
By taking alternative code-paths in WdmAud and bypassing Sysaudio.
This is my 2nd attempt to commit that.
Using USE_MMIXER_LIB relies on those 2 previous patches:
0.4.15-dev-765-g b8e936a57b CORE17214 (#3148) wdmaud-racecondition-fix and
0.4.15-dev-796-g a27f0debca CORE17276 winmm:mixer-testbot-crash-fix
Defining USE_MMIXER_LIB will fix/improve:
- the test execution times of "GCCLin_x86 on Test VBox" will be dramatically improve (iirc by ~10-15min)
- CORE-8726/CORE-9986/CORE-16564 AC97 driver from rapps will work in the same session that the driver is installed, not a single reboot is needed anymore
- CORE13202 Unhandled exception from wdmaud.drv when recording sound in Scratch 1.4 leads to app-crash (gets fixed even for older builds that did not receive 0.4.15-dev-2794-g 81f8bce yet)
- CORE-13488 A deadlock in "DiabloII" character selection screen and "The Lion King II"
- CORE-9981 "DosBox + Commander Keen6" almost 100% fixed, DosBox + Commander Keen6 properly plays music instead of garbled output,
same improvement for "ScummVM 2.0 with Monkey Island 2"
The playback is not yet *entirely* perfect, still a few hiccups now and then, but by orders of magnitude better than before.
Defining USE_MMIXER_LIB will also have some negative aspects:
- CORE-17277 crash of dsound:duplex on "GCCLin_x86 on Test VBox" gets unhidden on the bot, but was proven to be broken even beforehand already. The driver beforehand was just not found and the tests were skipped therefore.
- CORE-17278 crash of dsound:capture on "GCCLin_x86 on Test VBox" gets unhidden on the bot, but was proven to be broken even beforehand already. The driver beforehand was just not found and the tests were skipped therefore.
- It may also have a negative impact for CORE-17285 "Realtek HD Audio" but Oleg Dubinsky accepted to tolerate that and aims to approach it differently. I will resolve that as WontFix now.
- Improve User32InitializeImmEntryTable function and related.
- Complete win32ss/user/user32/include/immtable.h table.
- Delete a hack in user32.DllMain and apply my magical tricks. This will fix some access violations in IMM32.
- Add some stubs into IMM32.
CORE-11700
We don't need Wine-specific functions for Japanese input.
- Delete __wine_get_ui_window, __wine_register_window and __wine_unregister_window functions.
- Modify imm32.spec.
CORE-11700
- Add Imm32WideFromAnsi, Imm32AnsiFromWide and Imm32IsCrossThreadAccess helper functions.
- Simplify the IMM32 code by using the helper functions.
CORE-11700
We found out what we wanted to find out:
the remaining TODOs for the Python script.
So we can silence the DPRINTs again for the time being
to reduce spam from 3rd party dlls.
Paying tribute to Mark Jansen ;)