[Bf-blender-cvs] [1fbdf19ee20] temp-spreadsheet-row-filter: Remove "Last Data Type" hack

Hans Goudey noreply at git.blender.org
Wed Jun 16 05:13:35 CEST 2021


Commit: 1fbdf19ee20b6cb1412746d5e2337b22942e39a7
Author: Hans Goudey
Date:   Tue Jun 15 22:12:50 2021 -0500
Branches: temp-spreadsheet-row-filter
https://developer.blender.org/rB1fbdf19ee20b6cb1412746d5e2337b22942e39a7

Remove "Last Data Type" hack

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

M	source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
M	source/blender/makesdna/DNA_space_types.h

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

diff --git a/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc b/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
index 39a3b7325ee..0d5de15805b 100644
--- a/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
+++ b/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
@@ -132,7 +132,7 @@ static void spreadsheet_filter_panel_draw_header(const bContext *C, Panel *panel
   uiLayout *layout = panel->layout;
   SpaceSpreadsheet *sspreadsheet = CTX_wm_space_spreadsheet(C);
   PointerRNA *filter_ptr = UI_panel_custom_data_get(panel);
-  SpreadsheetRowFilter *filter = (SpreadsheetRowFilter *)filter_ptr->data;
+  const SpreadsheetRowFilter *filter = (SpreadsheetRowFilter *)filter_ptr->data;
   const StringRef column_name = filter->column_name;
   const eSpreadsheetFilterOperation operation = (eSpreadsheetFilterOperation)filter->operation;
 
@@ -141,14 +141,6 @@ static void spreadsheet_filter_panel_draw_header(const bContext *C, Panel *panel
       (column == nullptr && !column_name.is_empty())) {
     uiLayoutSetActive(layout, false);
   }
-  if (column != nullptr) {
-    /* Set the cache of the last data type in the row filter. Two notes:
-     *  - Changing data during drawing can be dangerous and should be done with care.
-     *  - We only need to do this once in the header, since it is always drawn. */
-    filter->last_data_type = column->data_type;
-  }
-  const eSpreadsheetColumnValueType data_type = static_cast<eSpreadsheetColumnValueType>(
-      filter->last_data_type);
 
   uiLayout *row = uiLayoutRow(layout, true);
   uiLayoutSetEmboss(row, UI_EMBOSS_NONE);
@@ -157,7 +149,11 @@ static void spreadsheet_filter_panel_draw_header(const bContext *C, Panel *panel
   if (column_name.is_empty()) {
     uiItemL(row, IFACE_("Filter"), ICON_NONE);
   }
+  else if (column == nullptr) {
+    uiItemL(row, column_name.data(), ICON_NONE);
+  }
   else {
+    const eSpreadsheetColumnValueType data_type = (eSpreadsheetColumnValueType)column->data_type;
     std::stringstream ss;
     ss << column_name;
     ss << " ";
@@ -202,10 +198,7 @@ static void spreadsheet_filter_panel_draw(const bContext *C, Panel *panel)
     return;
   }
 
-  const eSpreadsheetColumnValueType data_type = static_cast<eSpreadsheetColumnValueType>(
-      filter->last_data_type);
-
-  switch (data_type) {
+  switch (static_cast<eSpreadsheetColumnValueType>(column->data_type)) {
     case SPREADSHEET_VALUE_TYPE_INT32:
       uiItemR(layout, filter_ptr, "operation", 0, nullptr, ICON_NONE);
       uiItemR(layout, filter_ptr, "value_int", 0, IFACE_("Value"), ICON_NONE);
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 56254fbfbfe..7804ece9769 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1974,15 +1974,7 @@ typedef struct SpreadsheetRowFilter {
   /* eSpaceSpreadsheet_RowFilterFlag. */
   uint8_t flag;
 
-  /**
-   * The data type of the last visible column with a corresponding display name. This is set at
-   * runtime, in order to "remember" the data type so the row filter can display the settings for
-   * the correct data type even if the data source is temporarily gone.
-   * #eSpreadsheetColumnValueType.
-   */
-  uint8_t last_data_type;
-
-  char _pad0[1];
+  char _pad0[2];
 
   int value_int;
   char *value_string;



More information about the Bf-blender-cvs mailing list