[SHELL32] File Types dialog: Add functionality, optimize loading time (#6122)

- Support loading protocols like XP
- Support most of the relevant EditFlags
- Support reading/writing the AlwaysShowExt and BrowserFlags properties
- Loads the list much faster with optimized code and delaying the large icon and description string
- Reduce the number of magic buffer sizes by replacing them with defines that are in the ballpark of being correct
- Implemented column sorting
- Removed custom icon extraction code
- Removed IDS_FILE_EXT_TYPE string because it must be the same as IDS_ANY_FILE
- Don't touch verb keys that are not edited to retain the original REG type
- Don't clobber unchanged %1 icon location when editing a type

CORE-19756
This commit is contained in:
Whindmar Saksit 2024-10-14 18:03:28 +02:00 committed by GitHub
parent 798ea90784
commit 43d07fe695
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
42 changed files with 824 additions and 700 deletions

View file

@ -644,6 +644,32 @@ typedef enum
ASSOCENUM_NONE
} ASSOCENUM;
typedef enum
{
FTA_None = 0x00000000,
FTA_Exclude = 0x00000001,
FTA_Show = 0x00000002,
FTA_HasExtension = 0x00000004,
FTA_NoEdit = 0x00000008,
FTA_NoRemove = 0x00000010,
FTA_NoNewVerb = 0x00000020,
FTA_NoEditVerb = 0x00000040,
FTA_NoRemoveVerb = 0x00000080,
FTA_NoEditDesc = 0x00000100,
FTA_NoEditIcon = 0x00000200,
FTA_NoEditDflt = 0x00000400,
FTA_NoEditVerbCmd = 0x00000800,
FTA_NoEditVerbExe = 0x00001000,
FTA_NoDDE = 0x00002000,
FTA_NoEditMIME = 0x00008000,
FTA_OpenIsSafe = 0x00010000,
FTA_AlwaysUnsafe = 0x00020000,
FTA_NoRecentDocs = 0x00100000,
FTA_SafeForElevation = 0x00200000, /* Win8+ */
FTA_AlwaysUseDirectInvoke = 0x00400000 /* Win8+ */
} FILETYPEATTRIBUTEFLAGS;
DEFINE_ENUM_FLAG_OPERATORS(FILETYPEATTRIBUTEFLAGS)
typedef struct IQueryAssociations *LPQUERYASSOCIATIONS;
#define INTERFACE IQueryAssociations