Some trivial tweaks that I saw while backporting other stuff:
- es-ES.rc/pt-PT.rc: undesired spaces at the end of groupboxes, which were used as a historic workaround ~ 10 years ago
- zh-TW.rc: wrong indentation (tabs instead of spaces)
- shfldr_netconnect.cpp: superfluous GPL duplication, unneeded exclamation-marks in dbg-prints, undesired double-space formatting
saves a few bytes
Supporting Language Bar...
JIRA issue: CORE-19363
- Add IDD_CLOSELANGBARNOBAND and
IDD_MINIMIZELANGBARNOBAND resource dialogs.
- Add IDB_BITMAP154 and IDB_BITMAP155 resource
bitmaps.
- Disable Desk Band by using g_bEnableDeskBand
global variable.
Import Wine commit: bbce5d014d
Since there's not really something sensible to do in the
"path contains no backslashes" case (adding a backslash seems pointless),
move PathAddBackslashW call inside the if condition to avoid the crash.
Fix suggested by Thomas Faber.
This fixes heap assert in msi/dialog.c when installing Tortoise GIT.
CORE-16693
Co-authored-by: Thomas Faber <thomas.faber@reactos.org>
Co-authored-by: Fabian Maurer <dark.shadow4@web.de>
Import the following fixes:
- Use the number of bytes instead of the number of characters in the length
passed to RegQueryValueExW. Calculate this by multiplying the number of
characters on the size of one wide character in bytes, since only length
of characters is passed to the function. This fixes ERROR_MORE_DATA
returned from RegQueryValueExW, because the passed number of bytes was
less than the actual length of the output buffer, since it was calculated
incorrectly, so the function failed even when it received the correct
number of wide characters.
This partially imports Wine commit:
32584bb521.
- Limit the number of characters in registry icon index buffer from 7 to 5,
as it done in ANSI version of this function, since registry index number
can contain up to 4 digits + space for the null-terminator.
This fixes problems when loading custom (user-defined) icons from registry,
like icons defined by the current user or for all users, instead of just
default icons from the root classes.
CORE-14758
Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
Supporting Language Bar...
JIRA issue: CORE-19363
- Add many global variables
to add UTB settings.
- Add IsSkipRedrawHKL, IsBiDiLocalizedSystem,
InitSkipRedrawHKLArray helper functions.
- Add InitFromReg helper function to
load the settings from registry.
- Add CicRegKey::EnumValue method.
Add a basic IOpenControlPanel implementation that supports Vista canonical registry names.
Implements `control.exe /name company.name [/page id]` and `IOpenControlPanel`
handling of Vista-style canonical registry names.
The documented `Microsoft.*` names don't work because they are simply not
in our registry but "[Executable Control Panel Items](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-an-executable-control-panel-item-registration-)" registered by 3rd-party ISVs
will function correctly in control.exe and the COM API.
Notes:
- `IOpenControlPanel` is implemented in CControlPanelFolder.cpp because
it is supposed to have tighter integration with that shell folder than
it does in this PR.
- `IOpenControlPanel` is also supposed to handle .cpl files with canonical
names registered under [`Extended Properties`](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-dll-control-panel-item-registration-#step-3) but the control panel folder
does not implement `IShellFolder2::GetDetailsEx` yet, so it will have to wait.
- These "Executable Control Panel Items" are also supposed to be displayed
in the control panel itself but this PR does not address that. The
`ITEMIDLIST` format for those needs investigation...
- The Wow64 handling is perhaps not correct but it does not matter,
`ShellExecuteEx` gets to deal with whatever is in the `...\shell\open\command` key.
`CControlPanelFolder` would have to take more care when it starts
reading those keys so it knows when to append "(32-bit)" to the display name.
- `%s%s` because .cpl canonical names don't have the `::` prefix according
to Geoff Chappell.
- Always returns `CPVIEW_CLASSIC` because our `CControlPanelFolder` does
not support the category view.
Original patch by @I_Kill_Bugs.
Fix Cursor being in middle of '...file name:' edit box when using 'Search' from the Explorer toolbar.
JIRA issue: CORE-19407
Supporting TIPs...
JIRA issue: CORE-19360
- Implement cicInitUIFLib and cicDoneUIFLib functions.
- Use them in msctfime and msutb.
- Add CUIFSystemInfo class in <cicero/cicuif.h>.
Based on @douglyons 's control-panel-copy-to-desktop-fix.patch.
JIRA issue: CORE-19210
- Delete needless #ifdef __REACTOS__ guards because
shlfileop.cpp is a forked file.
- Do NULL check against feFrom->szFilename.
Based on KRosUser's desk.patch.
JIRA issue: CORE-18187, CORE-16878
- Add FindBestElement helper function.
- Use FindBestElement to find the best
display settings.
Supporting TIPs... UIComposition class requires a caret class.
JIRA issue: CORE-19360
- Add <cicero/ciccaret.h> header.
- Add CicCaret class for displaying a caret.
Use new(cicNoThrow) instead of plain operator new.
JIRA issue: CORE-19360
- Define CicNoThrow structure and
cicNoThrow macro in <cicero/cicbase.h>.
- Use new(cicNoThrow) instead of
plain operator new.
Based on KRosUser's button_fixnotif.patch.
JIRA issue: CORE-6542, CORE-19384
Notify BN_CLICKED to the parent on WM_SETFOCUS message
handling if the button type was either BS_RADIOBUTTON or
BS_AUTORADIOBUTTON, and if the button was unchecked.
This is actually a Vista+ function, but we need it enable umpnpmgr.dll to notify services of device events. Up until WinXP it was possible to make direct calls to the service manager by umpnpmgr.dll because umpnpmgr.dll was loaded into the service manager process. From Vista onwards umpnpmgr.dll is run as a separate service host process. And since ReactOS always ran umpnpmgr.dll as a separate process, we have to use the Vista RPC functions to notify services.
@HBelusca said in ReactOS Chat:
> hi, is it possible to disable those two dprints?
> err:(../dll/win32/imm32/imm.c:949) pIMC was NULL
> err:(../dll/win32/imm32/imm.c:849) pClientImc was NULL
> they come out every other second of usage of any app in ReactOS.
JIRA issue: CORE-19268
Disable logging on two points by not using IS_NULL_UNEXPECTEDLY macro.
Based on KRosUser's cdefview_fixstatus.patch.
JIRA issue: CORE-19406
In CDefView::OnSize, call _ForceStatusBarResize function
instead of _HandleStatusBarResize function.
Supporting TIPs and Language Bar...
JIRA issue: CORE-19361
- Implement InitLangChangeHotKey function.
- Add some global variables about hot-keys.
- Fix CicRegKey in <cicero/cicreg.h>.
Fix Ctrl+Tab and Shift+Ctrl+Tab key
combination action in property sheet.
JIRA issue: CORE-17941
Use PROPSHEET_IsDialogMessage in
the message loop of PropertySheetA/W
function, instead of IsDialogMessage.
Cicero interface is not Unicode (W)
but ANSI (A).
- ctfmon.exe is ANSI, not Unicode.
- msutb.dll is ANSI, not Unicode.
- Apply generic text mapping to the
cicero headers.
- Include <tchar.h> to use generic
text mapping.
CORE-19361, CORE-19362, CORE-19363
msutb.dll is the GUI back-end
of Language Bar (Tipbar).
- Add msutb.dll module at
dll/win32/msutb/.
- The implementation of
msutb.dll is currently stub.
- Modify msctf.spec and msctf.idl.
- Add <cicero/cicutb.h>.
- Adapt ctfmon.exe to these changes.
CORE-19362, CORE-19363
Make LdrUnlockLoaderLock Cookie type consistent with LdrLockLoaderLock
and LdrpMakeCookie functions.
In addition:
* Adjustment of the formatting string for ULONG_PTR;
* ntdll.spec: specify ptr for 2nd parameter of LdrUnlockLoaderLock:
This is a parameter whose length is pointer-like, platform-dependent.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
The last two parameters are optional, see
https://learn.microsoft.com/en-us/previous-versions/d5fk67ky(v=vs.85)
Test case:
```
' test.vbs
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run "calc.exe" ' Should work because the arguments are optional
objShell.Run "winver.exe", invalidnumber ' Windows treats this as SW_HIDE because it can convert VT_EMPTY
objShell.Run "notepad.exe", "invalidnumber" ' Windows fails with error
```
NOTE: IDS_ADMINISTRATOR_NAME translation excluded for the time being.
It should be "Администратор", but bg-BG translation missing in samsrv.dll,
therefore don't translate it because otherwise this would introduce a mismatch
(samsrv falls back into english when translation is missing).
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Based on KRosUser's edit_v2.patch.
Edit control should stop processing
characters when left mouse button
is down.
If es->bCaptureState is set, then
ignore WM_CHAR message.
CORE-10259
- Rename _IMCCLock as IMCCLOCK.
- Rename InternalIMCCLock as IMCCLock.
- Rename _IMCLock as IMCLOCK.
- Add get() pointer accessor of IMCCLock and IMCLOCK.
- Protect the pointer of IMCCLOCK and IMCLOCK.
CORE-19360
- Add CTFIMECONTEXT structure.
- Add CicInputContext class.
- Rename INPUTCONTEXTDX.dwUnknown5 as
hCtfImeContext and retype it as HIMCC.
- Implement CtfImeGetGuidAtom by using them.
CORE-19360
- Add link to imm32.dll.
- Add <cicero/imclock.h>.
- Add INIT_GUIDMAP constant to <immdev.h>.
- Implement CtfImeIsGuidMapEnable by using them.
CORE-19360
- Add IDC_ROT_CWSAVE and IDC_ROT_CCWSAVE buttons.
- Add Preview_pSaveImage helper function.
- Use it in IDC_ROT_CWSAVE and IDC_ROT_CCWSAVE
command handling.
CORE-19358, CORE-19387
This makes the 3 dlgs fit the screen in y for 640x480 desktop resolution like their MS role-models.
Beside that also fixes:
- the wrong vertical position of IDC_FOLDER_OPTIONS_TASKICON and wrong horizontal position of ICON IDI_SHELL_PROGRAMS_FOLDER2 for all translations
- fix some accelerator collisions for de-DE and place many FIXMEs for other translations that still have some
- improve the distance on the lower end (height) of the 3 groupboxes to look much better than before in IDD_FOLDER_OPTIONS_GENERAL for all langs
- bg-BC.rc in 1st dlg IDD_FOLDER_OPTIONS_GENERAL the text of the radiobuttons was historically shifted to the left (as part of an ancient workaround for the too long strings) and as a consquence the text was at the same area where the icons are. Fixed now.
- en-US: text truncation for IDC_FOLDER_OPTIONS_DOUBLECLICK string (affected also many other langs)
- es-ES: fix text truncation on button IDC_FOLDER_OPTIONS_RESTORE
- id-ID: BS_MULTILINE in IDC_FOLDER_OPTIONS_ULBROWSER and IDC_FOLDER_OPTIONS_ULPOINT. Added missing spacing between IDC_VIEW_APPLY_TO_ALL and IDC_VIEW_RESET_ALL buttons
- it-IT.rc fix text truncation in IDC_FOLDER_OPTIONS_RESTORE
- ro-RO.rc fix text truncation in IDC_FOLDER_OPTIONS_RESTORE
- uk-UA.rc lacked the ICON IDI_SHELL_PROGRAMS_FOLDER2 entirely (as a consequence of a historic workaround)
- fix text truncation for many languages for the radiobuttons in IDD_FOLDER_OPTIONS_GENERAL (1st dlg)
- fix text truncation for all languages for the "Opens with:" text in IDD_FOLDER_OPTIONS_FILETYPES (3rd dlg)
- strip unneeded dummy texts for IDC_FILETYPES_APPNAME
- take over "Free Space" instead of "Size available" for IDS_SHV_COLUMN_DISK_AVAILABLE which was done for en-US.rc some years ago, but was forgotten to do as well for other languages back then
- ... and so on
CORE-1762
- Add m_pMemStream to PREVIEW_DATA structure.
- Add Preview_pFreeImage helper function.
- Add MemStreamFromFile helper function to make
a memory stream.
- Avoid file locking by using a memory stream and
GdipLoadImageFromStream.
CORE-19183
- The children passed to SHOpenFolderAndSelectItems are not supposed to be full pidls.
- Don't leak the array from IShellFolderView::GetSelectedObjects.
SW_HIDE is not the correct default show mode.
This can be reproduced by simple script:
WScript.CreateObject("Shell.Application").ShellExecute("calc.exe");
Addendum to commit 1b634b38e (r73706)
CORE-10838
The TVN_DELETEITEM notification sends the info about the item to be
deleted in the itemOld member of the NMTREEVIEW structure, and not in
the itemNew one!
Based on KRosUser's button.patch.
- Fix DLGC_... handling by using & operator
in BUTTON_CheckAutoRadioButton
in button.c.
- Fix DLGC_... handling by using & operator
in IsDialogMessageW in dialog.c.
- BM_CLICK's wParam must be zero.
CORE-17210
- Add WC_ZOOM window class and
use it for zooming.
- Add ZoomWnd_OnDraw function
and use it in ZoomWnd_OnPaint.
- Use memory bitmap to reduce flickering.
- Make rendering pixel-perfect.
CORE-19220
IDD_DRIVE_PROPERTIES
IDD_DRIVE_TOOLS
IDD_DRIVE_HARDWARE
IDD_FOLDER_CUSTOMIZE
Afterwards all 4 dialogs do display fine even with 640x480 screen resolution. Same as their MS role-models do.
I also fixed some accelerator collisions FCIDM_SHVIEW_CUT and synced some forgotten syncs for IDM_CUT accel.
I also moved checkboxes further to the left in the checkdisk dialog, as it was done for en-US and some other languages before, but it was forgotten in other languages (AUTOCHECKBOX.*14000 and AUTOCHECKBOX.*14001)
the french accelerator-changes were
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Add Slide Show feature.
- Add Preview_StartSlideShow and Preview_EndSlideShow functions.
- Add g_hMainWnd and g_hwndFullscreen global variables.
- Modify ZoomWnd_OnPaint to display Slide Show correctly.
- Add a timer to proceed Slide Show.
CORE-19358
## Overview
1. msctfime.ime is an IME file interface
for new-style IMEs a.k.a. "Text Input
Processors" (TIPs).
2. msctfime.ime is loaded as old-style
IME file at ImmLoadLayout in specific
condition.
3. msctfime.ime communicates with
the current TIP (This feature is not
implemented yet).
## Proposed changes
- Add msctfime module at dll/ime/msctfime.
- The functions in this module are currently
stub.
- Move IME file interface declarations from
<imm.h> to <ddk/immdev.h>.
- Modify ImmNotifyIME, NotifyIME, and
ImeProcessKey prototypes for x64
compliance.
CORE-19360
Improve code flexibility.
- Remove g_fnPrevProc, g_hDispWnd, g_hToolBar, and g_Anime global variables.
- Declare PREVIEW_DATA structure and use it.
- Encapsulate preview window by using user data.
CORE-19358