- Allow creating a copy of a file residing in the same directory

- Free the correct the buffer 
- Romanian language needs to be updated
See issue #4846 for more details.

svn path=/trunk/; revision=43070
This commit is contained in:
Johannes Anderwald 2009-09-18 00:48:47 +00:00
parent 885d8e0656
commit 8c36300c0b
34 changed files with 87 additions and 13 deletions

View file

@ -749,6 +749,7 @@ BEGIN
IDS_INSTALLNEWFONT "Слагане на нов шрифт..." IDS_INSTALLNEWFONT "Слагане на нов шрифт..."
IDS_DEFAULT_CLUSTER_SIZE "Подразбиран разпределителен размер" IDS_DEFAULT_CLUSTER_SIZE "Подразбиран разпределителен размер"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -749,4 +749,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -737,4 +737,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -752,4 +752,5 @@ BEGIN
IDS_INSTALLNEWFONT "Neue Schriftart installieren..." IDS_INSTALLNEWFONT "Neue Schriftart installieren..."
IDS_DEFAULT_CLUSTER_SIZE "Standardgröße" IDS_DEFAULT_CLUSTER_SIZE "Standardgröße"
IDS_COPY_OF "Kopie von"
END END

View file

@ -749,4 +749,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -751,4 +751,5 @@ BEGIN
IDS_INSTALLNEWFONT "Instalar Nueva Fuente..." IDS_INSTALLNEWFONT "Instalar Nueva Fuente..."
IDS_DEFAULT_CLUSTER_SIZE "Tamaño asignado por defecto" IDS_DEFAULT_CLUSTER_SIZE "Tamaño asignado por defecto"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -752,4 +752,5 @@ BEGIN
IDS_INSTALLNEWFONT "Installer une nouvelle police..." IDS_INSTALLNEWFONT "Installer une nouvelle police..."
IDS_DEFAULT_CLUSTER_SIZE "Taille d'allocation par défaut" IDS_DEFAULT_CLUSTER_SIZE "Taille d'allocation par défaut"
IDS_COPY_OF "Copy of"
END END

View file

@ -751,4 +751,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -749,4 +749,5 @@ BEGIN
IDS_INSTALLNEWFONT "Installazione nuovi Font..." IDS_INSTALLNEWFONT "Installazione nuovi Font..."
IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione" IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione"
IDS_COPY_OF "Copy of"
END END

View file

@ -749,4 +749,5 @@ BEGIN
IDS_INSTALLNEWFONT "新しいフォントのインストール..." IDS_INSTALLNEWFONT "新しいフォントのインストール..."
IDS_DEFAULT_CLUSTER_SIZE "デフォルト アロケーション サイズ" IDS_DEFAULT_CLUSTER_SIZE "デフォルト アロケーション サイズ"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -751,5 +751,5 @@ BEGIN
IDS_INSTALLNEWFONT "Installere nye skrifttyper..." IDS_INSTALLNEWFONT "Installere nye skrifttyper..."
IDS_DEFAULT_CLUSTER_SIZE "Standard tildelingsstørrelse" IDS_DEFAULT_CLUSTER_SIZE "Standard tildelingsstørrelse"
IDS_COPY_OF "Copy of"
END END

View file

@ -755,4 +755,5 @@ BEGIN
IDS_INSTALLNEWFONT "Zainstaluj Now¹ Czcionkê..." IDS_INSTALLNEWFONT "Zainstaluj Now¹ Czcionkê..."
IDS_DEFAULT_CLUSTER_SIZE "Domyœlny rozmiar jednostki alokacji" IDS_DEFAULT_CLUSTER_SIZE "Domyœlny rozmiar jednostki alokacji"
IDS_COPY_OF "Copy of"
END END

View file

@ -750,4 +750,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -750,4 +750,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -747,4 +747,5 @@ BEGIN
IDS_INSTALLNEWFONT "Óñòàíîâèòü íîâûé øðèôò..." IDS_INSTALLNEWFONT "Óñòàíîâèòü íîâûé øðèôò..."
IDS_DEFAULT_CLUSTER_SIZE "Âûäåëÿåìûé ïî óìîë÷àíèþ ðàçìåð" IDS_DEFAULT_CLUSTER_SIZE "Âûäåëÿåìûé ïî óìîë÷àíèþ ðàçìåð"
IDS_COPY_OF "Copy of"
END END

View file

@ -754,4 +754,5 @@ BEGIN
IDS_INSTALLNEWFONT "&Nainštalova<76> nové písmo..." IDS_INSTALLNEWFONT "&Nainštalova<76> nové písmo..."
IDS_DEFAULT_CLUSTER_SIZE "Predvolená alokaèná ve¾kos<6F>" //Default allocation size IDS_DEFAULT_CLUSTER_SIZE "Predvolená alokaèná ve¾kos<6F>" //Default allocation size
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -748,4 +748,5 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -749,4 +749,5 @@ BEGIN
IDS_INSTALLNEWFONT "²íñòàëþâàòè íîâèé øðèôò..." IDS_INSTALLNEWFONT "²íñòàëþâàòè íîâèé øðèôò..."
IDS_DEFAULT_CLUSTER_SIZE "Ðîçì³ð êëàñòåðà çà ïðîìîâ÷àííÿì" IDS_DEFAULT_CLUSTER_SIZE "Ðîçì³ð êëàñòåðà çà ïðîìîâ÷àííÿì"
IDS_COPY_OF "Copy of"
END END

View file

