Shell Patch part II

Filip Navara <xnavara-VIXq6x/[email protected]> Sun, 04 Jan 2004 12:54:38 +0100
Newsgroups gmane.comp.gnu.mingw.patches
Message-ID <[email protected]>
2004-01-04  Filip Navara  <xnavara-VIXq6x/[email protected]>

    * include/cpl.h (CPL_STARTWPARMS[AW]): Correct.
    * include/shellapi.h (ABS_AUTOHIDE, ABS_ALWAYSONTOP,
    SEE_MASK_NO_CONSOLE, SEE_MASK_ASYNCOK, SEE_MASK_HMONITOR,
    FOF_NOCOPYSECURITYATTRIBS): Add define.
    * include/shlobj.h (BFFM_SETOKTEXT, BFFM_SETEXPANDED,
    CSIDL_FLAG_DONT_VERIFY, CSIDL_FLAG_CREATE, CSIDL_FLAG_MASK,
    CFSTR_INETURL[AW], SHGDN_FOREDITING, SHGDN_FORADDRESSBAR,
    SSF_*): Add define.
    (SHCNF_PATH[AW], SHCNF_PRINTER[AW], CFSTR_FILENAME[AW],
    CFSTR_FILENAMEMAP[AW], CFSTR_FILEDESCRIPTOR[AW], CFSTR_SHELLURL,
    CMDSTR_NEWFOLDER[AW], CMDSTR_VIEWLIST[AW], CMDSTR_VIEWDETAILS[AW]):
    Correct.
    (IEnumIDList): Add COBJMACROS.
    * include/winuser.h (MIM_*): Add define.
shell2.diff (text/plain, 7.7 KB)
--- include/cpl.h	Sat Mar  9 09:04:08 2002
+++ include/cpl.h	Sun Jan  4 11:33:51 2004
@@ -18,7 +18,8 @@
 #define CPL_STOP 6
 #define CPL_EXIT 7
 #define CPL_NEWINQUIRE 8
-#define CPL_STARTWPARMS 9
+#define CPL_STARTWPARMSA 9
+#define CPL_STARTWPARMSW 10
 #define CPL_SETUP 200
 typedef LONG(APIENTRY *APPLET_PROC)(HWND,UINT,LONG,LONG);
 typedef struct tagCPLINFO {
@@ -48,8 +49,10 @@
 	WCHAR szHelpFile[128];
 } NEWCPLINFOW,*LPNEWCPLINFOW;
 #ifdef UNICODE
+#define CPL_STARTWPARMS CPL_STARTWPARMSW
 typedef NEWCPLINFOW NEWCPLINFO,*LPNEWCPLINFO;
 #else
+#define CPL_STARTWPARMS CPL_STARTWPARMSA
 typedef NEWCPLINFOA NEWCPLINFO,*LPNEWCPLINFO;
 #endif
 #ifdef __cplusplus
--- include/shellapi.h	Thu Jul 31 04:40:40 2003
+++ include/shellapi.h	Sun Jan  4 11:14:31 2004
@@ -12,18 +12,23 @@
 #define ABE_TOP	1
 #define ABE_RIGHT	2
 #define ABE_BOTTOM	3
+#define ABS_AUTOHIDE	1
+#define ABS_ALWAYSONTOP	2
 #define SEE_MASK_CLASSNAME	1
 #define SEE_MASK_CLASSKEY	3
 #define SEE_MASK_IDLIST	4
 #define SEE_MASK_INVOKEIDLIST   12
-#define SEE_MASK_ICON	16
-#define SEE_MASK_HOTKEY	32
-#define SEE_MASK_NOCLOSEPROCESS	64
-#define SEE_MASK_CONNECTNETDRV	128
-#define SEE_MASK_FLAG_DDEWAIT	256
-#define SEE_MASK_DOENVSUBST	512
-#define SEE_MASK_FLAG_NO_UI	1024
-#define SEE_MASK_UNICODE	65536
+#define SEE_MASK_ICON	0x10
+#define SEE_MASK_HOTKEY	0x20
+#define SEE_MASK_NOCLOSEPROCESS	0x40
+#define SEE_MASK_CONNECTNETDRV	0x80
+#define SEE_MASK_FLAG_DDEWAIT	0x100
+#define SEE_MASK_DOENVSUBST	0x200
+#define SEE_MASK_FLAG_NO_UI	0x400
+#define SEE_MASK_NO_CONSOLE	0x8000
+#define SEE_MASK_UNICODE	0x10000
+#define SEE_MASK_ASYNCOK	0x100000
+#define SEE_MASK_HMONITOR	0x200000
 #define ABM_NEW	0
 #define ABM_REMOVE	1
 #define ABM_QUERYPOS	2
@@ -70,6 +75,7 @@
 #define FOF_SIMPLEPROGRESS	256
 #define FOF_NOCONFIRMMKDIR	512
 #define FOF_NOERRORUI	1024
+#define FOF_NOCOPYSECURITYATTRIBS	2048
 #define PO_DELETE 19
 #define PO_RENAME 20
 #define PO_PORTCHANGE 32
--- include/shlobj.h	Thu Jan  1 22:42:30 2004
+++ include/shlobj.h	Sun Jan  4 11:08:52 2004
@@ -36,6 +36,8 @@
 #define BFFM_ENABLEOK (WM_USER + 101)
 #define BFFM_SETSELECTIONA (WM_USER + 102)
 #define BFFM_SETSELECTIONW (WM_USER + 103)
+#define BFFM_SETOKTEXT (WM_USER + 105)
+#define BFFM_SETEXPANDED (WM_USER + 106)
 #ifdef UNICODE
 #define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTW
 #define BFFM_SETSELECTION   BFFM_SETSELECTIONW
@@ -73,12 +75,21 @@
 #define SHCNE_ALLEVENTS	0x7FFFFFFF
 #define SHCNE_INTERRUPT	0x80000000
 #define SHCNF_IDLIST	0
-#define SHCNF_PATH	1
-#define SHCNF_PRINTER	2
+#define SHCNF_PATHA	1
+#define SHCNF_PRINTERA	2
 #define SHCNF_DWORD	3
+#define SHCNF_PATHW	5
+#define SHCNF_PRINTERW	6
 #define SHCNF_TYPE	0xFF
 #define SHCNF_FLUSH	0x1000
 #define SHCNF_FLUSHNOWAIT	0x2000
+#ifdef UNICODE
+#define SHCNF_PATH      SHCNF_PATHW
+#define SHCNF_PRINTER   SHCNF_PRINTERW
+#else
+#define SHCNF_PATH      SHCNF_PATHA
+#define SHCNF_PRINTER   SHCNF_PRINTERA
+#endif
 #define SFGAO_CANCOPY	DROPEFFECT_COPY
 #define SFGAO_CANMOVE	DROPEFFECT_MOVE
 #define SFGAO_CANLINK	DROPEFFECT_LINK
@@ -182,20 +193,32 @@
 #define CSIDL_COMMON_OEM_LINKS	58
 #define CSIDL_CDBURN_AREA	59
 #define CSIDL_COMPUTERSNEARME	61
+#define CSIDL_FLAG_DONT_VERIFY	0x4000
+#define CSIDL_FLAG_CREATE	0x8000
+#define CSIDL_FLAG_MASK	0xFF00
 #define CFSTR_SHELLIDLIST	TEXT("Shell IDList Array")
 #define CFSTR_SHELLIDLISTOFFSET	TEXT("Shell Object Offsets")
 #define CFSTR_NETRESOURCES	TEXT("Net Resource")
 #define CFSTR_FILECONTENTS	TEXT("FileContents")
+#define CFSTR_FILENAMEA		TEXT("FileName")
+#define CFSTR_FILENAMEMAPA	TEXT("FileNameMap")
+#define CFSTR_FILEDESCRIPTORA	TEXT("FileGroupDescriptor")
+#define CFSTR_INETURLA		TEXT("UniformResourceLocator")
+#define CFSTR_SHELLURL		CFSTR_INETURLA
+#define CFSTR_FILENAMEW		TEXT("FileNameW")
+#define CFSTR_FILENAMEMAPW	TEXT("FileNameMapW")
+#define CFSTR_FILEDESCRIPTORW	TEXT("FileGroupDescriptorW")
+#define CFSTR_INETURLW		TEXT("UniformResourceLocatorW")
 #ifdef UNICODE
-#define CFSTR_FILENAME		L"FileNameW"
-#define CFSTR_FILENAMEMAP	L"FileNameMapW"
-#define CFSTR_FILEDESCRIPTOR	L"FileGroupDescriptorW"
-#define CFSTR_SHELLURL		L"UniformResourceLocatorW"
+#define CFSTR_FILENAME		CFSTR_FILENAMEW
+#define CFSTR_FILENAMEMAP	CFSTR_FILENAMEMAPW
+#define CFSTR_FILEDESCRIPTOR	CFSTR_FILEDESCRIPTORW
+#define CFSTR_INETURL		CFSTR_INETURLW
 #else
-#define CFSTR_FILENAME		"FileName"
-#define CFSTR_FILENAMEMAP	"FileNameMap"
-#define CFSTR_FILEDESCRIPTOR	"FileGroupDescriptor"
-#define CFSTR_SHELLURL		"UniformResourceLocator"
+#define CFSTR_FILENAME		CFSTR_FILENAMEA
+#define CFSTR_FILENAMEMAP	CFSTR_FILENAMEMAPA
+#define CFSTR_FILEDESCRIPTOR	CFSTR_FILEDESCRIPTORA
+#define CFSTR_INETURL		CFSTR_INETURLA
 #endif
 #define CFSTR_PRINTERGROUP	TEXT("PrinterFriendlyName")
 #define CFSTR_INDRAGLOOP	TEXT("InShellDragLoop")
