Fix: GPv3: Functions like retrieve_editable_drawings can return duplicates

GPv3 utility functions `retrieve_editable_drawings()` and friends could
return duplicate drawings when multi frame editing is enabled and the
scene time is different than the selected frames.

This PR fixes that.

Pull Request: https://projects.blender.org/blender/blender/pulls/118566
This commit is contained in:
Sietse Brouwer
2024-02-21 16:01:32 +01:00
committed by Falk David
parent 02687d7609
commit fc5e2b94bc
@@ -234,14 +234,24 @@ static Array<int> get_frame_numbers_for_layer(const bke::greasepencil::Layer &la
const int current_frame,
const bool use_multi_frame_editing)
{
Vector<int> frame_numbers({current_frame});
Vector<int> frame_numbers;
if (use_multi_frame_editing) {
bool current_frame_is_covered = false;
const int drawing_index_at_current_frame = layer.drawing_index_at(current_frame);
for (const auto [frame_number, frame] : layer.frames().items()) {
if (frame_number != current_frame && frame.is_selected()) {
frame_numbers.append_unchecked(frame_number);
if (!frame.is_selected()) {
continue;
}
frame_numbers.append(frame_number);
current_frame_is_covered |= (frame.drawing_index == drawing_index_at_current_frame);
}
if (current_frame_is_covered) {
return frame_numbers.as_span();
}
}
frame_numbers.append(current_frame);
return frame_numbers.as_span();
}