@ -736,5 +736,6 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END

View file

@ -749,7 +749,7 @@ BEGIN
IDS_INSTALLNEWFONT "Install New Font..." IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
IDS_COPY_OF "Copy of"
END END
#pragma code_page(default) #pragma code_page(default)

View file

@ -60,6 +60,7 @@
#include "version.h" #include "version.h"
#include "shellfolder.h" #include "shellfolder.h"
#include "xdg.h" #include "xdg.h"
#include "shellapi.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "wine/unicode.h" #include "wine/unicode.h"

View file

@ -1289,8 +1289,8 @@ ISF_Desktop_ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UI
WCHAR szTargetPath[MAX_PATH]; WCHAR szTargetPath[MAX_PATH];
SHFILEOPSTRUCTW op; SHFILEOPSTRUCTW op;
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList; LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList, pszFileName;
int res; int res, length;
STRRET strRet; STRRET strRet;
IGenericSFImpl *This = impl_from_ISFHelper(iface); IGenericSFImpl *This = impl_from_ISFHelper(iface);
@ -1377,8 +1377,28 @@ ISF_Desktop_ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UI
res = SHFileOperationW(&op); res = SHFileOperationW(&op);
HeapFree(GetProcessHeap(), 0, pszSrc); if (res == DE_SAMEFILE)
HeapFree(GetProcessHeap(), 0, pszTarget); {
length = wcslen(szTargetPath);
pszFileName = wcsrchr(pszSrcList, '\\');
pszFileName++;
if (LoadStringW(shell32_hInstance, IDS_COPY_FROM, pszTarget, MAX_PATH - length))
{
wcscat(szTargetPath, L" ");
}
wcscat(szTargetPath, pszFileName);
op.pTo = szTargetPath;
res = SHFileOperationW(&op);
}
HeapFree(GetProcessHeap(), 0, pszSrcList);
HeapFree(GetProcessHeap(), 0, pszTargetList);
if (res) if (res)
return E_FAIL; return E_FAIL;

View file

@ -1260,16 +1260,17 @@ ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UINT cidl,
WCHAR szTargetPath[MAX_PATH]; WCHAR szTargetPath[MAX_PATH];
SHFILEOPSTRUCTW op; SHFILEOPSTRUCTW op;
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList; LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList, pszFileName;
int res; int res, length;
HRESULT hr;
STRRET strRet; STRRET strRet;
IGenericSFImpl *This = impl_from_ISFHelper(iface); IGenericSFImpl *This = impl_from_ISFHelper(iface);
TRACE ("(%p)->(%p,%u,%p)\n", This, pSFFrom, cidl, apidl); TRACE ("(%p)->(%p,%u,%p)\n", This, pSFFrom, cidl, apidl);
IShellFolder_QueryInterface (pSFFrom, &IID_IPersistFolder2, (LPVOID *) & ppf2); hr = IShellFolder_QueryInterface (pSFFrom, &IID_IPersistFolder2, (LPVOID *) & ppf2);
if (ppf2) if (SUCCEEDED(hr))
{ {
if (FAILED(IPersistFolder2_GetCurFolder (ppf2, &pidl))) if (FAILED(IPersistFolder2_GetCurFolder (ppf2, &pidl)))
{ {
@ -1349,8 +1350,26 @@ ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UINT cidl,
res = SHFileOperationW(&op); res = SHFileOperationW(&op);
HeapFree(GetProcessHeap(), 0, pszSrc); if (res == DE_SAMEFILE)
HeapFree(GetProcessHeap(), 0, pszTarget); {
length = wcslen(szTargetPath);
pszFileName = wcsrchr(pszSrcList, '\\');
pszFileName++;
if (LoadStringW(shell32_hInstance, IDS_COPY_FROM, pszTarget, MAX_PATH - length))
{
wcscat(szTargetPath, L" ");
}
wcscat(szTargetPath, pszFileName);
op.pTo = szTargetPath;
res = SHFileOperationW(&op);
}
HeapFree(GetProcessHeap(), 0, pszSrcList);
HeapFree(GetProcessHeap(), 0, pszTargetList);
if (res) if (res)
return E_FAIL; return E_FAIL;

View file

@ -168,6 +168,7 @@
#define IDS_RENAME 328 #define IDS_RENAME 328
#define IDS_INSERT 329 #define IDS_INSERT 329
#define IDS_DESCRIPTION 330 #define IDS_DESCRIPTION 330
#define IDS_COPY_OF 331
/* Note: this string is referenced from the registry */ /* Note: this string is referenced from the registry */
#define IDS_RECYCLEBIN_FOLDER_NAME 8964 #define IDS_RECYCLEBIN_FOLDER_NAME 8964

View file

@ -1052,7 +1052,12 @@ DoPaste(
return E_FAIL; return E_FAIL;
} }
if (FAILED(IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom))) if (_ILIsDesktop(pidl))
{
/* use desktop shellfolder */
psfFrom = psfDesktop;
}
else if (FAILED(IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom)))
{ {
ERR("no IShellFolder\n"); ERR("no IShellFolder\n");

View file

@ -81,6 +81,8 @@ BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
#define RFF_NOLABEL 0x08 #define RFF_NOLABEL 0x08
#define RFF_NOSEPARATEMEM 0x20 /* NT only */ #define RFF_NOSEPARATEMEM 0x20 /* NT only */
#define DE_SAMEFILE 0x71
/* RunFileFlg notification structure */ /* RunFileFlg notification structure */
typedef struct typedef struct
{ {