From fc5b0ba19a770bc54ab5499da39cfcc47453aef4 Mon Sep 17 00:00:00 2001 From: Amelie Fondevilla Date: Mon, 11 Sep 2023 11:58:57 +0200 Subject: [PATCH] GPv3: Set keyframe type Update of the animation operator "set keyframe type" to take into account grease pencil keyframes. Pull Request: https://projects.blender.org/blender/blender/pulls/111472 --- .../grease_pencil/intern/grease_pencil_frames.cc | 10 ++++++++++ source/blender/editors/include/ED_grease_pencil.hh | 3 +++ source/blender/editors/space_action/action_edit.cc | 5 ++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/grease_pencil/intern/grease_pencil_frames.cc b/source/blender/editors/grease_pencil/intern/grease_pencil_frames.cc index 04017d7ab3f..05de8b9a696 100644 --- a/source/blender/editors/grease_pencil/intern/grease_pencil_frames.cc +++ b/source/blender/editors/grease_pencil/intern/grease_pencil_frames.cc @@ -27,6 +27,16 @@ namespace blender::ed::greasepencil { +void set_selected_frames_type(bke::greasepencil::Layer &layer, + const eBezTriple_KeyframeType key_type) +{ + for (GreasePencilFrame &frame : layer.frames_for_write().values()) { + if (frame.is_selected()) { + frame.type = key_type; + } + } +} + bool remove_all_selected_frames(GreasePencil &grease_pencil, bke::greasepencil::Layer &layer) { Vector frames_to_remove; diff --git a/source/blender/editors/include/ED_grease_pencil.hh b/source/blender/editors/include/ED_grease_pencil.hh index 656c03e3bc7..e368cc25e44 100644 --- a/source/blender/editors/include/ED_grease_pencil.hh +++ b/source/blender/editors/include/ED_grease_pencil.hh @@ -47,6 +47,9 @@ eAttrDomain ED_grease_pencil_selection_domain_get(bContext *C); namespace blender::ed::greasepencil { +void set_selected_frames_type(bke::greasepencil::Layer &layer, + const eBezTriple_KeyframeType key_type); + bool remove_all_selected_frames(GreasePencil &grease_pencil, bke::greasepencil::Layer &layer); void select_layer_channel(GreasePencil &grease_pencil, bke::greasepencil::Layer *layer); diff --git a/source/blender/editors/space_action/action_edit.cc b/source/blender/editors/space_action/action_edit.cc index f24e2ca8f41..1c3ad86658b 100644 --- a/source/blender/editors/space_action/action_edit.cc +++ b/source/blender/editors/space_action/action_edit.cc @@ -1662,7 +1662,10 @@ static void setkeytype_action_keys(bAnimContext *ac, short mode) break; case ANIMTYPE_GREASE_PENCIL_LAYER: - /* GPv3: To be implemented. */ + blender::ed::greasepencil::set_selected_frames_type( + static_cast(ale->data)->wrap(), + static_cast(mode)); + ale->update |= ANIM_UPDATE_DEPS; break; case ANIMTYPE_FCURVE: