[0.4.7][SHELL32] Ports from 0.4.8-dev: e.g. Drive Capacity CORE-14201, and Alt+Enter (#155)

This ports back the following master-commits:

0.4.8-dev-1090-g 175e78e50f [SHELL32] Fix COM registration of IShellFolder, IShellLinkA/W, IQueryContinue and IUserNotification classes.
   FTR: usernotification.rgs does not exist yet in releases/0.4.7, therefore left out

0.4.8-dev-670-g 6d9a0d0fd4 [SHELL32] CDrivesFolder: Fix showing the drive capacity. (in MyComputer Details-View) CORE-14201

0.4.8-dev-514-g a3797dba7a [SHELL32] Deduplicate MAX_PROPERTY_SHEET_PAGE and AddPropSheetPageCallback().
   FTR: The original master-commit referenced the unmerged PR179, but that is a wrong linking!

0.4.8-dev-239-g c2bdad2981 [SHELL32] Fix show properties with Alt+Enter (#155)

0.4.8-dev-32-g fe6d46f86e [SHELL32] Properly set case -714 as TBN_DRAGOUT.
   FTR: The original master-commit (erroneously?) referenced PR94, and CORE11799. But those deal with Clang-related changes and do not contain this part (anymore?).

no change in binary size for both compilers in dbg configuration:

releases/0.4.8 RosBEWin2.1.6 GCC4.7.2    dbg x86               8.738.816
releases/0.4.7 RosBEWin2.1.6 GCC4.7.2    dbg x86  8.666.624 -> 8.666.624
releases/0.4.7 RosBEWin2.1.6 MSVC2010SP1 dbg x86  7.455.232 -> 7.455.232
This commit is contained in:
Joachim Henze 2024-02-25 18:07:57 +01:00
parent ec0a98776d
commit 734e4958da
12 changed files with 45 additions and 62 deletions

View file

@ -1492,6 +1492,7 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
case FCIDM_SHVIEW_CUT:
case FCIDM_SHVIEW_COPY:
case FCIDM_SHVIEW_RENAME:
case FCIDM_SHVIEW_PROPERTIES:
return OnExplorerCommand(dwCmdID, TRUE);
case FCIDM_SHVIEW_INSERT:
case FCIDM_SHVIEW_UNDO:

View file

@ -144,7 +144,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
#define SHLINK_LOCAL 0
#define SHLINK_REMOTE 1
#define MAX_PROPERTY_SHEET_PAGE 32
/* link file formats */

View file

@ -20,8 +20,6 @@
#include "precomp.h"
#define MAX_PROPERTY_SHEET_PAGE 32
WINE_DEFAULT_DEBUG_CHANNEL(shell);
typedef struct
@ -108,18 +106,6 @@ GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNum
return TRUE;
}
static BOOL CALLBACK
AddPropSheetPageCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
{
PROPSHEETHEADER *ppsh = (PROPSHEETHEADER *)lParam;
if (ppsh->nPages < MAX_PROPERTY_SHEET_PAGE)
{
ppsh->phpage[ppsh->nPages++] = hPage;
return TRUE;
}
return FALSE;
}
typedef struct _DRIVE_PROP_PAGE
{
LPCSTR resname;

View file

@ -23,8 +23,6 @@
WINE_DEFAULT_DEBUG_CHANNEL (fprop);
#define MAX_PROPERTY_SHEET_PAGE (32)
/// Folder Options:
/// CLASSKEY = HKEY_CLASSES_ROOT\CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
/// DefaultIcon = %SystemRoot%\system32\SHELL32.dll,-210

View file

@ -21,26 +21,10 @@
#include "precomp.h"
#define MAX_PROPERTY_SHEET_PAGE 32
WINE_DEFAULT_DEBUG_CHANNEL(shell);
EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj);
static BOOL CALLBACK
AddPropSheetPageCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
{
PROPSHEETHEADERW *pHeader = (PROPSHEETHEADERW *)lParam;
if (pHeader->nPages < MAX_PROPERTY_SHEET_PAGE)
{
pHeader->phpage[pHeader->nPages++] = hPage;
return TRUE;
}
return FALSE;
}
static UINT
LoadPropSheetHandlers(LPCWSTR pwszPath, PROPSHEETHEADERW *pHeader, UINT cMaxPages, HPSXA *phpsxa, IDataObject *pDataObj)
{

View file

@ -803,7 +803,7 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
if (GetVolumeInformationA(pszDrive, NULL, 0, NULL, NULL, NULL, NULL, 0))
{
GetDiskFreeSpaceExA(pszDrive, &ulFreeBytes, &ulTotalBytes, NULL);
if (iColumn == 2)
if (iColumn == 3)
StrFormatByteSize64A(ulTotalBytes.QuadPart, psd->str.cStr, MAX_PATH);
else
StrFormatByteSize64A(ulFreeBytes.QuadPart, psd->str.cStr, MAX_PATH);

View file

@ -24,8 +24,6 @@
#include <mmsystem.h>
#include <ntquery.h>
#define MAX_PROPERTY_SHEET_PAGE 32
WINE_DEFAULT_DEBUG_CHANNEL(CRecycleBin);
typedef struct

View file

@ -98,6 +98,24 @@ extern const GUID CLSID_UnixDosFolder;
extern const GUID SHELL32_AdvtShortcutProduct;
extern const GUID SHELL32_AdvtShortcutComponent;
#define MAX_PROPERTY_SHEET_PAGE 32
extern inline
BOOL
CALLBACK
AddPropSheetPageCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
{
PROPSHEETHEADERW *pHeader = (PROPSHEETHEADERW *)lParam;
if (pHeader->nPages < MAX_PROPERTY_SHEET_PAGE)
{
pHeader->phpage[pHeader->nPages++] = hPage;
return TRUE;
}
return FALSE;
}
HRESULT WINAPI
Shell_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdtobj);

View file

@ -9,16 +9,16 @@ HKCR
val ThreadingModel = s 'Apartment'
}
}
NoRemove Interface
}
NoRemove Interface
{
ForceRemove {000214E6-0000-0000-C000-000000000046} = s 'IShellFolder'
{
ForceRemove {000214E6-0000-0000-C000-000000000046} = s 'IShellFolder'
NumMethods = s '13'
{
}
ProxyStubClsid32 = s '{bf50b68e-29b8-4386-ae9c-9734d5117cd5}'
{
NumMethods = s '13'
{
}
ProxyStubClsid32 = s '{bf50b68e-29b8-4386-ae9c-9734d5117cd5}'
{
}
}
}
}

