Mikołaj Zalewski : shell32: Show a confirmation before deleting files with syscalls.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 7 11:10:17 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: ea0a102d555be53f9650104bddb8085299918345
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=ea0a102d555be53f9650104bddb8085299918345

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Thu Jul  6 20:46:21 2006 +0200

shell32: Show a confirmation before deleting files with syscalls.

---

 dlls/shell32/shell32_En.rc   |    1 +
 dlls/shell32/shell32_main.h  |    1 +
 dlls/shell32/shfldr_unixfs.c |    4 ++++
 dlls/shell32/shlfileop.c     |    5 +++++
 dlls/shell32/shresdef.h      |    1 +
 5 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/shell32/shell32_En.rc b/dlls/shell32/shell32_En.rc
index 689858d..2cf8047 100644
--- a/dlls/shell32/shell32_En.rc
+++ b/dlls/shell32/shell32_En.rc
@@ -164,6 +164,7 @@ STRINGTABLE DISCARDABLE
 	IDS_DELETEFOLDER_CAPTION "Confirm folder deletion"
 	IDS_DELETEITEM_TEXT "Are you sure you want to delete '%1'?"
 	IDS_DELETEMULTIPLE_TEXT "Are you sure you want to delete these %1 items?"
+	IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?"
 	IDS_OVERWRITEFILE_TEXT "OverWrite File %1?"
 	IDS_OVERWRITEFILE_CAPTION "Confirm File OverWrite"
 
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index cc021d1..1ba0126 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -147,6 +147,7 @@ #define ASK_DELETE_FOLDER         2
 #define ASK_DELETE_MULTIPLE_ITEM  3
 #define ASK_CREATE_FOLDER         4
 #define ASK_OVERWRITE_FILE        5
+#define ASK_DELETE_SELECTED       6
 
 BOOL SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pwszDir, BOOL bShowUI);
 BOOL SHELL_ConfirmDialogW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir);
diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c
index 2fd7de5..7d458b7 100644
--- a/dlls/shell32/shfldr_unixfs.c
+++ b/dlls/shell32/shfldr_unixfs.c
@@ -1825,8 +1825,12 @@ static HRESULT UNIXFS_delete_with_shfile
 static HRESULT UNIXFS_delete_with_syscalls(UnixFolder *This, UINT cidl, LPCITEMIDLIST *apidl)
 {
     char szAbsolute[FILENAME_MAX], *pszRelative;
+    static const WCHAR empty[] = {0};
     int i;
     
+    if (!SHELL_ConfirmDialogW(GetActiveWindow(), ASK_DELETE_SELECTED, empty))
+        return S_OK;
+    
     lstrcpyA(szAbsolute, This->m_pszPath);
     pszRelative = szAbsolute + lstrlenA(szAbsolute);
     
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 977e301..e1d7ba9 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -91,6 +91,11 @@ static BOOL SHELL_ConfirmIDs(int nKindOf
 	    ids->caption_resource_id  = IDS_DELETEITEM_CAPTION;
 	    ids->text_resource_id  = IDS_DELETEMULTIPLE_TEXT;
 	    return TRUE;
+	  case ASK_DELETE_SELECTED:
+            ids->icon_resource_id = IDI_SHELL_CONFIRM_DELETE;
+            ids->caption_resource_id  = IDS_DELETEITEM_CAPTION;
+            ids->text_resource_id  = IDS_DELETESELECTED_TEXT;
+            return TRUE;
 	  case ASK_OVERWRITE_FILE:
             ids->hIconInstance = NULL;
             ids->icon_resource_id = IDI_WARNING;
diff --git a/dlls/shell32/shresdef.h b/dlls/shell32/shresdef.h
index aa95d33..7acd382 100644
--- a/dlls/shell32/shresdef.h
+++ b/dlls/shell32/shresdef.h
@@ -52,6 +52,7 @@ #define IDS_DELETEITEM_TEXT	34
 #define IDS_DELETEMULTIPLE_TEXT	35
 #define IDS_OVERWRITEFILE_CAPTION 36
 #define IDS_OVERWRITEFILE_TEXT	37
+#define IDS_DELETESELECTED_TEXT 38
 
 #define IDS_RESTART_TITLE      40
 #define IDS_RESTART_PROMPT     41




More information about the wine-cvs mailing list