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: