Page Menu
Home
Search
Configure Global Search
Log In
Files
F13944
New_File_Selection_Preview.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Alexander Kuznetsov (alexk)
Nov 13 2013, 2:56 PM
Size
4 KB
Subscribers
None
New_File_Selection_Preview.patch
View Options
Index: source/blender/editors/space_file/file_draw.c
===================================================================
--- source/blender/editors/space_file/file_draw.c (revision 35578)
+++ source/blender/editors/space_file/file_draw.c (working copy)
@@ -517,10 +517,10 @@
if (!(file->flags & EDITING)) {
if (params->active_file == i) {
- if (file->flags & ACTIVEFILE) colorid= TH_HILITE;
+ if (file->flags & ACTIVEFILE || file->flags & SELECTEDFILE) colorid= TH_HILITE;
else colorid = TH_BACK;
draw_tile(sx, sy-1, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,20);
- } else if (file->flags & ACTIVEFILE) {
+ } else if (file->flags & ACTIVEFILE || file->flags & SELECTEDFILE) {
colorid = TH_HILITE;
draw_tile(sx, sy-1, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,0);
}
Index: source/blender/editors/space_file/file_ops.c
===================================================================
--- source/blender/editors/space_file/file_ops.c (revision 35578)
+++ source/blender/editors/space_file/file_ops.c (working copy)
@@ -170,7 +170,7 @@
int numfiles = filelist_numfiles(sfile->files);
/* make the selected file active */
- if (select && (selected_idx >= 0) && (selected_idx < numfiles)) {
+ if (select == FILE_SEL_ADD && (selected_idx >= 0) && (selected_idx < numfiles)) {
struct direntry* file = filelist_file(sfile->files, selected_idx);
params->active_file = selected_idx;
@@ -225,7 +225,41 @@
return retval;
}
+static int file_border_select_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ARegion *ar= CTX_wm_region(C);
+ SpaceFile *sfile= CTX_wm_space_file(C);
+ FileSelectParams *params = ED_fileselect_get_params(sfile);
+ FileSelection sel;
+ rcti *rect= ((wmGesture*)(op->customdata))->customdata;
+ rcti locrect;
+ int result;
+
+ result= WM_border_select_modal(C, op, event);
+
+ if(result==OPERATOR_RUNNING_MODAL) {
+ BLI_init_rcti(&locrect, rect->xmin, rect->xmax, rect->ymin, rect->ymax);
+ BLI_isect_rcti(&(ar->v2d.mask), &locrect, &locrect);
+
+ sel = file_selection_get(C, rect, 0);
+ if ( (sel.first != params->sel_first) || (sel.last != params->sel_last) ) {
+ file_deselect_all(sfile, SELECTEDFILE);
+ filelist_select(sfile->files, &sel, FILE_SEL_ADD, SELECTEDFILE);
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
+ }
+ params->sel_first = sel.first; params->sel_last = sel.last;
+
+ }else {
+ params->active_file = -1;
+ params->sel_first = params->sel_last = -1;
+ file_deselect_all(sfile, SELECTEDFILE);
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
+ }
+
+ return result;
+}
+
static int file_border_select_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
@@ -240,7 +274,7 @@
BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect);
- ret = file_select(C, &rect, select, 0);
+ ret = file_select(C, &rect, select & FILE_SEL_ADD, 0);
if (FILE_SELECT_DIR == ret) {
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
} else if (FILE_SELECT_FILE == ret) {
@@ -259,7 +293,7 @@
/* api callbacks */
ot->invoke= WM_border_select_invoke;
ot->exec= file_border_select_exec;
- ot->modal= WM_border_select_modal;
+ ot->modal= file_border_select_modal;
ot->poll= ED_operator_file_active;
/* rna */
@@ -286,7 +320,7 @@
/* single select, deselect all selected first */
if (!extend) file_deselect_all(sfile, ACTIVEFILE);
- if (FILE_SELECT_DIR == file_select(C, &rect, 1, fill))
+ if (FILE_SELECT_DIR == file_select(C, &rect, extend ? FILE_SEL_TOGGLE : FILE_SEL_ADD, fill))
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
else
WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
Index: source/blender/editors/space_file/filelist.c
===================================================================
--- source/blender/editors/space_file/filelist.c (revision 35578)
+++ source/blender/editors/space_file/filelist.c (working copy)
@@ -934,8 +934,10 @@
for (current_file = sel->first; current_file <= sel->last; current_file++) {
struct direntry* file = filelist_file(filelist, current_file);
- if (select)
+ if (select==FILE_SEL_ADD)
file->flags |= flag;
+ else if(select==FILE_SEL_TOGGLE)
+ file->flags ^= flag;
else
file->flags &= ~flag;
}
Index: source/blender/editors/space_file/filelist.h
===================================================================
--- source/blender/editors/space_file/filelist.h (revision 35578)
+++ source/blender/editors/space_file/filelist.h (working copy)
@@ -38,6 +38,9 @@
#ifndef FILELIST_H
#define FILELIST_H
+#define FILE_SEL_ADD 1
+#define FILE_SEL_TOGGLE 2
+
#ifdef __cplusplus
extern "C" {
#endif
File Metadata
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7d/1b/247057dc4d32cb5179fa34cecdc3
Event Timeline
Log In to Comment