Added patch to fix SHFileOperation with FO_MOVE on Vista+ (should create non-existent subdirectories).

This commit is contained in:
Sebastian Lackner
2015-08-31 08:49:30 +02:00
parent 51d7077f51
commit 9d4b8df3cc
9 changed files with 116 additions and 26 deletions

View File

@@ -1,4 +1,4 @@
From 950a0c1fd7d57bf0724135e3ffd7848182df59ee Mon Sep 17 00:00:00 2001
From 80c21a616ab5a8ededa1ac516722023f0922a072 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 26 Feb 2015 23:21:26 +0100
Subject: shell32: Pass FILE_INFORMATION into SHNotify* functions.
@@ -9,7 +9,7 @@ Preparation of the progressbar work. Based on a patch by Huw Campbell.
1 file changed, 98 insertions(+), 103 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 08a0515..665e74c 100644
index d73ee94..d1f9cf8 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -59,16 +59,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
@@ -398,7 +398,7 @@ index 08a0515..665e74c 100644
-static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const FILE_LIST *flTo)
+static DWORD move_files(FILE_OPERATION *op, BOOL multidest, const FILE_LIST *flFrom, const FILE_LIST *flTo)
{
DWORD i;
DWORD i, ret;
INT mismatched = 0;
@@ -1412,14 +1409,12 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!flTo->dwNumFiles)
@@ -417,16 +417,16 @@ index 08a0515..665e74c 100644
flFrom->dwNumFiles > flTo->dwNumFiles)
{
return ERROR_CANCELLED;
@@ -1428,7 +1423,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
return ERROR_CANCELLED;
@@ -1432,7 +1427,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
return ret;
}
- if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
+ if (multidest)
mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;
fileDest = &flTo->feFiles[0];
@@ -1439,7 +1434,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1443,7 +1438,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!PathFileExistsW(fileDest->szDirectory))
return ERROR_CANCELLED;
@@ -435,7 +435,7 @@ index 08a0515..665e74c 100644
{
if (i >= flTo->dwNumFiles)
break;
@@ -1453,9 +1448,9 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1457,9 +1452,9 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
}
if (fileDest->bExists && IsAttribDir(fileDest->attributes))
@@ -447,7 +447,7 @@ index 08a0515..665e74c 100644
}
if (mismatched > 0)
@@ -1470,7 +1465,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1474,7 +1469,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
}
/* the FO_RENAME files */
@@ -456,7 +456,7 @@ index 08a0515..665e74c 100644
{
const FILE_ENTRY *feFrom;
const FILE_ENTRY *feTo;
@@ -1492,7 +1487,7 @@ static DWORD rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
@@ -1496,7 +1491,7 @@ static DWORD rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
if (feTo->bExists)
return ERROR_ALREADY_EXISTS;
@@ -465,7 +465,7 @@ index 08a0515..665e74c 100644
}
/* alert the user if an unsupported flag is used */
@@ -1539,16 +1534,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1543,16 +1538,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
switch (lpFileOp->wFunc)
{
case FO_COPY:
@@ -487,5 +487,5 @@ index 08a0515..665e74c 100644
default:
ret = ERROR_INVALID_PARAMETER;
--
2.3.2
2.5.0

View File

@@ -1,2 +1,3 @@
Fixes: Support for shell32 file operation progress dialog
Depends: kernel32-CopyFileEx
Depends: shell32-SHFileOperation_Move