Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
93e99127
Commit
93e99127
authored
Feb 26, 2000
by
Juergen Schmied
Committed by
Alexandre Julliard
Feb 26, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved file functions to shlfileop.c
New SHELL_DeleteDirectoryA Use shell notifications. Enabled file manipulation functions.
parent
d52e0478
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
265 additions
and
70 deletions
+265
-70
pidl.h
dlls/shell32/pidl.h
+5
-2
shlfileop.c
dlls/shell32/shlfileop.c
+81
-1
shlfolder.c
dlls/shell32/shlfolder.c
+12
-7
shlmenu.c
dlls/shell32/shlmenu.c
+1
-1
shlview.c
dlls/shell32/shlview.c
+158
-38
shlwapi.spec
dlls/shell32/shlwapi.spec
+4
-4
shv_bg_cmenu.c
dlls/shell32/shv_bg_cmenu.c
+0
-1
shv_item_cmenu.c
dlls/shell32/shv_item_cmenu.c
+4
-16
No files found.
dlls/shell32/pidl.h
View file @
93e99127
...
...
@@ -7,8 +7,11 @@
* The contents of a pidl should never used from a application
* directly.
*
* This stuff is used from SHGetFileAttributes, ShellFolder
* EnumIDList and ShellView.
* Undocumented:
* MS says: the abID of SHITEMID should be treated as binary data and not
* be interpreted by applications. Applies to everyone but MS itself.
* Word95 interprets the contents of abID (Filesize/Date) so we have to go
* for binary compatibility here.
*/
#ifndef __WINE_PIDL_H
...
...
dlls/shell32/shlfileop.c
View file @
93e99127
...
...
@@ -7,8 +7,89 @@
#include "shell32_main.h"
#include "winversion.h"
#include "shlobj.h"
DEFAULT_DEBUG_CHANNEL
(
shell
);
/**************************************************************************
* SHELL_DeleteDirectoryA()
*
* like rm -r
*/
BOOL
SHELL_DeleteDirectoryA
(
LPCSTR
pszDir
)
{
BOOL
ret
=
FALSE
;
HANDLE
hFind
;
WIN32_FIND_DATAA
wfd
;
char
szTemp
[
MAX_PATH
];
strcpy
(
szTemp
,
pszDir
);
PathAddBackslashA
(
szTemp
);
strcat
(
szTemp
,
"*.*"
);
if
(
INVALID_HANDLE_VALUE
!=
(
hFind
=
FindFirstFileA
(
szTemp
,
&
wfd
)))
{
do
{
if
(
strcasecmp
(
wfd
.
cFileName
,
"."
)
&&
strcasecmp
(
wfd
.
cFileName
,
".."
))
{
strcpy
(
szTemp
,
pszDir
);
PathAddBackslashA
(
szTemp
);
strcat
(
szTemp
,
wfd
.
cFileName
);
if
(
FILE_ATTRIBUTE_DIRECTORY
&
wfd
.
dwFileAttributes
)
SHELL_DeleteDirectoryA
(
szTemp
);
else
DeleteFileA
(
szTemp
);
}
}
while
(
FindNextFileA
(
hFind
,
&
wfd
));
FindClose
(
hFind
);
ret
=
RemoveDirectoryA
(
pszDir
);
}
return
ret
;
}
/*************************************************************************
* SHCreateDirectory [SHELL32.165]
*
* NOTES
* exported by ordinal
* not sure about LPSECURITY_ATTRIBUTES
*/
DWORD
WINAPI
SHCreateDirectory
(
LPSECURITY_ATTRIBUTES
sec
,
LPCSTR
path
)
{
DWORD
ret
;
TRACE
(
"(%p,%s)
\n
"
,
sec
,
path
);
if
((
ret
=
CreateDirectoryA
(
path
,
sec
)))
{
SHChangeNotifyA
(
SHCNE_MKDIR
,
SHCNF_PATHA
,
path
,
NULL
);
}
return
ret
;
}
/************************************************************************
* Win32DeleteFile [SHELL32.164]
*
* Deletes a file. Also triggers a change notify if one exists.
*
* FIXME:
* Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be
* ANSI. Is this Unicode on NT?
*
*/
BOOL
WINAPI
Win32DeleteFile
(
LPSTR
fName
)
{
TRACE
(
"%p(%s)
\n
"
,
fName
,
fName
);
DeleteFileA
(
fName
);
SHChangeNotifyA
(
SHCNE_DELETE
,
SHCNF_PATHA
,
fName
,
NULL
);
return
TRUE
;
}
/*************************************************************************
* SHFileOperationA [SHELL32.243]
*
...
...
@@ -43,4 +124,3 @@ DWORD WINAPI SHFileOperationAW(LPVOID lpFileOp)
return
SHFileOperationW
(
lpFileOp
);
return
SHFileOperationA
(
lpFileOp
);
}
dlls/shell32/shlfolder.c
View file @
93e99127
...
...
@@ -1090,10 +1090,12 @@ static HRESULT WINAPI IShellFolder_fnSetNameOf(
_ICOM_THIS_From_IShellFolder2
(
IGenericSFImpl
,
iface
)
char
szSrc
[
MAX_PATH
],
szDest
[
MAX_PATH
];
int
len
;
BOOL
bIsFolder
=
_ILIsFolder
(
ILFindLastID
(
pidl
));
TRACE
(
"(%p)->(%u,pidl=%p,%s,%lu,%p)
,stub!
\n
"
,
This
,
hwndOwner
,
pidl
,
debugstr_w
(
lpName
),
dwFlags
,
pPidlOut
);
TRACE
(
"(%p)->(%u,pidl=%p,%s,%lu,%p)
\n
"
,
This
,
hwndOwner
,
pidl
,
debugstr_w
(
lpName
),
dwFlags
,
pPidlOut
);
/* build source path */
if
(
dwFlags
&
SHGDN_INFOLDER
)
{
strcpy
(
szSrc
,
This
->
sMyPath
);
...
...
@@ -1105,15 +1107,18 @@ static HRESULT WINAPI IShellFolder_fnSetNameOf(
{
SHGetPathFromIDListA
(
pidl
,
szSrc
);
}
/* build destination path */
strcpy
(
szDest
,
This
->
sMyPath
);
PathAddBackslashA
(
szDest
);
len
=
strlen
(
szDest
);
lstrcpynWtoA
(
szDest
+
len
,
lpName
,
MAX_PATH
-
len
);
TRACE
(
"src=%s dest=%s
\n
"
,
szSrc
,
szDest
);
if
(
MoveFileA
(
szSrc
,
szDest
)
)
if
(
MoveFileA
(
szSrc
,
szDest
)
)
{
if
(
pPidlOut
)
*
pPidlOut
=
SHSimpleIDListFromPathA
(
szDest
);
SHChangeNotifyA
(
bIsFolder
?
SHCNE_RENAMEFOLDER
:
SHCNE_RENAMEITEM
,
SHCNF_PATHA
,
szSrc
,
szDest
);
return
S_OK
;
}
return
E_FAIL
;
...
...
@@ -1430,8 +1435,8 @@ static HRESULT WINAPI ISFHelper_fnDeleteItems(
{
LPITEMIDLIST
pidl
;
/* if (! RemoveDirectoryA(szPath)) return E_FAIL; */
MESSAGE
(
"would delete %s
\n
"
,
szPath
)
;
MESSAGE
(
"delete %s
\n
"
,
szPath
);
if
(
!
RemoveDirectoryA
(
szPath
))
return
E_FAIL
;
pidl
=
ILCombine
(
This
->
absPidl
,
apidl
[
i
]);
SHChangeNotifyA
(
SHCNE_RMDIR
,
SHCNF_IDLIST
,
pidl
,
NULL
);
SHFree
(
pidl
);
...
...
@@ -1440,8 +1445,8 @@ static HRESULT WINAPI ISFHelper_fnDeleteItems(
{
LPITEMIDLIST
pidl
;
/* if (! DeleteFileA(szPath)) return E_FAIL; */
MESSAGE
(
"would delete %s
\n
"
,
szPath
)
;
MESSAGE
(
"delete %s
\n
"
,
szPath
);
if
(
!
DeleteFileA
(
szPath
))
return
E_FAIL
;
pidl
=
ILCombine
(
This
->
absPidl
,
apidl
[
i
]);
SHChangeNotifyA
(
SHCNE_DELETE
,
SHCNF_IDLIST
,
pidl
,
NULL
);
SHFree
(
pidl
);
...
...
dlls/shell32/shlmenu.c
View file @
93e99127
...
...
@@ -163,7 +163,7 @@ static int FM_InitMenuPopup(HMENU hmenu, LPITEMIDLIST pAlternatePidl)
if
(
SUCCEEDED
(
IShellFolder_GetAttributesOf
(
lpsf
,
1
,
&
pidlTemp
,
&
ulItemAttr
)))
{
ILGetDisplayName
(
pidlTemp
,
sTemp
);
if
(
!
(
PidlToSicIndex
(
lpsf
,
pidlTemp
,
FALSE
,
&
iIcon
)))
if
(
!
(
PidlToSicIndex
(
lpsf
,
pidlTemp
,
FALSE
,
0
,
&
iIcon
)))
iIcon
=
FM_BLANK_ICON
;
if
(
SFGAO_FOLDER
&
ulItemAttr
)
{
...
...
dlls/shell32/shlview.c
View file @
93e99127
...
...
@@ -69,8 +69,8 @@ typedef struct
IShellFolder2
*
pSF2Parent
;
IShellBrowser
*
pShellBrowser
;
ICommDlgBrowser
*
pCommDlgBrowser
;
HWND
hWnd
;
HWND
hWndList
;
HWND
hWnd
;
/* SHELLDLL_DefView */
HWND
hWndList
;
/* ListView control */
HWND
hWndParent
;
FOLDERSETTINGS
FolderSettings
;
HMENU
hMenu
;
...
...
@@ -78,6 +78,8 @@ typedef struct
UINT
cidl
;
LPITEMIDLIST
*
apidl
;
LISTVIEW_SORT_INFO
ListViewSortInfo
;
HANDLE
hNotify
;
/* change notification handle */
HANDLE
hAccel
;
}
IShellViewImpl
;
static
struct
ICOM_VTABLE
(
IShellView
)
svvt
;
...
...
@@ -112,6 +114,8 @@ static struct ICOM_VTABLE(IViewObject) vovt;
#define ID_LISTVIEW 2000
#define SHV_CHANGE_NOTIFY WM_USER + 0x1111
#define TOOLBAR_ID (L"SHELLDLL_DefView")
/*windowsx.h */
#define GET_WM_COMMAND_ID(wp, lp) LOWORD(wp)
...
...
@@ -463,6 +467,87 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
}
/**********************************************************
* LV_FindItemByPidl()
*/
static
int
LV_FindItemByPidl
(
IShellViewImpl
*
This
,
LPITEMIDLIST
pidl
)
{
LVITEMA
lvItem
;
ZeroMemory
(
&
lvItem
,
sizeof
(
LVITEMA
));
lvItem
.
mask
=
LVIF_PARAM
;
for
(
lvItem
.
iItem
=
0
;
ListView_GetItemA
(
This
->
hWndList
,
&
lvItem
);
lvItem
.
iItem
++
)
{
LPITEMIDLIST
currentpidl
=
(
LPITEMIDLIST
)
lvItem
.
lParam
;
HRESULT
hr
=
IShellFolder_CompareIDs
(
This
->
pSFParent
,
0
,
pidl
,
currentpidl
);
if
(
SUCCEEDED
(
hr
)
&&
!
HRESULT_CODE
(
hr
))
{
return
lvItem
.
iItem
;
}
}
return
-
1
;
}
/**********************************************************
* LV_AddItem()
*/
static
BOOLEAN
LV_AddItem
(
IShellViewImpl
*
This
,
LPITEMIDLIST
pidl
)
{
LVITEMA
lvItem
;
FIXME
(
"(%p)(pidl=%p)
\n
"
,
This
,
pidl
);
ZeroMemory
(
&
lvItem
,
sizeof
(
lvItem
));
/* create the listview item*/
lvItem
.
mask
=
LVIF_TEXT
|
LVIF_IMAGE
|
LVIF_PARAM
;
/*set the mask*/
lvItem
.
iItem
=
ListView_GetItemCount
(
This
->
hWndList
);
/*add the item to the end of the list*/
lvItem
.
lParam
=
(
LPARAM
)
ILClone
(
ILFindLastID
(
pidl
));
/*set the item's data*/
lvItem
.
pszText
=
LPSTR_TEXTCALLBACKA
;
/*get text on a callback basis*/
lvItem
.
iImage
=
I_IMAGECALLBACK
;
/*get the image on a callback basis*/
return
(
-
1
==
ListView_InsertItemA
(
This
->
hWndList
,
&
lvItem
))
?
FALSE
:
TRUE
;
}
/**********************************************************
* LV_DeleteItem()
*/
static
BOOLEAN
LV_DeleteItem
(
IShellViewImpl
*
This
,
LPITEMIDLIST
pidl
)
{
int
nIndex
;
FIXME
(
"(%p)(pidl=%p)
\n
"
,
This
,
pidl
);
nIndex
=
LV_FindItemByPidl
(
This
,
ILFindLastID
(
pidl
));
return
(
-
1
==
ListView_DeleteItem
(
This
->
hWndList
,
nIndex
))
?
FALSE
:
TRUE
;
}
/**********************************************************
* LV_RenameItem()
*/
static
BOOLEAN
LV_RenameItem
(
IShellViewImpl
*
This
,
LPITEMIDLIST
pidlOld
,
LPITEMIDLIST
pidlNew
)
{
int
nItem
;
LVITEMA
lvItem
;
FIXME
(
"(%p)(pidlold=%p pidlnew=%p)
\n
"
,
This
,
pidlOld
,
pidlNew
);
nItem
=
LV_FindItemByPidl
(
This
,
ILFindLastID
(
pidlOld
));
if
(
-
1
!=
nItem
)
{
ZeroMemory
(
&
lvItem
,
sizeof
(
lvItem
));
/* create the listview item*/
lvItem
.
mask
=
LVIF_PARAM
;
/* only the pidl */
lvItem
.
iItem
=
nItem
;
ListView_GetItemA
(
This
->
hWndList
,
&
lvItem
);
SHFree
((
LPITEMIDLIST
)
lvItem
.
lParam
);
lvItem
.
mask
=
LVIF_PARAM
;
lvItem
.
iItem
=
nItem
;
lvItem
.
lParam
=
(
LPARAM
)
ILClone
(
ILFindLastID
(
pidlNew
));
/* set the item's data */
ListView_SetItemA
(
This
->
hWndList
,
&
lvItem
);
ListView_Update
(
This
->
hWndList
,
nItem
);
return
TRUE
;
/* fixme: better handling */
}
return
FALSE
;
}
/**********************************************************
* ShellView_FillList()
*
* - gets the objectlist from the shellfolder
...
...
@@ -476,7 +561,6 @@ static HRESULT ShellView_FillList(IShellViewImpl * This)
LPITEMIDLIST
pidl
;
DWORD
dwFetched
;
UINT
i
;
LVITEMA
lvItem
;
HRESULT
hRes
;
HDPA
hdpa
;
...
...
@@ -516,18 +600,16 @@ static HRESULT ShellView_FillList(IShellViewImpl * This)
for
(
i
=
0
;
i
<
DPA_GetPtrCount
(
hdpa
);
++
i
)
/* DPA_GetPtrCount is a macro*/
{
pidl
=
(
LPITEMIDLIST
)
DPA_GetPtr
(
hdpa
,
i
);
if
(
IncludeObject
(
This
,
pidl
)
==
S_OK
)
/* in a commdlg This works as a filemask*/
/* in a commdlg This works as a filemask*/
if
(
IncludeObject
(
This
,
pidl
)
==
S_OK
)
{
ZeroMemory
(
&
lvItem
,
sizeof
(
lvItem
));
/* create the listviewitem*/
lvItem
.
mask
=
LVIF_TEXT
|
LVIF_IMAGE
|
LVIF_PARAM
;
/*set the mask*/
lvItem
.
iItem
=
ListView_GetItemCount
(
This
->
hWndList
);
/*add the item to the end of the list*/
lvItem
.
lParam
=
(
LPARAM
)
pidl
;
/*set the item's data*/
lvItem
.
pszText
=
LPSTR_TEXTCALLBACKA
;
/*get text on a callback basis*/
lvItem
.
iImage
=
I_IMAGECALLBACK
;
/*get the image on a callback basis*/
ListView_InsertItemA
(
This
->
hWndList
,
&
lvItem
);
if
(
!
LV_AddItem
(
This
,
pidl
))
SHFree
(
pidl
);
/* insert failed: PIDL not owned by the LV */
}
else
SHFree
(
pidl
);
/* the listview has the COPY*/
{
SHFree
(
pidl
);
/* not inserted */
}
}
/*turn the listview's redrawing back on and force it to draw*/
...
...
@@ -540,33 +622,14 @@ static HRESULT ShellView_FillList(IShellViewImpl * This)
}
/**********************************************************
* FindItemByPidl()
*/
static
int
FindItemByPidl
(
IShellViewImpl
*
This
,
LPITEMIDLIST
pidl
)
{
LVITEMA
lvItem
;
ZeroMemory
(
&
lvItem
,
sizeof
(
LVITEMA
));
lvItem
.
mask
=
LVIF_PARAM
;
for
(
lvItem
.
iItem
=
0
;
ListView_GetItemA
(
This
->
hWndList
,
&
lvItem
);
lvItem
.
iItem
++
)
{
LPITEMIDLIST
currentpidl
=
(
LPITEMIDLIST
)
lvItem
.
lParam
;
HRESULT
hr
=
IShellFolder_CompareIDs
(
This
->
pSFParent
,
0
,
pidl
,
currentpidl
);
if
(
SUCCEEDED
(
hr
)
&&
!
HRESULT_CODE
(
hr
))
{
return
lvItem
.
iItem
;
}
}
return
-
1
;
}
/**********************************************************
* ShellView_OnCreate()
*/
static
LRESULT
ShellView_OnCreate
(
IShellViewImpl
*
This
)
{
IDropTarget
*
pdt
;
NOTIFYREGISTER
ntreg
;
IPersistFolder2
*
ppf2
=
NULL
;
TRACE
(
"%p
\n
"
,
This
);
if
(
ShellView_CreateList
(
This
))
...
...
@@ -585,6 +648,20 @@ static LRESULT ShellView_OnCreate(IShellViewImpl * This)
IDropTarget_Release
(
pdt
);
}
}
/* register for receiving notifications */
IShellFolder_QueryInterface
(
This
->
pSFParent
,
&
IID_IPersistFolder2
,
(
LPVOID
*
)
&
ppf2
);
if
(
ppf2
)
{
IPersistFolder2_GetCurFolder
(
ppf2
,
&
ntreg
.
pidlPath
);
ntreg
.
bWatchSubtree
=
FALSE
;
This
->
hNotify
=
SHChangeNotifyRegister
(
This
->
hWnd
,
SHCNF_IDLIST
,
SHCNE_ALLEVENTS
,
SHV_CHANGE_NOTIFY
,
1
,
&
ntreg
);
SHFree
(
ntreg
.
pidlPath
);
IPersistFolder2_Release
(
ppf2
);
}
This
->
hAccel
=
LoadAcceleratorsA
(
shell32_hInstance
,
"shv_accel"
);
return
S_OK
;
}
...
...
@@ -1196,6 +1273,21 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
}
break
;
case
LVN_KEYDOWN
:
{
/* MSG msg;
msg.hwnd = This->hWnd;
msg.message = WM_KEYDOWN;
msg.wParam = plvKeyDown->wVKey;
msg.lParam = 0;
msg.time = 0;
msg.pt = 0;*/
LPNMLVKEYDOWN
plvKeyDown
=
(
LPNMLVKEYDOWN
)
lpnmh
;
// TranslateAccelerator(This->hWnd, This->hAccel, &msg)
FIXME
(
"LVN_KEYDOWN key=0x%08x
\n
"
,
plvKeyDown
->
wVKey
);
}
break
;
default:
TRACE
(
"-- %p WM_COMMAND %s unhandled
\n
"
,
This
,
SPY_GetMsgName
(
lpnmh
->
code
));
break
;;
...
...
@@ -1204,6 +1296,33 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
}
/**********************************************************
* ShellView_OnChange()
*/
static
LRESULT
ShellView_OnChange
(
IShellViewImpl
*
This
,
LPITEMIDLIST
*
Pidls
,
LONG
wEventId
)
{
TRACE
(
"(%p)(%p,%p,0x%08lx)
\n
"
,
This
,
Pidls
[
0
],
Pidls
[
1
],
wEventId
);
switch
(
wEventId
)
{
case
SHCNE_MKDIR
:
case
SHCNE_CREATE
:
LV_AddItem
(
This
,
Pidls
[
0
]);
break
;
case
SHCNE_RMDIR
:
case
SHCNE_DELETE
:
LV_DeleteItem
(
This
,
Pidls
[
0
]);
break
;
case
SHCNE_RENAMEFOLDER
:
case
SHCNE_RENAMEITEM
:
LV_RenameItem
(
This
,
Pidls
[
0
],
Pidls
[
1
]);
break
;
case
SHCNE_UPDATEITEM
:
break
;
}
return
TRUE
;
}
/**********************************************************
* ShellView_WndProc
*/
...
...
@@ -1233,6 +1352,7 @@ static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wPara
GET_WM_COMMAND_ID
(
wParam
,
lParam
),
GET_WM_COMMAND_CMD
(
wParam
,
lParam
),
GET_WM_COMMAND_HWND
(
wParam
,
lParam
));
case
SHV_CHANGE_NOTIFY
:
return
ShellView_OnChange
(
pThis
,
(
LPITEMIDLIST
*
)
wParam
,
(
LONG
)
lParam
);
case
WM_CONTEXTMENU
:
ShellView_DoContextMenu
(
pThis
,
LOWORD
(
lParam
),
HIWORD
(
lParam
),
FALSE
);
return
0
;
...
...
@@ -1246,6 +1366,7 @@ static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wPara
{
pRevokeDragDrop
(
pThis
->
hWnd
);
}
SHChangeNotifyDeregister
(
pThis
->
hNotify
);
break
;
}
...
...
@@ -1523,8 +1644,7 @@ static HRESULT WINAPI IShellView_fnCreateViewWindow(
CheckToolbar
(
This
);
if
(
!*
phWnd
)
return
E_FAIL
;
if
(
!*
phWnd
)
return
E_FAIL
;
return
S_OK
;
}
...
...
@@ -1590,7 +1710,7 @@ static HRESULT WINAPI IShellView_fnSelectItem(
TRACE
(
"(%p)->(pidl=%p, 0x%08x) stub
\n
"
,
This
,
pidl
,
uFlags
);
i
=
FindItemByPidl
(
This
,
pidl
);
i
=
LV_
FindItemByPidl
(
This
,
pidl
);
if
(
i
!=
-
1
)
{
...
...
@@ -1667,7 +1787,7 @@ static HRESULT WINAPI IShellView_fnEditItem(
TRACE
(
"(%p)->(pidl=%p)
\n
"
,
This
,
pidl
);
i
=
FindItemByPidl
(
This
,
pidl
);
i
=
LV_
FindItemByPidl
(
This
,
pidl
);
if
(
i
!=
-
1
)
{
SetFocus
(
This
->
hWndList
);
...
...
dlls/shell32/shlwapi.spec
View file @
93e99127
...
...
@@ -272,8 +272,8 @@ type win32
@ stub SHCreateShellPalette
@ stub SHDeleteEmptyKeyA
@ stub SHDeleteEmptyKeyW
@ st
ub SH
DeleteKeyA
@ st
ub SH
DeleteKeyW
@ st
dcall SHDeleteKeyA(long str)SHReg
DeleteKeyA
@ st
dcall SHDeleteKeyW(long str)SHReg
DeleteKeyW
@ stub SHDeleteOrphanKeyA
@ stub SHDeleteOrphanKeyW
@ stub SHDeleteValueA
...
...
@@ -348,10 +348,10 @@ type win32
@ stub StrNCatW
@ stub StrPBrkA
@ stub StrPBrkW
@ stdcall StrRChrA (str str long)
StrRChrA
@ stdcall StrRChrA (str str long)
lstrrchr
@ stub StrRChrIA
@ stub StrRChrIW
@ stdcall StrRChrW (wstr wstr long)
StrRChrW
@ stdcall StrRChrW (wstr wstr long)
lstrrchrw
@ stub StrRStrIA
@ stub StrRStrIW
@ stub StrSpnA
...
...
dlls/shell32/shv_bg_cmenu.c
View file @
93e99127
...
...
@@ -171,7 +171,6 @@ static void DoNewFolder(
if
(
psv
)
{
/* if we are in a shellview do labeledit */
IShellView_Refresh
(
psv
);
/* fixme: so long we dont have SHChangeNotify */
IShellView_SelectItem
(
psv
,
pidl
,(
SVSI_DESELECTOTHERS
|
SVSI_EDIT
|
SVSI_ENSUREVISIBLE
|
SVSI_FOCUSED
|
SVSI_SELECT
));
...
...
dlls/shell32/shv_item_cmenu.c
View file @
93e99127
...
...
@@ -309,7 +309,8 @@ static void DoRename(
if
(
SUCCEEDED
(
IShellBrowser_QueryActiveShellView
(
lpSB
,
&
lpSV
)))
{
TRACE
(
"(sv=%p)
\n
"
,
lpSV
);
IShellView_EditItem
(
lpSV
,
This
->
apidl
[
0
]);
IShellView_SelectItem
(
lpSV
,
This
->
apidl
[
0
],
SVSI_DESELECTOTHERS
|
SVSI_EDIT
|
SVSI_ENSUREVISIBLE
|
SVSI_FOCUSED
|
SVSI_SELECT
);
IShellView_Release
(
lpSV
);
}
}
...
...
@@ -320,9 +321,7 @@ static void DoRename(
*
* deletes the currently selected items
*/
static
void
DoDelete
(
IContextMenu
*
iface
,
IShellView
*
psv
)
static
void
DoDelete
(
IContextMenu
*
iface
)
{
ICOM_THIS
(
ItemCmImpl
,
iface
);
ISFHelper
*
psfhlp
;
...
...
@@ -331,8 +330,6 @@ static void DoDelete(
if
(
psfhlp
)
{
ISFHelper_DeleteItems
(
psfhlp
,
This
->
cidl
,
This
->
apidl
);
if
(
psv
)
IShellView_Refresh
(
psv
);
/* fixme: so long we dont have SHChangeNotify */
ISFHelper_Release
(
psfhlp
);
}
}
...
...
@@ -421,17 +418,8 @@ static HRESULT WINAPI ISvItemCm_fnInvokeCommand(
{
ICOM_THIS
(
ItemCmImpl
,
iface
);
LPSHELLBROWSER
lpSB
;
LPSHELLVIEW
lpSV
=
NULL
;
TRACE
(
"(%p)->(invcom=%p verb=%p wnd=%x)
\n
"
,
This
,
lpcmi
,
lpcmi
->
lpVerb
,
lpcmi
->
hwnd
);
/* get the active IShellView */
lpSB
=
(
LPSHELLBROWSER
)
SendMessageA
(
lpcmi
->
hwnd
,
CWM_GETISHELLBROWSER
,
0
,
0
);
/* we are not in a ShellView every time */
if
(
lpSB
)
IShellBrowser_QueryActiveShellView
(
lpSB
,
&
lpSV
);
if
(
LOWORD
(
lpcmi
->
lpVerb
)
>
FCIDM_SHVIEWLAST
)
return
E_INVALIDARG
;
switch
(
LOWORD
(
lpcmi
->
lpVerb
))
...
...
@@ -446,7 +434,7 @@ static HRESULT WINAPI ISvItemCm_fnInvokeCommand(
DoRename
(
iface
,
lpcmi
->
hwnd
);
break
;
case
FCIDM_SHVIEW_DELETE
:
DoDelete
(
iface
,
lpSV
);
DoDelete
(
iface
);
break
;
case
FCIDM_SHVIEW_COPY
:
DoCopyOrCut
(
iface
,
lpcmi
->
hwnd
,
FALSE
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment