[Bf-blender-cvs] [6ad2056282b] filebrowser_redesign: Vertical layout for short list display type

Brian Meisenheimer noreply at git.blender.org
Mon Jul 22 19:36:59 CEST 2019


Commit: 6ad2056282b548ff634975551620c425792eba2f
Author: Brian Meisenheimer
Date:   Sun Jul 21 14:29:21 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rB6ad2056282b548ff634975551620c425792eba2f

Vertical layout for short list display type

===================================================================

M	source/blender/editors/space_file/filesel.c
M	source/blender/editors/space_file/space_file.c

===================================================================

diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index faaecd975a3..319f6f32ced 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -536,6 +536,7 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
   int maxlen = 0;
   int numfiles;
   int textheight;
+  int rowamount;
 
   if (sfile->layout == NULL) {
     sfile->layout = MEM_callocN(sizeof(struct FileLayout), "file_layout");
@@ -572,16 +573,39 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
                      layout->tile_border_y * 2;
     layout->flag = FILE_LAYOUT_VER;
   }
-  else {
+  else if (params->display == FILE_SHORTDISPLAY) {
+
+    layout->prv_w = ((float)params->thumbnail_size / 20.0f) * UI_UNIT_X;
+    layout->prv_h = ((float)params->thumbnail_size / 20.0f) * UI_UNIT_Y;
+    layout->tile_border_x = 0.4f * UI_UNIT_X;
+    layout->tile_border_y = 0.1f * UI_UNIT_Y;
+    layout->tile_h = textheight * 3 / 2;
+    layout->width = (int)(BLI_rctf_size_x(&v2d->cur) - 2 * layout->tile_border_x);
+    layout->tile_w = v2d->winx;
+    layout->columns = 1;
+    column_widths(params, layout);
+    rowamount = (int)(BLI_rctf_size_y(&v2d->cur) - 2 * layout->tile_border_y) /
+                (layout->tile_h + 2 * layout->tile_border_y);
+    if ((int)rowamount / numfiles >= 1) {
+      layout->rows = rowamount;
+    }
+    else {
+      layout->rows = rowamount + (numfiles - rowamount);
+    }
+    layout->height = sfile->layout->rows * (layout->tile_h + 2 * layout->tile_border_y) +
+                     layout->tile_border_y * 2;
+    layout->flag = FILE_LAYOUT_VER;
+  }
+  else if (params->display == FILE_LONGDISPLAY) {
     int column_space = 0.6f * UI_UNIT_X;
     int column_icon_space = 0.2f * UI_UNIT_X;
 
-    layout->prv_w = 0;
-    layout->prv_h = 0;
+    layout->prv_w = ((float)params->thumbnail_size / 20.0f) * UI_UNIT_X;
+    layout->prv_h = ((float)params->thumbnail_size / 20.0f) * UI_UNIT_Y;
     layout->tile_border_x = 0.4f * UI_UNIT_X;
     layout->tile_border_y = 0.1f * UI_UNIT_Y;
-    layout->prv_border_x = 0;
-    layout->prv_border_y = 0;
+    layout->tile_border_x = 0;
+    layout->tile_border_x = 0;
     layout->tile_h = textheight * 3 / 2;
     layout->height = (int)(BLI_rctf_size_y(&v2d->cur) - 2 * layout->tile_border_y);
     /* Padding by full scrollbar H is too much, can overlap tile border Y. */
@@ -589,19 +613,11 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
                    (layout->tile_h + 2 * layout->tile_border_y);
 
     column_widths(params, layout);
-
-    if (params->display == FILE_SHORTDISPLAY) {
-      maxlen = ICON_DEFAULT_WIDTH_SCALE + column_icon_space +
-               (int)layout->column_widths[COLUMN_NAME] + column_space +
-               (int)layout->column_widths[COLUMN_SIZE] + column_space;
-    }
-    else {
-      maxlen = ICON_DEFAULT_WIDTH_SCALE + column_icon_space +
-               (int)layout->column_widths[COLUMN_NAME] + column_space +
-               (int)layout->column_widths[COLUMN_DATE] + column_space +
-               (int)layout->column_widths[COLUMN_TIME] + column_space +
-               (int)layout->column_widths[COLUMN_SIZE] + column_space;
-    }
+    maxlen = ICON_DEFAULT_WIDTH_SCALE + column_icon_space +
+             (int)layout->column_widths[COLUMN_NAME] + column_space +
+             (int)layout->column_widths[COLUMN_DATE] + column_space +
+             (int)layout->column_widths[COLUMN_TIME] + column_space +
+             (int)layout->column_widths[COLUMN_SIZE] + column_space;
     layout->tile_w = maxlen;
     if (layout->rows > 0) {
       layout->columns = numfiles / layout->rows + 1;  // XXX dirty, modulo is zero
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 5ffd42da39b..1210e5b5af0 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -414,6 +414,11 @@ static void file_main_region_draw(const bContext *C, ARegion *ar)
     v2d->keepofs &= ~V2D_LOCKOFS_Y;
     v2d->keepofs |= V2D_LOCKOFS_X;
   }
+  else if (params->display == FILE_SHORTDISPLAY) {
+    v2d->scroll = V2D_SCROLL_RIGHT;
+    v2d->keepofs &= ~V2D_LOCKOFS_Y;
+    v2d->keepofs |= V2D_LOCKOFS_X;
+  }
   else {
     v2d->scroll = V2D_SCROLL_BOTTOM;
     v2d->keepofs &= ~V2D_LOCKOFS_X;



More information about the Bf-blender-cvs mailing list