View file

@ -19,25 +19,25 @@ HKCR
MayChangeDefaultMenu = s ''
}
}
NoRemove Interface
}
NoRemove Interface
{
ForceRemove {000214EE-0000-0000-C000-000000000046} = s 'IShellLinkA'
{
ForceRemove {000214EE-0000-0000-C000-000000000046} = s 'IShellLinkA'
NumMethods = s '21'
{
NumMethods = s '21'
{
}
ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}'
{
}
}
ForceRemove {000214F9-0000-0000-C000-000000000046} = s 'IShellLinkW'
ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}'
{
}
}
ForceRemove {000214F9-0000-0000-C000-000000000046} = s 'IShellLinkW'
{
NumMethods = s '21'
{
}
ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}'
{
NumMethods = s '21'
{
}
ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}'
{
}
}
}
}

View file

@ -34,7 +34,7 @@ BEGIN
VK_DELETE, FCIDM_SHVIEW_DELETE, VIRTKEY
VK_DELETE, FCIDM_SHVIEW_DELETE, VIRTKEY, SHIFT
VK_F2, FCIDM_SHVIEW_RENAME, VIRTKEY
VK_RETURN, FCIDM_SHVIEW_OPEN, VIRTKEY, ALT
VK_RETURN, FCIDM_SHVIEW_PROPERTIES, VIRTKEY, ALT
"X", FCIDM_SHVIEW_CUT, VIRTKEY, CONTROL
"C", FCIDM_SHVIEW_COPY, VIRTKEY, CONTROL
VK_INSERT, FCIDM_SHVIEW_COPY, VIRTKEY, CONTROL

View file

@ -105,8 +105,7 @@ HRESULT CMenuToolbarBase::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
case NM_TOOLTIPSCREATED:
break;
// Unknown
case -714: return S_FALSE;
case TBN_DRAGOUT: return S_FALSE;
default:
TRACE("WM_NOTIFY unknown code %d, %d\n", hdr->code, hdr->idFrom);