diff --git a/source/blender/blenkernel/intern/grease_pencil.cc b/source/blender/blenkernel/intern/grease_pencil.cc index 4e02c53c941..e4fb346130d 100644 --- a/source/blender/blenkernel/intern/grease_pencil.cc +++ b/source/blender/blenkernel/intern/grease_pencil.cc @@ -1908,6 +1908,16 @@ blender::Span GreasePencil::nodes_for_wr return this->root_group().nodes_for_write(); } +std::optional GreasePencil::get_layer_index( + const blender::bke::greasepencil::Layer &layer) const +{ + const int index = this->layers().first_index_try(&layer); + if (index == -1) { + return {}; + } + return index; +} + const blender::bke::greasepencil::Layer *GreasePencil::get_active_layer() const { if (this->active_layer == nullptr) { @@ -2174,7 +2184,7 @@ blender::IndexMask GreasePencil::layer_selection_by_name(const blender::StringRe } if (node->is_layer()) { - const int64_t index = this->layers().first_index(&node->as_layer()); + const int index = *this->get_layer_index(node->as_layer()); return blender::IndexMask::from_indices(Span{index}, memory); } else if (node->is_group()) { diff --git a/source/blender/makesdna/DNA_grease_pencil_types.h b/source/blender/makesdna/DNA_grease_pencil_types.h index 6317b59f286..ea1dc421b93 100644 --- a/source/blender/makesdna/DNA_grease_pencil_types.h +++ b/source/blender/makesdna/DNA_grease_pencil_types.h @@ -462,6 +462,9 @@ typedef struct GreasePencil { blender::Span nodes() const; blender::Span nodes_for_write(); + /* Return the index of the layer if it's found, otherwise std::nullopt. */ + std::optional get_layer_index(const blender::bke::greasepencil::Layer &layer) const; + /* Active layer functions. */ bool has_active_layer() const; const blender::bke::greasepencil::Layer *get_active_layer() const;