From 6afafc46f639c49a0d12a22c3ce298c6b6396ec9 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Sun, 20 Jun 2021 17:39:18 -0500 Subject: Fix: Spreadsheet selection filter crash on non-mesh components The spreadsheet filter tried to apply the mesh selection filter on non- mesh geometry components. Add a check for the component type, and also refactor the function to be more easily readable. --- .../spreadsheet_data_source_geometry.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc b/source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc index 77248254d7b..0c76c8b7a15 100644 --- a/source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc +++ b/source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc @@ -226,15 +226,23 @@ static void get_selected_indices_on_domain(const Mesh &mesh, } } +/** + * Only data sets corresponding to mesh objects in edit mode currently support selection filtering. + */ bool GeometryDataSource::has_selection_filter() const { Object *object_orig = DEG_get_original_object(object_eval_); - if (object_orig->type == OB_MESH) { - if (object_orig->mode == OB_MODE_EDIT) { - return true; - } + if (object_orig->type != OB_MESH) { + return false; } - return false; + if (object_orig->mode != OB_MODE_EDIT) { + return false; + } + if (component_->type() != GEO_COMPONENT_TYPE_MESH) { + return false; + } + + return true; } void GeometryDataSource::apply_selection_filter(MutableSpan rows_included) const -- cgit v1.2.3