fix pathbar elmfunc creating an element for an empty string

Thu, 14 Nov 2024 17:25:23 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 14 Nov 2024 17:25:23 +0100
changeset 83
a612adaee43d
parent 82
6727ea0f8fbe
child 84
57a359c52617

fix pathbar elmfunc creating an element for an empty string

application/window.c file | annotate | diff | comparison | revisions
make/vs/idav/idav.vcxproj file | annotate | diff | comparison | revisions
make/vs/libidav/libidav.vcxproj file | annotate | diff | comparison | revisions
make/vs/ucx/ucx.vcxproj file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.AppLifecycle.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.AppLifecycle.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.DynamicDependency.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.DynamicDependency.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.PushNotifications.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.PushNotifications.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.Security.AccessControl.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.System.Power.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.System.Power.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.System.winmd file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.Windows.System.xml file | annotate | diff | comparison | revisions
make/vs/x64/Debug/Microsoft.WindowsAppRuntime.Bootstrap.dll file | annotate | diff | comparison | revisions
make/vs/x64/Debug/idav.exe file | annotate | diff | comparison | revisions
make/vs/x64/Debug/idav.pdb file | annotate | diff | comparison | revisions
ui/winui/button.cpp file | annotate | diff | comparison | revisions
ui/winui/commandbar.cpp file | annotate | diff | comparison | revisions
ui/winui/list.cpp file | annotate | diff | comparison | revisions
ui/winui/text.cpp file | annotate | diff | comparison | revisions
ui/winui/toolkit.cpp file | annotate | diff | comparison | revisions
ui/winui/toolkit.h file | annotate | diff | comparison | revisions
ui/winui/winui.vcxproj file | annotate | diff | comparison | revisions
--- a/application/window.c	Wed Nov 13 22:10:03 2024 +0100
+++ b/application/window.c	Thu Nov 14 17:25:23 2024 +0100
@@ -284,6 +284,11 @@
 
 
 static UiPathElm* dav_get_pathelm(const char *full_path, size_t len, size_t *ret_nelm, void* data) {
+    if (len == 0) {
+        *ret_nelm = 0;
+        return NULL;
+    }
+
     cxstring fpath = cx_strn(full_path, len);
     int protocol = 0;
     if (cx_strcaseprefix(fpath, CX_STR("http://"))) {
--- a/make/vs/idav/idav.vcxproj	Wed Nov 13 22:10:03 2024 +0100
+++ b/make/vs/idav/idav.vcxproj	Thu Nov 14 17:25:23 2024 +0100
@@ -81,6 +81,10 @@
     <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
     <IntDir>..\..\..\build\vs\idav\$(Platform)\$(Configuration)\</IntDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>..\..\..\build\vs\idav\$(Platform)\$(Configuration)\</IntDir>
+  </PropertyGroup>
   <PropertyGroup Label="Vcpkg">
     <VcpkgEnableManifest>true</VcpkgEnableManifest>
   </PropertyGroup>
@@ -131,12 +135,14 @@
       <WarningLevel>Level3</WarningLevel>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>false</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;UI_WINUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ConformanceMode>true</ConformanceMode>
+      <LanguageStandard_C>stdc17</LanguageStandard_C>
+      <AdditionalIncludeDirectories>..\..\..\ucx;..\vcpkg_installed\x64-windows\x64-windows\include;..\..\..\ui\;..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
-      <SubSystem>Console</SubSystem>
+      <SubSystem>Windows</SubSystem>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <GenerateDebugInformation>true</GenerateDebugInformation>
--- a/make/vs/libidav/libidav.vcxproj	Wed Nov 13 22:10:03 2024 +0100
+++ b/make/vs/libidav/libidav.vcxproj	Thu Nov 14 17:25:23 2024 +0100
@@ -46,7 +46,7 @@
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
@@ -75,6 +75,10 @@
     <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
     <IntDir>..\..\..\build\vs\libidav\$(Platform)\$(Configuration)\</IntDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>..\..\..\build\vs\libidav\$(Platform)\$(Configuration)\</IntDir>
+  </PropertyGroup>
   <PropertyGroup Label="Vcpkg">
     <VcpkgEnableManifest>true</VcpkgEnableManifest>
   </PropertyGroup>
@@ -133,8 +137,10 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>true</SDLCheck>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ConformanceMode>true</ConformanceMode>
+      <LanguageStandard_C>stdc17</LanguageStandard_C>
+      <AdditionalIncludeDirectories>..\..\..\ucx;..\vcpkg_installed\x64-windows\x64-windows\include</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
--- a/make/vs/ucx/ucx.vcxproj	Wed Nov 13 22:10:03 2024 +0100
+++ b/make/vs/ucx/ucx.vcxproj	Thu Nov 14 17:25:23 2024 +0100
@@ -46,7 +46,7 @@
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
@@ -109,6 +109,7 @@
       <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard_C>stdc17</LanguageStandard_C>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -120,9 +121,10 @@
       <WarningLevel>Level3</WarningLevel>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <SDLCheck>true</SDLCheck>
+      <SDLCheck>false</SDLCheck>
       <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ConformanceMode>true</ConformanceMode>
+      <LanguageStandard_C>stdc17</LanguageStandard_C>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
Binary file make/vs/x64/Debug/Microsoft.Windows.AppLifecycle.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.AppLifecycle.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.AppLifecycle</name>
-  </assembly>
-  <members>
-    <member name="T:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager">
-      <summary>Provides static methods you can use to register and unregister for certain types of activations for your app.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.RegisterForFileTypeActivation(System.String[],System.String,System.String,System.String[],System.String)">
-      <summary>Registers to activate the app when the specified file type is opened via ShellExecute, or the command-line.</summary>
-      <param name="supportedFileTypes">One or more supported file types, specified by the file extension including the leading ., such as .docx.</param>
-      <param name="logo">The path to the image or resource used by Windows for the file type. For packaged apps, this parameter is a package-relative path to an image file. For unpackaged, this parameter is a literal filepath to a binary file (DLL, EXE) plus a resource index.</param>
-      <param name="displayName">This display name used by Windows for the file type.</param>
-      <param name="supportedVerbs">Zero or more app-defined verbs. Each verb is added to the File Explorer context menu when a registered file is right-clicked, and the selected verb is passed to the app as the IFileActivatedEventArgs.Verb property.</param>
-      <param name="exePath">The path to the executable to be activated. If you pass an empty string, the current exectuable will be activated by default. Typically this parameter is specified if the caller of this method is the app's installer rather than the app itself.</param>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.RegisterForProtocolActivation(System.String,System.String,System.String,System.String)">
-      <summary>Registers to activate the app when the specified URI scheme is executed via ShellExecute, or the command-line.</summary>
-      <param name="scheme">The URI scheme to register for activations, such as https.</param>
-      <param name="logo">The path to the image or resource used by Windows for the URI scheme. For packaged apps, this parameter is a package-relative path to an image file. For unpackaged, this parameter is a literal filepath to a binary file (DLL, EXE) plus a resource index.</param>
-      <param name="displayName">This display name used by Windows for the URI scheme.</param>
-      <param name="exePath">The path to the executable to be activated. If you pass an empty string, the current exectuable will be activated by default. Typically this parameter is specified if the caller of this method is the app's installer rather than the app itself.</param>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.RegisterForStartupActivation(System.String,System.String)">
-      <summary>Registers to activate the app when when the app is started by the user logging into the Windows OS, either because of a registry key, or because of a shortcut in a well-known startup folder.</summary>
-      <param name="taskId">An app-defined ID that can be used to unregister for startup activations later by using the UnregisterForStartupActivation method.</param>
-      <param name="exePath">The path to the executable to be activated. If you pass an empty string, the current exectuable will be activated by default. Typically this parameter is specified if the caller of this method is the app's installer rather than the app itself.</param>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.UnregisterForFileTypeActivation(System.String[],System.String)">
-      <summary>Unregisters a file type activation that was registered earlier by using the RegisterForFileTypeActivation method.</summary>
-      <param name="fileTypes">The file type that was previously registered for protocol activation.</param>
-      <param name="exePath">The path to the executable that was previously registered for protocol activation.</param>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.UnregisterForProtocolActivation(System.String,System.String)">
-      <summary>Unregisters a protocol activation that was registered earlier by using the RegisterForProtocolActivation method.</summary>
-      <param name="scheme">The URI scheme that was previously registered for protocol activation.</param>
-      <param name="exePath">The path to the executable that was previously registered for protocol activation.</param>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.ActivationRegistrationManager.UnregisterForStartupActivation(System.String)">
-      <summary>Unregisters a startup activation that was registered earlier by using the RegisterForStartupActivation method.</summary>
-      <param name="taskId">The task ID that was previously registered for protocol activation.</param>
-    </member>
-    <member name="T:Microsoft.Windows.AppLifecycle.AppActivationArguments">
-      <summary>Contains information about the type and data payload for an app activation that was registered by using one of the static methods of the ActivationRegistrationManager class.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.AppLifecycle.AppActivationArguments.Data">
-      <summary>Gets the data payload for a registered activation.</summary>
-      <returns>The data payload for a registered activation. For more information about the type of this object, see the remarks.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.AppLifecycle.AppActivationArguments.Kind">
-      <summary>Gets the type of a registered activation.</summary>
-      <returns>The type of a registered activation.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.AppLifecycle.AppInstance">
-      <summary>Represents an instance of an app.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.AppLifecycle.AppInstance.Activated">
-      <summary>Raised when an app activation is triggered that was registered by using one of the static methods of the ActivationRegistrationManager class.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.FindOrRegisterForKey(System.String)">
-      <summary>Registers an app instance with the platform, or finds an existing instance if another instance has already registered this key.</summary>
-      <param name="key">A non-empty string as a key for the instance.</param>
-      <returns>An app instance that represents the first app that registered the key. The caller can determine whether that instance is the current instance.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.GetActivatedEventArgs">
-      <summary>Retrieves the event args for an app activation that was registered by using one of the static methods of the ActivationRegistrationManager class.</summary>
-      <returns>An object that contains the activation type and the data payload.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent">
-      <summary>Retrieves the current running instance of the app.</summary>
-      <returns>The current running instance of the app.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.GetInstances">
-      <summary>Retrieves a collection of all running instances of the app.</summary>
-      <returns>The collection of all running instances of the app.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.RedirectActivationToAsync(Microsoft.Windows.AppLifecycle.AppActivationArguments)">
-      <summary>Redirects the current activation request to another app instance.</summary>
-      <param name="args">The activation arguments to pass to the other app instance.</param>
-      <returns>An object that represents the results of the asynchronous operation.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.AppLifecycle.AppInstance.UnregisterKey">
-      <summary>Unregisters a given key for this app instance.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.AppLifecycle.AppInstance.IsCurrent">
-      <summary>Gets a value that indicates whether this AppInstance object represents the current instance of the app or a different instance.</summary>
-      <returns>true indicates that this AppInstance object represents the current instance of the app; false indicates it represents a different instance.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.AppLifecycle.AppInstance.Key">
-      <summary>Gets an app-defined string value that identifies the current app instance for redirection purposes.</summary>
-      <returns>An app-defined string value that identifies the current app instance for redirection purposes.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.AppLifecycle.AppInstance.ProcessId">
-      <summary>Gets the process ID of the app instance.</summary>
-      <returns>The process ID of the app instance.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.AppLifecycle.ExtendedActivationKind">
-      <summary>Defines values that represent activation types.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.AppointmentsProvider">
-      <summary>The user wants to manage appointments that are provided by the app.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.BarcodeScannerProvider">
-      <summary>The app was activated as a barcode scanner provider.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.CachedFileUpdater">
-      <summary>The user wants to save a file that the app provides content management for.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.CameraSettings">
-      <summary>The app captures photos or video from an attached camera.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.CommandLineLaunch">
-      <summary>The app was launched from the command line.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ComponentUI">
-      <summary>Reserved for system use.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Contact">
-      <summary>The user wants to handle calls or messages for the phone number of a contact that is provided by the app.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ContactPanel">
-      <summary>The app was launched from the My People UI.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ContactPicker">
-      <summary>The user wants to pick contacts.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Device">
-      <summary>The app handles AutoPlay.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.DevicePairing">
-      <summary>This app was activated as a result of pairing a device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.DialReceiver">
-      <summary>This app was launched by another app on a different device by using the DIAL protocol.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.File">
-      <summary>An app launched a file whose file type this app is registered to handle.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.FileOpenPicker">
-      <summary>The user wants to pick files that are provided by the app.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.FilePickerExperience">
-      <summary>Reserved for system use.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.FileSavePicker">
-      <summary>The user wants to save a file and selected the app as the location.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.GameUIProvider">
-      <summary>The app was activated because it was launched by the OS due to a game's request for Xbox-specific UI.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Launch">
-      <summary>The user launched the app or tapped a content tile.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.LockScreen">
-      <summary>The app was activated as the lock screen.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.LockScreenCall">
-      <summary>The app launches a call from the lock screen. If the user wants to accept the call, the app displays its call UI directly on the lock screen without requiring the user to unlock. A lock-screen call is a special type of launch activation.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.LockScreenComponent">
-      <summary>Reserved for system use.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PhoneCallActivation">
-      <summary>The app was activated by a phone call.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PickerReturned">
-      <summary>Windows Phone only. The app was activated after the completion of a picker.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PickFileContinuation">
-      <summary>Windows Phone only. The app was activated after the app was suspended for a file picker operation.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PickFolderContinuation">
-      <summary>Windows Phone only. The app was activated after the app was suspended for a folder picker operation.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PickSaveFileContinuation">
-      <summary>Windows Phone only. The app was activated after the app was suspended for a file save picker operation.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Print3DWorkflow">
-      <summary>This app was launched by another app to provide a customized printing experience for a 3D printer.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PrintSupportJobUI">
-      <summary>The app was activated as print support job UI.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PrintSupportSettingsUI">
-      <summary>The app was activated as print support settings UI.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PrintTaskSettings">
-      <summary>The app handles print tasks.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.PrintWorkflowForegroundTask">
-      <summary>The app was activated because the user is printing to a printer that has a Print Workflow App associated with it which has requested user input.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Protocol">
-      <summary>An app launched a URI whose scheme name this app is registered to handle.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ProtocolForResults">
-      <summary>The app was launched by another app with the expectation that it will return a result back to the caller.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Push" />
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.RestrictedLaunch">
-      <summary>The user launched the restricted app.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Search">
-      <summary>The user wants to search with the app.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ShareTarget">
-      <summary>The app is activated as a target for share operations.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.StartupTask">
-      <summary>The app was activated because the app is specified to launch at system startup or user log-in.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.ToastNotification">
-      <summary>The app was activated when a user tapped on the body of a toast notification or performed an action inside a toast notification.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.UserDataAccountsProvider">
-      <summary>The app was launched to handle the user interface for account management. In circumstances where the system would have shown the default system user interface, it instead has invoked your app with the UserDataAccountProvider contract. The activation payload contains information about the type of operation being requested and all the information necessary to replicate the system-provided user interface. This activation kind is limited to 1st party apps. To use this field, you must add the userDataAccountsProvider capability in your app's package manifest. For more info see App capability declarations.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.VoiceCommand">
-      <summary>The app was activated as the result of a voice command.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.VpnForeground">
-      <summary>The app was activated as a VPN app in the foreground.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.WalletAction">
-      <summary>Windows Phone only. The app was activated to perform a Wallet operation.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.WebAccountProvider">
-      <summary>The app was activated by a web account provider.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.AppLifecycle.ExtendedActivationKind.WebAuthenticationBrokerContinuation">
-      <summary>Windows Phone only. The app was activated after the app was suspended for a web authentication broker operation.</summary>
-    </member>
-  </members>
-</doc>
\ No newline at end of file
Binary file make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.DynamicDependency.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.DynamicDependency.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.ApplicationModel.DynamicDependency</name>
-  </assembly>
-  <members>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.AddPackageDependencyOptions">
-      <summary>Defines options that can be applied when adding a run-time reference to a framework package by using the PackageDependency.Add" method.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.AddPackageDependencyOptions.#ctor">
-      <summary>Creates a new instance of the AddPackageDependencyOptions class.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.AddPackageDependencyOptions.PrependIfRankCollision">
-      <summary>When you call the PackageDependency.Add" method and multiple packages are present in the package graph with the same rank as specified by the Rank property, this property indicates whether the resolved package is added before others of the same rank.</summary>
-      <returns>If true, the resolved package is added before others of the same rank. If false, the resolved package is not added before others of the same rank.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.AddPackageDependencyOptions.Rank">
-      <summary>The rank to use to add the resolved package to the caller's package graph.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions">
-      <summary>Defines criteria that can be applied when creating an install-time reference to a framework package by using the PackageDependency.Create" method. This informs the OS that your unpackaged app has a dependency upon a framework package that meets the specified criteria.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions.#ctor">
-      <summary>Creates a new instance of the CreatePackageDependencyOptions class.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions.Architectures">
-      <summary>Gets or sets the processor architectures of the framework package on which your unpackaged app has a dependency.</summary>
-      <returns>A bitwise combination of values that indicates the processor architectures of the framework package on which your unpackaged app has a dependency.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions.LifetimeArtifact">
-      <summary>Gets or sets the name of the artifact used to define the lifetime of the package dependency, if the LifetimeArtifactKind property is set to PackageDependencyLifetimeArtifactKind.FilePath or PackageDependencyLifetimeArtifactKind.RegistryKey.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions.LifetimeArtifactKind">
-      <summary>Gets or sets the type of artifact to use to define the lifetime of the package dependency.</summary>
-      <returns>The type of artifact to use to define the lifetime of the package dependency.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions.VerifyDependencyResolution">
-      <summary>Gets or sets a value that indicates whether to disable dependency resolution when pinning a package dependency. This is useful for installers running as user contexts other than the target user (for example, installers running as LocalSystem).</summary>
-      <returns>Specify true to verify dependency resolution when pinning a package dependency; specify false to disable dependency resolution.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency">
-      <summary>Represents a framework package on which the current app has a dependency, and includes members you can use to manage the lifetime of the dependency.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Add">
-      <summary>Adds a run-time reference for the framework package dependency you created earlier by using the Create method. After this method successfully returns, your app may activate types and use content from the framework package.</summary>
-      <returns>An object that provides context info about the framework package dependency and enables you to remove the run-time reference.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Add(Microsoft.Windows.ApplicationModel.DynamicDependency.AddPackageDependencyOptions)">
-      <summary>Adds a run-time reference for the framework package dependency you created earlier by using the Create method, with the specified options. After this method successfully returns, your app can activate types and use content from the framework package.</summary>
-      <param name="options">Defines additional options to specify the framework package reference.</param>
-      <returns>An object that provides context info about the framework package dependency and enables you to remove the run-time reference.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Create(System.String,Windows.ApplicationModel.PackageVersion)">
-      <summary>Creates an install-time reference for a framework package dependency for the current app, using the specified package family name and minimum version. When you use this method, the framework package dependency is accessible to the current user only. To create a framework package dependency that is accessible to all users, use the CreateForSystem method instead.</summary>
-      <param name="packageFamilyName">The package family name of the framework package on which to take dependency.</param>
-      <param name="minVersion">The minimum version of the framework package on which to take dependency.</param>
-      <returns>The object that represents the package dependency, and provides members you can use to manage the lifetime of the dependency.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Create(System.String,Windows.ApplicationModel.PackageVersion,Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions)">
-      <summary>Creates an install-time reference for a framework package dependency for the current app, using the specified package family name and minimum version and the specified options. When you use this method, the framework package dependency is accessible to the current user only. To create a framework package dependency that is accessible to all users, use the CreateForSystem method instead.</summary>
-      <param name="packageFamilyName">The package family name of the framework package on which to take dependency.</param>
-      <param name="minVersion">The minimum version of the framework package on which to take dependency.</param>
-      <param name="options">Defines additional criteria to specify the framework package you want to use in your app.</param>
-      <returns>The object that represents the package dependency, and provides members you can use to manage the lifetime of the dependency.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.CreateForSystem(System.String,Windows.ApplicationModel.PackageVersion,Microsoft.Windows.ApplicationModel.DynamicDependency.CreatePackageDependencyOptions)">
-      <summary>Creates an install-time reference for a framework package dependency for the current app, using the specified package family name and minimum version and the specified options. This method creates a framework package dependency that is accessible to all users, and this method requires that the caller has administrative privileges. To create a framework package dependency that is accessible only to the current user, use the Create method instead.</summary>
-      <param name="packageFamilyName">The package family name of the framework package on which to take dependency.</param>
-      <param name="minVersion">The minimum version of the framework package on which to take dependency.</param>
-      <param name="options">Defines additional criteria to specify the framework package you want to use in your app.</param>
-      <returns>The object that represents the package dependency, and provides members you can use to manage the lifetime of the dependency.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Delete">
-      <summary>Deletes the install-time reference for the framework package dependency you created earlier by using the Create method. This method informs the OS that it is safe to remove the framework package if no other apps have a dependency on it.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.GetFromId(System.String)">
-      <summary>Creates a new package dependency instance from the specified package dependency ID.</summary>
-      <param name="id">The existing package dependency ID from which to create the new package dependency object.</param>
-      <returns>The object that represents the new package dependency, and provides members you can use to manage the lifetime of the dependency.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.GetFromIdForSystem(System.String)">
-      <summary>Creates a new package dependency instance from the specified package dependency ID. The package dependency is accessible to all users, , and this method requires that the caller has administrative privileges.</summary>
-      <param name="id">The existing package dependency ID from which to create the new package dependency object.</param>
-      <returns>The object that represents the new package dependency, and provides members you can use to manage the lifetime of the dependency.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.GenerationId">
-      <summary>Gets the package graph's current generation ID.</summary>
-      <returns>The package graph's current generation ID.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependency.Id">
-      <summary>Gets the ID of the package dependency. This value is available after successful calls to the Create and CreateForSystem methods.</summary>
-      <returns>The ID of the package dependency.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext">
-      <summary>Provides context info about a resolved framework package dependency that was created by using the PackageDependency.Add method.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext.#ctor(Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContextId)">
-      <summary>Creates a new instance of the PackageDependencyContext class based on the specified context ID.</summary>
-      <param name="contextId">The context ID on which to base the new PackageDependencyContext.</param>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext.Remove">
-      <summary>Removes a resolved package dependency from the current process' package graph (that is, a run-time reference for a framework package dependency that was added by using the PackageDependency.Add.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext.ContextId">
-      <summary>Gets the context ID of the resolved framework package dependency for the current context PackageDependencyContext object.</summary>
-      <returns>The context ID of the resolved framework package dependency for the current context PackageDependencyContext object.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext.PackageDependencyId">
-      <summary>Gets the ID of the resolved framework package dependency for the current context PackageDependencyContext object.</summary>
-      <returns>The ID of the resolved framework package dependency for the current context PackageDependencyContext object.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContext.PackageFullName">
-      <summary>Gets the package full name for the resolved framework package dependency for the current context PackageDependencyContext object.</summary>
-      <returns>The package full name for the resolved framework package dependency for the current context PackageDependencyContext object.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContextId">
-      <summary>Encapsulates a unique ID for a resolved framework package dependency that is described by a PackageDependencyContext object.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyContextId.Id">
-      <summary>The unique ID for a resolved framework package dependency.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyLifetimeArtifactKind">
-      <summary>Defines the type of artifacts you can assign to the LifetimeArtifactKind property to define the lifetime of a package dependency.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyLifetimeArtifactKind.FilePath">
-      <summary>The lifetime artifact is an absolute filename or path. The package dependency is implicitly deleted when this is deleted.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyLifetimeArtifactKind.Process">
-      <summary>The current process is the lifetime artifact. The package dependency is implicitly deleted when the process terminates.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyLifetimeArtifactKind.RegistryKey">
-      <summary>The lifetime artifact is a registry key in the format root\subkey, where root is one of the following: HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, or HKEY_USERS. The package dependency is implicitly deleted when this is deleted.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures">
-      <summary>Defines the processor architectures for a framework package dependency that you create by using the PackageDependency.Create" method.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.Arm">
-      <summary>Specifies the ARM architecture.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.Arm64">
-      <summary>Specifies the ARM64 architecture.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.Neutral">
-      <summary>Specifies the neutral architecture.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.None">
-      <summary>No processor architecture is specified.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.X64">
-      <summary>Specifies the x64 architecture.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.X86">
-      <summary>Specifies the x86 architecture.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyProcessorArchitectures.X86OnArm64">
-      <summary>Specifies the x86/A64 architecture.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyRank">
-      <summary>Represents the default rank value to use to resolve a framework package dependency when using the PackageDependency.Add" method.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.DynamicDependency.PackageDependencyRank.Default">
-      <summary>Gets the default rank value to use to resolve a framework package dependency when using the PackageDependency.Add" method.</summary>
-      <returns>The default rank value (currently this value is 0).</returns>
-    </member>
-  </members>
-</doc>
\ No newline at end of file
Binary file make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.ApplicationModel.WindowsAppRuntime</name>
-  </assembly>
-  <members>
-    <member name="T:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentManager">
-      <summary>Provides access to deployment information for the Windows App SDK runtime.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentManager.GetStatus">
-      <summary>Returns the current deployment status of the Windows App SDK runtime that is currently loaded. Use this method to identify if there is work required to install Windows App SDK runtime packages before the current app can use Windows App SDK features.</summary>
-      <returns>An object that provides deployment status and error information for the Windows App SDK runtime referenced by the current package.</returns>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentManager.Initialize">
-      <summary>Checks the status of the Windows App SDK runtime referenced by the current package and attempts to register any missing packages that can be registered.</summary>
-      <returns>An object that provides deployment status and error information for the Windows App SDK runtime referenced by the current package.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentResult">
-      <summary>Provides deployment status and error information for the Windows App SDK runtime referenced by the current package.</summary>
-    </member>
-    <member name="M:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentResult.#ctor(Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus,Windows.Foundation.HResult)">
-      <summary>Initializes a new instance of the DeploymentResult class.</summary>
-      <param name="status">The deployment status of the Windows App SDK runtime that is currently loaded.</param>
-      <param name="extendedError">The first encountered error if there was an error initializing the Windows App SDK runtime or getting the status of the runtime.</param>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentResult.ExtendedError">
-      <summary>Gets the first encountered error if there was an error initializing the Windows App SDK runtime or getting the status of the runtime.</summary>
-      <returns>The first encountered error if there was an error initializing the Windows App SDK runtime or getting the status of the runtime. If there is no error, this property returns S_OK.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentResult.Status">
-      <summary>Gets the deployment status of the Windows App SDK runtime that is currently loaded.</summary>
-      <returns>The deployment status of the Windows App SDK runtime that is currently loaded.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus">
-      <summary>Represents the deployment status of the Windows App SDK runtime that is currently loaded.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus.Ok">
-      <summary>The Windows App SDK runtime is in a good deployment state.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus.PackageInstallFailed">
-      <summary>The installation of a package for the Windows App SDK runtime failed.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus.PackageInstallRequired">
-      <summary>A package install is required in order for the Windows App SDK runtime to be in a good deployment state.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentStatus.Unknown">
-      <summary>The Windows App SDK runtime is in an unknown deployment state.</summary>
-    </member>
-  </members>
-</doc>
\ No newline at end of file
Binary file make/vs/x64/Debug/Microsoft.Windows.PushNotifications.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.PushNotifications.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.PushNotifications</name>
-  </assembly>
-  <members>
-  </members>
-</doc>
Binary file make/vs/x64/Debug/Microsoft.Windows.Security.AccessControl.winmd has changed
Binary file make/vs/x64/Debug/Microsoft.Windows.System.Power.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.System.Power.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.System.Power</name>
-  </assembly>
-  <members>
-    <member name="T:Microsoft.Windows.System.Power.BatteryStatus">
-      <summary>Defines values that represent the status of the battery on the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.BatteryStatus.Charging">
-      <summary>The battery is charging.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.BatteryStatus.Discharging">
-      <summary>The battery is discharging.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.BatteryStatus.Idle">
-      <summary>The battery is idle.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.BatteryStatus.NotPresent">
-      <summary>The battery is not present.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.DisplayStatus">
-      <summary>Defines values that represent the status of the display that is associated with the app's session.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.DisplayStatus.Dimmed">
-      <summary>The display is dimmed.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.DisplayStatus.Off">
-      <summary>The display is off.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.DisplayStatus.On">
-      <summary>The display is on.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.EffectivePowerMode">
-      <summary>Defines values that represent the effective power mode of the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.Balanced">
-      <summary>The device is in the balanced effective power mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.BatterySaver">
-      <summary>The device is in battery saver mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.BetterBattery">
-      <summary>The device is in the better battery effective power mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.GameMode">
-      <summary>The device is in game mode power mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.HighPerformance">
-      <summary>The device is in the high performance effective power mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.MaxPerformance">
-      <summary>The device is in the maximum performance effective power mode.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EffectivePowerMode.MixedReality">
-      <summary>The device is in the windows mixed reality power mode.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.EnergySaverStatus">
-      <summary>Defines values that represent the battery saver states of the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EnergySaverStatus.Disabled">
-      <summary>Battery saver is disabled.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EnergySaverStatus.Off">
-      <summary>Battery saver is off.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EnergySaverStatus.On">
-      <summary>Battery saver is on.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.EnergySaverStatus.Uninitialized">
-      <summary>Battery saver is uninitialized.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.PowerManager">
-      <summary>Provides static events that notify your app of changes to the devices power state and static properties that provide access to current power state information.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.BatteryStatusChanged">
-      <summary>Raised when the status of the battery on the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.DisplayStatusChanged">
-      <summary>Raised when the status of the display that is associated with the app's session.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.EffectivePowerModeChanged">
-      <summary>Raised when the effective power mode of the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.EnergySaverStatusChanged">
-      <summary>Raised when battery saver has been turned off or on in response to changing power conditions.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.PowerSourceKindChanged">
-      <summary>Raised when the power source of the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.PowerSupplyStatusChanged">
-      <summary>Raised when the power supply status of the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.RemainingChargePercentChanged">
-      <summary>Raised when the remaining charge percentage of the battery on the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.RemainingDischargeTimeChanged">
-      <summary>Raised when the remaining discharge time of the battery on the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.SystemIdleStatusChanged">
-      <summary>Raised when the system is busy. This indicates that the system will not be moving into an idle state in the near future and that the current time is a good time for components to perform background or idle tasks that would otherwise prevent the computer from entering an idle state.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.SystemSuspendStatusChanged">
-      <summary>Raised when the suspend status of the device has changed.</summary>
-    </member>
-    <member name="E:Microsoft.Windows.System.Power.PowerManager.UserPresenceStatusChanged">
-      <summary>Raised when the user status associated with the app's session has changed.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.BatteryStatus">
-      <summary>Gets the current status of the battery on the device.</summary>
-      <returns>The current status of the battery.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.DisplayStatus">
-      <summary>Gets the current status of the display that is associated with the app's session.</summary>
-      <returns>The current status of the display that is associated with the app's session.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.EffectivePowerMode">
-      <summary>Gets the current effective power mode of the device.</summary>
-      <returns>The current effective power mode of the device.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.EnergySaverStatus">
-      <summary>Gets the current state of battery saver on the device.</summary>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.PowerSourceKind">
-      <summary>Gets the current power source of the device.</summary>
-      <returns>The current power source of the device.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.PowerSupplyStatus">
-      <summary>Gets the current power supply status of the device.</summary>
-      <returns>The current power supply status of the device.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.RemainingChargePercent">
-      <summary>Gets the remaining charge percentage of the battery on the device.</summary>
-      <returns>The remaining charge percentage of the battery.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.RemainingDischargeTime">
-      <summary>Gets the remaining discharge time of the battery on the device.</summary>
-      <returns>The remaining discharge time of the battery.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.SystemSuspendStatus">
-      <summary>Gets the current suspend status of the device.</summary>
-      <returns>The current suspend status of the device.</returns>
-    </member>
-    <member name="P:Microsoft.Windows.System.Power.PowerManager.UserPresenceStatus">
-      <summary>Gets the current user status associated with the app's session.</summary>
-      <returns>The current user present status of the device.</returns>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.PowerSourceKind">
-      <summary>Defines values that represent the power source of the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.PowerSourceKind.AC">
-      <summary>The computer is powered by an AC power source (or similar, such as a laptop powered by a 12V automotive adapter).</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.PowerSourceKind.DC">
-      <summary>The computer is powered by an onboard battery power source.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.PowerSupplyStatus">
-      <summary>Defines values that represent the power supply status of the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.PowerSupplyStatus.Adequate">
-      <summary>Power supply is adequate.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.PowerSupplyStatus.Inadequate">
-      <summary>Power supply is not adequate.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.PowerSupplyStatus.NotPresent">
-      <summary>Power supply is not present.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.SystemSuspendStatus">
-      <summary>Defines values that represent the suspend status of the device.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.SystemSuspendStatus.AutoResume">
-      <summary>The device is automatically resuming from suspend state.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.SystemSuspendStatus.Entering">
-      <summary>The device is entering suspend state.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.SystemSuspendStatus.ManualResume">
-      <summary>The user has manually resumed the device from suspend state.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.SystemSuspendStatus.Uninitialized">
-      <summary>The suspend status is not initialized.</summary>
-    </member>
-    <member name="T:Microsoft.Windows.System.Power.UserPresenceStatus">
-      <summary>Defines values that represent the user status associated with the app's session.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.UserPresenceStatus.Absent">
-      <summary>The user is absent.</summary>
-    </member>
-    <member name="F:Microsoft.Windows.System.Power.UserPresenceStatus.Present">
-      <summary>The user is present.</summary>
-    </member>
-  </members>
-</doc>
\ No newline at end of file
Binary file make/vs/x64/Debug/Microsoft.Windows.System.winmd has changed
--- a/make/vs/x64/Debug/Microsoft.Windows.System.xml	Wed Nov 13 22:10:03 2024 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doc>
-  <assembly>
-    <name>Microsoft.Windows.System</name>
-  </assembly>
-  <members>
-  </members>
-</doc>
Binary file make/vs/x64/Debug/Microsoft.WindowsAppRuntime.Bootstrap.dll has changed
Binary file make/vs/x64/Debug/idav.exe has changed
Binary file make/vs/x64/Debug/idav.pdb has changed
--- a/ui/winui/button.cpp	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/button.cpp	Thu Nov 14 17:25:23 2024 +0100
@@ -98,6 +98,7 @@
 	UIElement elm = button;
 	UiWidget* widget = new UiWidget(elm);
 	ui_context_add_widget_destructor(current->ctx, widget);
+	ui_set_widget_groups(current->ctx, widget, args.groups);
 
 	// register callback
 	if (args.onclick) {
@@ -175,6 +176,24 @@
 	}
 }
 
+static void togglebutton_changed(UiObject *obj, bool checked, ui_callback onchange, void *onchangedata, int enable_state) {
+	if (onchange) {
+		UiEvent evt;
+		evt.obj = obj;
+		evt.window = obj->window;
+		evt.document = obj->ctx->document;
+		evt.eventdata = nullptr;
+		evt.intval = checked;
+		onchange(&evt, onchangedata);
+	}
+	if (enable_state > 0) {
+		if (checked) {
+			ui_set_group(obj->ctx, enable_state);
+		} else {
+			ui_unset_group(obj->ctx, enable_state);
+		}
+	}
+}
 
 static UIWIDGET create_togglebutton(UiObject *obj, ToggleButton button, UiToggleArgs args) {
 	UiObject* current = uic_current_obj(obj);
@@ -187,6 +206,7 @@
 	UIElement elm = button;
 	UiWidget* widget = new UiWidget(elm);
 	ui_context_add_widget_destructor(current->ctx, widget);
+	ui_set_widget_groups(current->ctx, widget, args.groups);
 
 	// bind variable
 	UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_INTEGER);
@@ -201,6 +221,15 @@
 		togglebutton_register_unchecked_observers(button, obj, var);
 	}
 
+	if (args.enable_group > 0 || args.onchange) {
+		button.Checked([obj, args](IInspectable const& sender, RoutedEventArgs) {
+			togglebutton_changed(obj, true, args.onchange, args.onchangedata, args.enable_group);
+		});
+		button.Unchecked([obj, args](IInspectable const& sender, RoutedEventArgs) {
+			togglebutton_changed(obj, false, args.onchange, args.onchangedata, args.enable_group);
+			});
+	}
+
 	// add button to current container
 	UI_APPLY_LAYOUT1(current, args);
 
@@ -234,6 +263,7 @@
 	UIElement elm = button;
 	UiWidget* widget = new UiWidget(elm);
 	ui_context_add_widget_destructor(current->ctx, widget);
+	ui_set_widget_groups(current->ctx, widget, args.groups);
 
 	// bind variable
 	UiVar* var = nullptr;
@@ -274,6 +304,7 @@
 	UIElement elm = button;
 	UiWidget* widget = new UiWidget(elm);
 	ui_context_add_widget_destructor(current->ctx, widget);
+	ui_set_widget_groups(current->ctx, widget, args.groups);
 
 	UiVar* var = nullptr;
 	if (args.value) {
--- a/ui/winui/commandbar.cpp	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/commandbar.cpp	Thu Nov 14 17:25:23 2024 +0100
@@ -136,6 +136,11 @@
 		button.Icon(ui_get_icon(item->args.icon));
 	}
 