@@ -227,9 +253,21 @@
 #define GCS_HELPTEXT    GCS_HELPTEXTA
 #define GCS_VALIDATE    GCS_VALIDATEA
 #endif
-#define CMDSTR_NEWFOLDER	TEXT("NewFolder")
-#define CMDSTR_VIEWLIST		TEXT("ViewList")
-#define CMDSTR_VIEWDETAILS	TEXT("ViewDetails")
+#define CMDSTR_NEWFOLDERA	"NewFolder"
+#define CMDSTR_VIEWLISTA	"ViewList"
+#define CMDSTR_VIEWDETAILSA	"ViewDetails"
+#define CMDSTR_NEWFOLDERW	L"NewFolder"
+#define CMDSTR_VIEWLISTW	L"ViewList"
+#define CMDSTR_VIEWDETAILSW	L"ViewDetails"
+#ifdef UNICODE
+#define CMDSTR_NEWFOLDER	CMDSTR_NEWFOLDERW
+#define CMDSTR_VIEWLIST		CMDSTR_VIEWLISTW
+#define CMDSTR_VIEWDETAILS	CMDSTR_VIEWDETAILSW
+#else
+#define CMDSTR_NEWFOLDER	CMDSTR_NEWFOLDER
+#define CMDSTR_VIEWLIST		CMDSTR_VIEWLIST
+#define CMDSTR_VIEWDETAILS	CMDSTR_VIEWDETAILS
+#endif
 #define CMIC_MASK_HOTKEY	SEE_MASK_HOTKEY
 #define CMIC_MASK_ICON	SEE_MASK_ICON
 #define CMIC_MASK_FLAG_NO_UI	SEE_MASK_FLAG_NO_UI
@@ -355,6 +393,8 @@
 typedef enum tagSHGDN {
 	SHGDN_NORMAL=0,
 	SHGDN_INFOLDER,
+	SHGDN_FOREDITING=0x1000,
+	SHGDN_FORADDRESSBAR=0x4000,
 	SHGDN_FORPARSING=0x8000
 } SHGNO;
 typedef enum tagSHCONTF {
@@ -453,6 +493,16 @@
 DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
 typedef IEnumIDList *LPENUMIDLIST;
 
+#ifdef COBJMACROS
+#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
+#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
+#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
+#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
+#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
+#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
+#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
+#endif
+
 #undef INTERFACE
 #define INTERFACE IContextMenu
 DECLARE_INTERFACE_(IContextMenu,IUnknown)
@@ -942,8 +992,22 @@
 	UINT fRestFlags : 3;
 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
 
+#define SSF_SHOWALLOBJECTS 0x1
+#define SSF_SHOWEXTENSIONS 0x2
+#define SSF_SHOWCOMPCOLOR 0x8
+#define SSF_SHOWSYSFILES 0x20
+#define SSF_DOUBLECLICKINWEBVIEW 0x80
+#define SSF_SHOWATTRIBCOL 0x100
+#define SSF_DESKTOPHTML 0x200
+#define SSF_WIN95CLASSIC 0x400
+#define SSF_DONTPRETTYPATH 0x800
+#define SSF_MAPNETDRVBUTTON 0x1000
+#define SSF_SHOWINFOTIP 0x2000
+#define SSF_HIDEICONS 0x4000
+#define SSF_NOCONFIRMRECYCLE 0x8000
+
 #undef  INTERFACE
-#define INTERFACE   IShellIconOverlayIdentifier
+#define INTERFACE IShellIconOverlayIdentifier
 DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
 {
 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
@@ -956,7 +1020,6 @@
 
 #define ISIOI_ICONFILE 0x00000001
 #define ISIOI_ICONINDEX 0x00000002
-
 
 #if (_WIN32_WINNT >= 0x0500) /* W2K */
 typedef struct {
--- include/winuser.h	Mon Dec  8 22:41:44 2003
+++ include/winuser.h	Sun Jan  4 11:35:04 2004
@@ -641,6 +641,14 @@
 #define MIIM_STRING 64
 #define MIIM_BITMAP 128
 #define MIIM_FTYPE 256
+#if (WINVER >= 0x500)
+#define MIM_MAXHEIGHT 1
+#define MIM_BACKGROUND 2
+#define MIM_HELPID 4
+#define MIM_MENUDATA 8
+#define MIM_STYLE 16
+#define MIM_APPLYTOSUBMENUS 0x80000000L
+#endif
 #define MFT_BITMAP 4
 #define MFT_MENUBARBREAK 32
 #define MFT_MENUBREAK 64