[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