[Bf-blender-cvs] [f1ebcfeef94] temp-spreadsheet-row-filter: Gray out row filters if the flag is turned off

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


Commit: f1ebcfeef9428d703c15a2ecb7d076cc1406ce88
Author: Hans Goudey
Date:   Tue Jun 15 21:41:55 2021 -0500
Branches: temp-spreadsheet-row-filter
https://developer.blender.org/rBf1ebcfeef9428d703c15a2ecb7d076cc1406ce88

Gray out row filters if the flag is turned off

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

M	source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc

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

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 e272f5a9121..927783b41f5 100644
--- a/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
+++ b/source/blender/editors/space_spreadsheet/spreadsheet_row_filter_ui.cc
@@ -138,7 +138,8 @@ static void spreadsheet_filter_panel_draw_header(const bContext *C, Panel *panel
                                                     filter->operation;
 
   const SpreadsheetColumn *column = lookup_visible_column_for_filter(*sspreadsheet, column_name);
-  if (column == nullptr && !column_name.is_empty()) {
+  if (!(sspreadsheet->filter_flag & SPREADSHEET_FILTER_ENABLE) ||
+      column == nullptr && !column_name.is_empty()) {
     uiLayoutSetActive(layout, false);
   }
   if (column != nullptr) {
@@ -183,22 +184,28 @@ static void spreadsheet_filter_panel_draw(const bContext *C, Panel *panel)
   PointerRNA *filter_ptr = UI_panel_custom_data_get(panel);
   SpreadsheetRowFilter *filter = (SpreadsheetRowFilter *)filter_ptr->data;
   const StringRef column_name = filter->column_name;
-  const eSpreadsheetFilterOperation operation = (const eSpreadsheetFilterOperation)
-                                                    filter->operation;
+  const eSpreadsheetFilterOperation operation = (eSpreadsheetFilterOperation)filter->operation;
 
   const SpreadsheetColumn *column = lookup_visible_column_for_filter(*sspreadsheet, column_name);
-  if (!(filter->flag & SPREADSHEET_ROW_FILTER_ENABLED) ||
+  if (!(sspreadsheet->filter_flag & SPREADSHEET_FILTER_ENABLE) ||
+      !(filter->flag & SPREADSHEET_ROW_FILTER_ENABLED) ||
       (column == nullptr && !column_name.is_empty())) {
     uiLayoutSetActive(layout, false);
   }
-  const eSpreadsheetColumnValueType data_type = static_cast<eSpreadsheetColumnValueType>(
-      filter->last_data_type);
 
   uiLayoutSetPropSep(layout, true);
   uiLayoutSetPropDecorate(layout, false);
 
   uiItemR(layout, filter_ptr, "column_name", 0, IFACE_("Column"), ICON_NONE);
 
+  /* Don't draw settings for filters with no corresponding visible column. */
+  if (column == nullptr || column_name.is_empty()) {
+    return;
+  }
+
+  const eSpreadsheetColumnValueType data_type = static_cast<eSpreadsheetColumnValueType>(
+      filter->last_data_type);
+
   switch (data_type) {
     case SPREADSHEET_VALUE_TYPE_INT32:
       uiItemR(layout, filter_ptr, "operation", 0, nullptr, ICON_NONE);
@@ -250,6 +257,10 @@ static void spreadsheet_row_filters_layout(const bContext *C, Panel *panel)
   RNA_pointer_create(&screen->id, &RNA_SpaceSpreadsheet, sspreadsheet, &sspreadsheet_ptr);
   uiItemR(layout, &sspreadsheet_ptr, "show_only_selected", 0, IFACE_("Selected Only"), ICON_NONE);
 
+  if (!(sspreadsheet->filter_flag & SPREADSHEET_FILTER_ENABLE)) {
+    uiLayoutSetActive(layout, false);
+  }
+
   uiItemO(layout, nullptr, ICON_ADD, "SPREADSHEET_OT_add_row_filter_rule");
 
   const bool panels_match = UI_panel_list_matches_data(region, row_filters, filter_panel_id_fn);



More information about the Bf-blender-cvs mailing list