+	UIElement elm = button;
+	UiWidget* widget = new UiWidget(elm);
+	ui_context_add_widget_destructor(obj->ctx, widget);
+	ui_set_widget_groups(obj->ctx, widget, item->args.groups);
+
 	// register callback
 	if (item->args.onclick) {
 		ui_callback cbfunc = item->args.onclick;
@@ -170,6 +175,7 @@
 		UIElement elm = button;
 		UiWidget* widget = new UiWidget(elm);
 		ui_context_add_widget_destructor(obj->ctx, widget);
+		ui_set_widget_groups(obj->ctx, widget, item->args.groups);
 
 		UiInteger* value = (UiInteger*)var->value;
 		int64_t i = value->value;
--- a/ui/winui/list.cpp	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/list.cpp	Thu Nov 14 17:25:23 2024 +0100
@@ -64,6 +64,7 @@
     widget->data1 = args.model;
     widget->data2 = args.getvalue;
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     // bind var
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.list, args.varname, UI_VAR_LIST);
@@ -135,6 +136,7 @@
     widget->data1 = args.model;
     widget->data2 = args.getvalue;
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     // bind var
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.list, args.varname, UI_VAR_LIST);
@@ -230,6 +232,7 @@
     widget->data1 = args.model;
     widget->data2 = args.getvalue;
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     // bind var
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.list, args.varname, UI_VAR_LIST);
--- a/ui/winui/text.cpp	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/text.cpp	Thu Nov 14 17:25:23 2024 +0100
@@ -62,6 +62,7 @@
     UIElement elm = textarea;
     UiWidget* widget = new UiWidget(elm);
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_TEXT);
     if (var) {
@@ -180,6 +181,7 @@
     UIElement elm = textfield;
     UiWidget* widget = new UiWidget(elm);
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING);
     if (var) {
@@ -212,6 +214,7 @@
     UIElement elm = textfield;
     UiWidget* widget = new UiWidget(elm);
     ui_context_add_widget_destructor(current->ctx, widget);
+    ui_set_widget_groups(current->ctx, widget, args.groups);
 
     UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING);
     if (var) {
--- a/ui/winui/toolkit.cpp	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/toolkit.cpp	Thu Nov 14 17:25:23 2024 +0100
@@ -355,3 +355,27 @@
 	pool->EnqueueJob(job);
 }
 
+
+
+void ui_set_widget_groups(UiContext *ctx, UIWIDGET widget, const int *groups) {
+	if(!groups) {
+		return;
+	}
+	size_t ngroups = uic_group_array_size(groups);
+	ui_set_widget_ngroups(ctx, widget, groups, ngroups);
+}
+
+void ui_set_widget_ngroups(UiContext *ctx, UIWIDGET widget, const int *groups, size_t ngroups) {
+	if(ngroups > 0) {
+		uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
+		ui_set_enabled(widget, FALSE);
+	}
+}
+
+
+UIEXPORT void ui_set_enabled(UIWIDGET widget, int enabled) {
+	Control ctrl = widget->uielement.as<Control>();
+	if (ctrl) {
+		ctrl.IsEnabled(enabled);
+	}
+}
--- a/ui/winui/toolkit.h	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/toolkit.h	Thu Nov 14 17:25:23 2024 +0100
@@ -66,4 +66,7 @@
 void ui_context_add_widget_destructor(UiContext* ctx, UiWidget* widget);
 void ui_context_add_container_destructor(UiContext* ctx, UiContainer *container);
 
-UiEvent ui_create_int_event(UiObject* obj, int64_t i);
\ No newline at end of file
+UiEvent ui_create_int_event(UiObject* obj, int64_t i);
+
+void ui_set_widget_groups(UiContext *ctx, UIWIDGET widget, const int *groups);
+void ui_set_widget_ngroups(UiContext *ctx, UIWIDGET widget, const int *groups, size_t ngroups);
--- a/ui/winui/winui.vcxproj	Wed Nov 13 22:10:03 2024 +0100
+++ b/ui/winui/winui.vcxproj	Thu Nov 14 17:25:23 2024 +0100
@@ -68,7 +68,7 @@
   <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <LinkIncremental>false</LinkIncremental>
