- Introduce AddScreenSaver[Item] helpers for adding screensavers in
the list (either given by file path or by item structure).
- Rename "AddScreenSavers" to "EnumScreenSavers", and
"ScreenSaverItem" type to "SCREEN_SAVER_ITEM".
- Ensure the stored "SCRNSAVE.EXE" value is NULL-terminated.
- Add the current screensaver, specified by the "SCRNSAVE.EXE" registry
value, in the list if it isn't already present; otherwise select it
in the list.
- Make the filename comparison case-insensitive.
CORE-6812 ; see also commit ff0951356 (r66688)
This function "just" changes the per-user SCRNSAVE.EXE registry value
to point to the new specified file, changes the SPI values and opens
the desk.cpl "Screensaver" property tab for letting the user change
the new selected screensaver properties.
In particular, it does *NOT* copy the specified file to System32 or
anything else (and doesn't verify that it is a valid PE executable).
Our previous implementation did none of that, and was also relying on
some private setupapi functions.
We now behave closer to Windows' desk.cpl.
Additionally:
- ReactOS-specific feature (compile-time define) disabled by default:
Verify that the specified file actually exists, before changing
the screensaver.
- Use NDEBUG, disabling DPRINT by default;
- Improve InstallScreenSaver[A,W] spec entries;
- Remove NUM_APPLETS define and use _countof() instead.
This avoids having desk.cpl depend on a private function that may change
or disappear, and increase the probability of being able to use that CPL
across different Windows versions.
(Note: this pSetupMultiByteToUnicode was one of those whose name changed
between Windows 2000 and XP+)
This mostly reverts commit 221f21c62 (r29328), that was a hack for
building with MSVC. We can nowadays correctly link with the shell32
SHCreatePropSheetExtArrayEx() export.
Actually I was working on a much bigger commit in the same context for releases/0.4.7
when I realized that related glitches do also affect master head
and also other release-branches in some areas.
40 is what en-US uses, and most other langs used that meanwhile as well. Some were forgotten to be synced though.
While comparing all the files, use the opportunity to slightly improve some headers also.
For: hivedef.inf, powercfg.cpl, sysdm.cpl
and: netshell.dll, netcfgx.dll, shell32.dll, userenv.dll
Also fix "My Documents" and "My Network Places" folder names.
Based on earlier PR #4704
- Fixed alignment for too long text.
- Improved translation.
- Minor adjustments.
CORE-18381
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Co-authored-by: Kyle Katarn <contact@kcsoftwares.com>
It is good practice to not make the expanded combobox larger than the dialog itself.
CBS_NOINTEGRALHEIGHT will allow to set a fixed amount of pixels for the v6 combobox,
and therefore allows us to hide the problem for this specific dialog.
The problem was unhidden by 0.4.12-dev-882-g e3e173ffaa
Even after this patch I think Wines comctl32 can be improved for comboboxes with very
many elements that do not use this small trick yet. I will create a follow-up-ticket.
Fix a bug when after closing the settings window for a screensaver,
the preview for it wouldn't restart.
- Keep waiting for messages from the settings window while it's open
- Fix leaking two handles to avoid creating zombie processes
CORE-18680