Fix #139572: Grease Pencil: Support pasting strokes into multiple frames
When multi-frame editing is enabled, users would expect to be able to paste strokes into multiple selected frames. This PR supports this by using `retrieve_editable_drawings` instead of `get_editable_drawing_at` to achieve such feature. Pull Request: https://projects.blender.org/blender/blender/pulls/139573
This commit is contained in:
parent
0034b6cf3e
commit
48f49deaa8
@ -2711,12 +2711,13 @@ static wmOperatorStatus grease_pencil_paste_strokes_exec(bContext *C, wmOperator
|
|||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
bke::greasepencil::Drawing *target_drawing = grease_pencil.get_editable_drawing_at(
|
Vector<MutableDrawingInfo> drawing_infos =
|
||||||
*active_layer, scene.r.cfra);
|
ed::greasepencil::retrieve_editable_drawings_from_layer(
|
||||||
BLI_assert(target_drawing != nullptr);
|
scene, grease_pencil, *active_layer);
|
||||||
|
for (const MutableDrawingInfo info : drawing_infos) {
|
||||||
paste_all_strokes_from_clipboard(
|
paste_all_strokes_from_clipboard(
|
||||||
*bmain, *object, object_to_layer, keep_world_transform, paste_on_back, *target_drawing);
|
*bmain, *object, object_to_layer, keep_world_transform, paste_on_back, info.drawing);
|
||||||
|
}
|
||||||
|
|
||||||
if (inserted_keyframe) {
|
if (inserted_keyframe) {
|
||||||
WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, nullptr);
|
WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, nullptr);
|
||||||
@ -2776,18 +2777,19 @@ static wmOperatorStatus grease_pencil_paste_strokes_exec(bContext *C, wmOperator
|
|||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
bke::greasepencil::Drawing *target_drawing = grease_pencil.get_editable_drawing_at(
|
Vector<MutableDrawingInfo> drawing_infos =
|
||||||
paste_layer, scene.r.cfra);
|
ed::greasepencil::retrieve_editable_drawings_from_layer(
|
||||||
BLI_assert(target_drawing != nullptr);
|
scene, grease_pencil, paste_layer);
|
||||||
|
for (const MutableDrawingInfo info : drawing_infos) {
|
||||||
clipboard_paste_strokes_ex(*bmain,
|
clipboard_paste_strokes_ex(*bmain,
|
||||||
*object,
|
*object,
|
||||||
curves_to_paste,
|
curves_to_paste,
|
||||||
object_to_paste_layer,
|
object_to_paste_layer,
|
||||||
clipboard.object_to_world,
|
clipboard.object_to_world,
|
||||||
keep_world_transform,
|
keep_world_transform,
|
||||||
paste_on_back,
|
paste_on_back,
|
||||||
*target_drawing);
|
info.drawing);
|
||||||
|
}
|
||||||
|
|
||||||
if (inserted_keyframe) {
|
if (inserted_keyframe) {
|
||||||
WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, nullptr);
|
WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, nullptr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user