+    <LinkIncremental>true</LinkIncremental>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -91,6 +91,7 @@
       <PreprocessorDefinitions>_DEBUG;DISABLE_XAML_GENERATED_MAIN__;UI_WINUI;UI_WINUI_PCH;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\..\ucx;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdc17</LanguageStandard_C>
+      <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebugDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
       <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">shell32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -98,11 +99,15 @@
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
     <ClCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>DISABLE_XAML_GENERATED_MAIN__;UI_WINUI;UI_WINUI_PCH;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\..\ucx;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <SDLCheck Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</SDLCheck>
+      <LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdc17</LanguageStandard_C>
     </ClCompile>
     <Link>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">shell32.lib;gdi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup Condition="'$(WindowsPackageType)'!='None' and Exists('Package.appxmanifest')">
@@ -171,27 +176,35 @@
   <ItemGroup>
     <ClCompile Include="..\common\context.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\document.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\menu.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\object.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\properties.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\toolbar.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\types.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="..\common\ucx_properties.c">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="appmenu.cpp" />
     <ClCompile Include="button.cpp" />
@@ -272,6 +285,10 @@
     <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
     <IntDir>..\..\build\vs\winui\$(Platform)\$(Configuration)\</IntDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(SolutionDir)..\..\build\vs\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>..\..\build\vs\winui\$(Platform)\$(Configuration)\</IntDir>
+  </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
     <Import Project="..\..\make\vs\packages\Microsoft.WindowsAppSDK.1.5.241001000\build\native\Microsoft.WindowsAppSDK.targets" Condition="Exists('..\..\make\vs\packages\Microsoft.WindowsAppSDK.1.5.241001000\build\native\Microsoft.WindowsAppSDK.targets')" />

mercurial