[Bf-blender-cvs] [d191cbe1d6f] filebrowser_redesign: Cleanup: Use struct to wrap details column data

Julian Eisel noreply at git.blender.org
Mon Jul 22 22:42:06 CEST 2019


Commit: d191cbe1d6f5a32799f17fc98424c8c95300ade3
Author: Julian Eisel
Date:   Mon Jul 22 19:52:12 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rBd191cbe1d6f5a32799f17fc98424c8c95300ade3

Cleanup: Use struct to wrap details column data

Also, related cleanup.

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

M	source/blender/editors/include/ED_fileselect.h
M	source/blender/editors/space_file/file_draw.c
M	source/blender/editors/space_file/filesel.c

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

diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 12e75ba872f..ca26ff89d54 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -34,16 +34,22 @@ struct wmWindowManager;
 #define FILE_LAYOUT_HOR 1
 #define FILE_LAYOUT_VER 2
 
-#define MAX_FILE_COLUMN 4
-
 typedef enum FileListColumns {
   COLUMN_NONE = -1,
   COLUMN_NAME = 0,
   COLUMN_DATE,
   COLUMN_TIME,
   COLUMN_SIZE,
+
+  COLUMN_MAX
 } FileListColumns;
 
+typedef struct FileDetailsColumn {
+  float width;
+  /** UI name for this column */
+  const char *name;
+} FileDetailsColumn;
+
 typedef struct FileLayout {
   /* view settings - XXX - move into own struct */
   int offset_top;
@@ -63,8 +69,7 @@ typedef struct FileLayout {
   int flag;
   int dirty;
   int textheight;
-  float column_widths[MAX_FILE_COLUMN];
-  const char *column_names[MAX_FILE_COLUMN];
+  FileDetailsColumn details_columns[COLUMN_MAX];
 
   /* When we change display size, we may have to update static strings like size of files... */
   short curr_size;
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 21c22efa7fa..6bd993b4175 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -744,13 +744,13 @@ static void draw_columnheader_columns(const FileSelectParams *params,
   sx = ofs_x + layout->tile_w;
   sy = v2d->cur.ymax;
 
-  for (FileListColumns column = MAX_FILE_COLUMN - 1; column >= 0; column--) {
+  for (FileListColumns column = COLUMN_MAX - 1; column >= 0; column--) {
     if (!filelist_column_enabled(params, column)) {
       continue;
     }
     const int width = (column == COLUMN_NAME) ?
                           remaining_width :
-                          layout->column_widths[column] + DETAILS_COLUMN_PADDING;
+                          layout->details_columns[column].width + DETAILS_COLUMN_PADDING;
 
     /* Active sort type triangle */
     if (filelist_column_matches_sort(params, column)) {
@@ -768,7 +768,7 @@ static void draw_columnheader_columns(const FileSelectParams *params,
 
     file_draw_string(sx + ofs_x,
                      sy,
-                     layout->column_names[column],
+                     layout->details_columns[column].name,
                      width,
                      layout->columnheader_h,
                      UI_STYLE_TEXT_LEFT,
@@ -852,7 +852,7 @@ static void draw_details_columns(const FileSelectParams *params,
   const bool update_stat_strings = small_size != SMALL_SIZE_CHECK(layout->curr_size);
   int sx = pos_x + layout->tile_w, sy = pos_y;
 
-  for (FileListColumns column = MAX_FILE_COLUMN - 1; column >= 0; column--) {
+  for (FileListColumns column = COLUMN_MAX - 1; column >= 0; column--) {
     /* Name column is not a detail column (should already be drawn), always skip here. */
     if ((column == COLUMN_NAME) || !filelist_column_enabled(params, column)) {
       continue;
@@ -860,12 +860,12 @@ static void draw_details_columns(const FileSelectParams *params,
     const char *str = filelist_get_details_column_string(
         column, file, small_size, update_stat_strings);
 
-    sx -= (int)layout->column_widths[column] + DETAILS_COLUMN_PADDING;
+    sx -= (int)layout->details_columns[column].width + DETAILS_COLUMN_PADDING;
     if (str) {
       file_draw_string(sx + DETAILS_COLUMN_PADDING,
                        sy,
                        str,
-                       layout->column_widths[column],
+                       layout->details_columns[column].width,
                        layout->tile_h,
                        align,
                        text_col);
@@ -921,8 +921,9 @@ void file_draw_list(const bContext *C, ARegion *ar)
 
   filelist_file_cache_slidingwindow_set(files, numfiles_layout);
 
-  textwidth = (FILE_IMGDISPLAY == params->display) ? layout->tile_w :
-                                                     (int)layout->column_widths[COLUMN_NAME];
+  textwidth = (FILE_IMGDISPLAY == params->display) ?
+                  layout->tile_w :
+                  (int)layout->details_columns[COLUMN_NAME].width;
   textheight = (int)(layout->textheight * 3.0 / 2.0 + 0.5);
 
   align = (FILE_IMGDISPLAY == params->display) ? UI_STYLE_TEXT_CENTER : UI_STYLE_TEXT_LEFT;
@@ -1037,7 +1038,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
         width = layout->tile_w - 2 * padx;
       }
       else if (params->display == FILE_LONGDISPLAY) {
-        width = layout->column_widths[COLUMN_NAME] + DETAILS_COLUMN_PADDING - 2 * padx;
+        width = layout->details_columns[COLUMN_NAME].width + DETAILS_COLUMN_PADDING - 2 * padx;
       }
       else {
         BLI_assert(params->display == FILE_IMGDISPLAY);
@@ -1074,7 +1075,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
           sx + 1 + icon_ofs, tpos, file->name, (float)textwidth, textheight, align, text_col);
     }
 
-    sx += (int)layout->column_widths[COLUMN_NAME] + DETAILS_COLUMN_PADDING;
+    sx += (int)layout->details_columns[COLUMN_NAME].width + DETAILS_COLUMN_PADDING;
     draw_details_columns(params, layout, file, xmin, sy, align, text_col);
   }
 
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index ad0de41c2fa..88d3da04ef8 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -543,28 +543,27 @@ float file_font_pointsize(void)
 
 static void column_widths(FileSelectParams *params, struct FileLayout *layout)
 {
-  int i;
+  FileDetailsColumn *columns = layout->details_columns;
   const bool small_size = SMALL_SIZE_CHECK(params->thumbnail_size);
   const int pad = small_size ? 0 : DETAILS_COLUMN_PADDING;
 
-  for (i = 0; i < MAX_FILE_COLUMN; ++i) {
-    layout->column_widths[i] = 0;
+  for (int i = 0; i < COLUMN_MAX; ++i) {
+    columns[i].width = 0;
   }
 
-  layout->column_widths[COLUMN_NAME] = ((float)params->thumbnail_size / 8.0f) * UI_UNIT_X;
+  columns[COLUMN_NAME].width = ((float)params->thumbnail_size / 8.0f) * UI_UNIT_X;
   /* Biggest possible reasonable values... */
-  layout->column_widths[COLUMN_DATE] = file_string_width(small_size ? "23/08/89" : "23-Dec-89") +
-                                       pad;
-  layout->column_widths[COLUMN_TIME] = file_string_width("23:59") + pad;
-  layout->column_widths[COLUMN_SIZE] = file_string_width(small_size ? "98.7 M" : "98.7 MiB") + pad;
+  columns[COLUMN_DATE].width = file_string_width(small_size ? "23/08/89" : "23-Dec-89") + pad;
+  columns[COLUMN_TIME].width = file_string_width("23:59") + pad;
+  columns[COLUMN_SIZE].width = file_string_width(small_size ? "98.7 M" : "98.7 MiB") + pad;
 }
 
 static void column_names(FileLayout *layout)
 {
-  layout->column_names[COLUMN_NAME] = "Name";
-  layout->column_names[COLUMN_DATE] = "Date";
-  layout->column_names[COLUMN_TIME] = "Time";
-  layout->column_names[COLUMN_SIZE] = "Size";
+  layout->details_columns[COLUMN_NAME].name = "Name";
+  layout->details_columns[COLUMN_DATE].name = "Date";
+  layout->details_columns[COLUMN_TIME].name = "Time";
+  layout->details_columns[COLUMN_SIZE].name = "Size";
 }
 
 void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
@@ -658,10 +657,10 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
 
     column_widths(params, layout);
     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;
+             (int)layout->details_columns[COLUMN_NAME].width + column_space +
+             (int)layout->details_columns[COLUMN_DATE].width + column_space +
+             (int)layout->details_columns[COLUMN_TIME].width + column_space +
+             (int)layout->details_columns[COLUMN_SIZE].width + column_space;
     layout->tile_w = maxlen;
     if (layout->rows > 0) {
       layout->columns = numfiles / layout->rows + 1;  // XXX dirty, modulo is zero



More information about the Bf-blender-cvs mailing list