If you apply the attached patch and import the attached registry file (which 
registers a junction point for the unixfs shell namespace extension), you can 
select and open files from the unix filesystem in notepad (The file has to be 
accessible by a drive letter based wine path though). 

In retrospect this is not as surprising as I first thought. If I pay for some 
beer, perhaps at wineconf someone can give me some insight on the unix path 
<-> wine path conversion magic ;)

Bye,
-- 
Michael Jung
[EMAIL PROTECTED]
Index: dlls/shell32/pidl.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/pidl.c,v
retrieving revision 1.129
diff -u -p -r1.129 pidl.c
--- dlls/shell32/pidl.c	13 Apr 2005 14:39:27 -0000	1.129
+++ dlls/shell32/pidl.c	26 Apr 2005 22:21:24 -0000
@@ -1328,8 +1328,32 @@ HRESULT SHELL_GetPathFromIDListW(LPCITEM
     HRESULT hr = S_OK;
     UINT len;
 
+	IShellFolder *pDesktop;
+	STRRET strPath;
+	WCHAR *pwszPath;
+
     pszPath[0]=0;
+	
+	/* Push the pidl to path conversion logic into shellfolder */	
+	hr = SHGetDesktopFolder(&pDesktop);
+	if (!SUCCEEDED(hr)) return hr;
+	hr = IShellFolder_GetDisplayNameOf(pDesktop, pidl, SHGDN_FORPARSING, &strPath);
+	IShellFolder_Release(pDesktop);
+	if (!SUCCEEDED(hr)) return hr;
+	hr = StrRetToStrW(&strPath, pidl, &pwszPath);
+	if (!SUCCEEDED(hr)) return hr;
+	if (lstrlenW(pwszPath)+1 > uOutSize) {
+		CoTaskMemFree(pszPath);
+		return E_INVALIDARG;
+	}
+	lstrcpyW(pszPath, pwszPath);
+	CoTaskMemFree(pszPath);
+	return S_OK;
 
+#if 0
+	
+    pszPath[0]=0;
+	
     /* One case is a PIDL rooted at desktop level */
     if (_ILIsValue(pidl) || _ILIsFolder(pidl))
     {
@@ -1401,6 +1425,7 @@ HRESULT SHELL_GetPathFromIDListW(LPCITEM
 
     TRACE_(shell)("-- %s, 0x%08lx\n", debugstr_w(pszPath), hr);
     return hr;
+#endif
 }
 
 /*************************************************************************
Index: programs/notepad/dialog.c
===================================================================
RCS file: /home/wine/wine/programs/notepad/dialog.c,v
retrieving revision 1.29
diff -u -p -r1.29 dialog.c
--- programs/notepad/dialog.c	14 Feb 2005 11:51:27 -0000	1.29
+++ programs/notepad/dialog.c	26 Apr 2005 22:21:38 -0000
@@ -303,8 +303,7 @@ VOID DIALOG_FileOpen(VOID)
     openfilename.lpstrFile         = szPath;
     openfilename.nMaxFile          = SIZEOF(szPath);
     openfilename.lpstrInitialDir   = szDir;
-    openfilename.Flags             = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST |
-        OFN_HIDEREADONLY;
+	openfilename.Flags             = OFN_NOVALIDATE;
     openfilename.lpstrDefExt       = szDefaultExt;
 
 
REGEDIT4

[HKEY_LOCAL_MACHINE]

[HKEY_LOCAL_MACHINE\Software]

[HKEY_LOCAL_MACHINE\Software\Microsoft]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace\{CC702EB2-7DC5-11D9-C687-0004238A01CD}]
@="My Unix Filesystem"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellExtensions]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellExtensions\Approved]
"{CC702EB2-7DC5-11D9-C687-0004238A01CD}"="My UNIX Filesystem"

Reply via email to