[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55556] trunk/blender/source/blender/ editors/space_file/file_ops.c: FIX: [#34467] File Browser Deletes Unselected Files

Andrea Weikert elubie at gmx.net
Sun Mar 24 20:29:50 CET 2013


Revision: 55556
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55556
Author:   elubie
Date:     2013-03-24 19:29:49 +0000 (Sun, 24 Mar 2013)
Log Message:
-----------
FIX: [#34467] File Browser Deletes Unselected Files

* delete now acts on selected file(s) rather than the highlighted file. 

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_file/file_ops.c

Modified: trunk/blender/source/blender/editors/space_file/file_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/file_ops.c	2013-03-24 19:10:30 UTC (rev 55555)
+++ trunk/blender/source/blender/editors/space_file/file_ops.c	2013-03-24 19:29:49 UTC (rev 55556)
@@ -1462,16 +1462,21 @@
 	SpaceFile *sfile = CTX_wm_space_file(C);
 	struct direntry *file;
 
-	if (sfile && sfile->params) {
-		if (sfile->params->active_file < 0) {
+	if (sfile && sfile->params) {		
+		char dir[FILE_MAX], group[FILE_MAX];
+		int numfiles = filelist_numfiles(sfile->files);
+		int i;
+		int num_selected = 0;
+
+		if (filelist_islibrary(sfile->files, dir, group)) poll = 0;
+		for (i = 0; i < numfiles; i++) {				
+			if (filelist_is_selected(sfile->files, i, CHECK_FILES)) {
+				num_selected++;
+			}
+		}
+		if (num_selected <= 0) {
 			poll = 0;
-		}
-		else {
-			char dir[FILE_MAX], group[FILE_MAX];
-			if (filelist_islibrary(sfile->files, dir, group)) poll = 0;
-			file = filelist_file(sfile->files, sfile->params->active_file);
-			if (file && S_ISDIR(file->type)) poll = 0;
-		}
+		}		
 	}
 	else
 		poll = 0;
@@ -1484,12 +1489,18 @@
 	char str[FILE_MAX];
 	wmWindowManager *wm = CTX_wm_manager(C);
 	SpaceFile *sfile = CTX_wm_space_file(C);
-	struct direntry *file;
+	struct direntry *file;	
+	int numfiles = filelist_numfiles(sfile->files);
+	int i;
+
+	for (i = 0; i < numfiles; i++) {
+		if (filelist_is_selected(sfile->files, i, CHECK_FILES)) {
+			file = filelist_file(sfile->files, i);
+			BLI_make_file_string(G.main->name, str, sfile->params->dir, file->relname);
+			BLI_delete(str, false, false);
+		}
+	}
 	
-	
-	file = filelist_file(sfile->files, sfile->params->active_file);
-	BLI_make_file_string(G.main->name, str, sfile->params->dir, file->relname);
-	BLI_delete(str, false, false);
 	ED_fileselect_clear(wm, sfile);
 	WM_event_add_notifier(C, NC_SPACE | ND_SPACE_FILE_LIST, NULL);
 	
@@ -1500,8 +1511,8 @@
 void FILE_OT_delete(struct wmOperatorType *ot)
 {
 	/* identifiers */
-	ot->name = "Delete File";
-	ot->description = "Delete selected file";
+	ot->name = "Delete Selected Files";
+	ot->description = "Delete selected files";
 	ot->idname = "FILE_OT_delete";
 	
 	/* api callbacks */




More information about the Bf-blender-cvs mailing list