[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50548] trunk/blender/source/blender/ editors/space_file: fix [#30324] VSE: Right-Click does not select directory

Campbell Barton ideasman42 at gmail.com
Wed Sep 12 12:04:09 CEST 2012


Revision: 50548
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50548
Author:   campbellbarton
Date:     2012-09-12 10:04:09 +0000 (Wed, 12 Sep 2012)
Log Message:
-----------
fix [#30324] VSE: Right-Click does not select directory

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

Modified: trunk/blender/source/blender/editors/space_file/file_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/file_ops.c	2012-09-12 09:37:10 UTC (rev 50547)
+++ trunk/blender/source/blender/editors/space_file/file_ops.c	2012-09-12 10:04:09 UTC (rev 50548)
@@ -156,7 +156,7 @@
 	return sel;
 }
 
-static FileSelect file_select_do(bContext *C, int selected_idx)
+static FileSelect file_select_do(bContext *C, int selected_idx, short do_diropen)
 {
 	FileSelect retval = FILE_SELECT_NOTHING;
 	SpaceFile *sfile = CTX_wm_space_file(C);
@@ -172,8 +172,12 @@
 		params->active_file = selected_idx;
 
 		if (S_ISDIR(file->type)) {
+			if (do_diropen == FALSE) {
+				params->file[0] = '\0';
+				retval = FILE_SELECT_DIR;
+			}
 			/* the path is too long and we are not going up! */
-			if (strcmp(file->relname, "..") && strlen(params->dir) + strlen(file->relname) >= FILE_MAX) {
+			else if (strcmp(file->relname, "..") && strlen(params->dir) + strlen(file->relname) >= FILE_MAX) {
 				// XXX error("Path too long, cannot enter this directory");
 			}
 			else {
@@ -202,7 +206,7 @@
 }
 
 
-static FileSelect file_select(bContext *C, const rcti *rect, FileSelType select, short fill)
+static FileSelect file_select(bContext *C, const rcti *rect, FileSelType select, short fill, short do_diropen)
 {
 	SpaceFile *sfile = CTX_wm_space_file(C);
 	FileSelect retval = FILE_SELECT_NOTHING;
@@ -219,7 +223,7 @@
 	if ((sel.last >= 0) && ((select == FILE_SEL_ADD) || (select == FILE_SEL_TOGGLE))) {
 		/* Check last selection, if selected, act on the file or dir */
 		if (filelist_is_selected(sfile->files, sel.last, check_type)) {
-			retval = file_select_do(C, sel.last);
+			retval = file_select_do(C, sel.last, do_diropen);
 		}
 	}
 
@@ -284,7 +288,7 @@
 
 	BLI_rcti_isect(&(ar->v2d.mask), &rect, &rect);
 
-	ret = file_select(C, &rect, select ? FILE_SEL_ADD : FILE_SEL_REMOVE, 0);
+	ret = file_select(C, &rect, select ? FILE_SEL_ADD : FILE_SEL_REMOVE, FALSE, FALSE);
 	if (FILE_SELECT_DIR == ret) {
 		WM_event_add_notifier(C, NC_SPACE | ND_SPACE_FILE_LIST, NULL);
 	}
@@ -320,6 +324,7 @@
 	rcti rect;
 	int extend = RNA_boolean_get(op->ptr, "extend");
 	int fill = RNA_boolean_get(op->ptr, "fill");
+	int do_diropen = RNA_boolean_get(op->ptr, "open");
 
 	if (ar->regiontype != RGN_TYPE_WINDOW)
 		return OPERATOR_CANCELLED;
@@ -333,7 +338,7 @@
 	/* single select, deselect all selected first */
 	if (!extend) file_deselect_all(sfile, SELECTED_FILE);
 
-	ret = file_select(C, &rect, extend ? FILE_SEL_TOGGLE : FILE_SEL_ADD, fill);
+	ret = file_select(C, &rect, extend ? FILE_SEL_TOGGLE : FILE_SEL_ADD, fill, do_diropen);
 	if (FILE_SELECT_DIR == ret)
 		WM_event_add_notifier(C, NC_SPACE | ND_SPACE_FILE_LIST, NULL);
 	else if (FILE_SELECT_FILE == ret)
@@ -357,8 +362,9 @@
 	ot->poll = ED_operator_file_active;
 
 	/* rna */
-	RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first");
-	RNA_def_boolean(ot->srna, "fill", 0, "Fill", "Select everything beginning with the last selection");
+	RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first");
+	RNA_def_boolean(ot->srna, "fill", FALSE, "Fill", "Select everything beginning with the last selection");
+	RNA_def_boolean(ot->srna, "open", TRUE, "Open", "Open a directory when selecting it");
 }
 
 static int file_select_all_exec(bContext *C, wmOperator *UNUSED(op))

Modified: trunk/blender/source/blender/editors/space_file/space_file.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/space_file.c	2012-09-12 09:37:10 UTC (rev 50547)
+++ trunk/blender/source/blender/editors/space_file/space_file.c	2012-09-12 10:04:09 UTC (rev 50548)
@@ -284,8 +284,6 @@
 
 	keymap = WM_keymap_find(wm->defaultconf, "File Browser Main", SPACE_FILE, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
-							   
-
 }
 
 static void file_main_area_listener(ARegion *ar, wmNotifier *wmn)
@@ -418,12 +416,26 @@
 	keymap = WM_keymap_find(keyconf, "File Browser Main", SPACE_FILE, 0);
 	kmi = WM_keymap_add_item(keymap, "FILE_OT_execute", LEFTMOUSE, KM_DBL_CLICK, 0, 0);
 	RNA_boolean_set(kmi->ptr, "need_active", TRUE);
+
+	/* left mouse selects and opens */
 	WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, 0, 0);
 	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0);
 	RNA_boolean_set(kmi->ptr, "extend", TRUE);
 	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_ALT, 0);
 	RNA_boolean_set(kmi->ptr, "extend", TRUE);
 	RNA_boolean_set(kmi->ptr, "fill", TRUE);
+
+	/* right mouse selects without opening */
+	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, 0, 0);
+	RNA_boolean_set(kmi->ptr, "open", FALSE);
+	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, KM_SHIFT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", TRUE);
+	RNA_boolean_set(kmi->ptr, "open", FALSE);
+	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", TRUE);
+	RNA_boolean_set(kmi->ptr, "fill", TRUE);
+	RNA_boolean_set(kmi->ptr, "open", FALSE);
+
 	WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "FILE_OT_refresh", PADPERIOD, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);




More information about the Bf-blender-cvs mailing list