зеркало из https://github.com/microsoft/terminal.git
2.2 KiB
2.2 KiB
Adding a Settings Property
-
Add to wincon.w
- THIS IS NOT IN OPENCONSOLE. Make sure you update
.../console/published/wincon.w
in the OS repo when you submit the PR. The branch won't build without it. - For now, you can update winconp.h with your consumable changes.
- Define registry name (ex
CONSOLE_REGISTRY_CURSORCOLOR
) - Add the setting to
CONSOLE_STATE_INFO
- Define the property key ID and the property key itself.
- Yes, the large majority of the
DEFINE_PROPERTYKEY
defs are the same, it's only the last byte of the guid that changes
- Yes, the large majority of the
- THIS IS NOT IN OPENCONSOLE. Make sure you update
-
Add matching fields to Settings.hpp
- Add getters, setters, the whole drill.
-
Add to the propsheet
- We need to add it to reading and writing the registry from the propsheet, and reading the link from the propsheet. Yes, that's weird, but the propsheet is smart enough to re-use ShortcutSerialization::s_SetLinkValues, but not smart enough to do the same with RegistrySerialization.
src/propsheet/registry.cpp
propsheet/registry.cpp@InitRegistryValues
should initialize the default value for the property.propsheet/registry.cpp@GetRegistryValues
should make sure to read the property from the registry
-
Add the field to the propslib registry map
-
Add the value to
ShortcutSerialization.cpp
- Read the value in
ShortcutSerialization::s_PopulateV2Properties
- Write the value in
ShortcutSerialization::s_SetLinkValues
- Read the value in
-
Add the setting to
Menu::s_GetConsoleState
, andMenu::s_PropertiesUpdate
Now, your new setting should be stored just like all the other properties. -
Update the feature test properties to get add the setting as well
ft_uia/Common/NativeMethods.cs@WinConP
:Wtypes.PROPERTYKEY PKEY_Console_
NT_CONSOLE_PROPS
-
Add the default value for the setting to
win32k-settings.man
- If the setting shouldn't default to 0 or
nullptr
, then you'll need to set the default value of the setting inwin32k-settings.man
.
- If the setting shouldn't default to 0 or
-
Update
Settings::InitFromStateInfo
andSettings::CreateConsoleStateInfo
to get/set the value in a CONSOLE_STATE_INFO appropriately