Skip to content
Snippets Groups Projects
Commit 79e94408 authored by Christoph Lendenfeld's avatar Christoph Lendenfeld Committed by Philipp Oeser
Browse files

Fix #130061: Pose Sliding with no bones selected resets overlay flags

The issue was that the struct `tPoseSlideOp` tracks the
viewport overlay flags so they can be restored after the operator has run.
But the flag was stored at the end of `pose_slide_invoke_common` which
exits early if no keys are selected.
This then calls `pose_slide_exit` which sets the viewport flags to 0, because they were
never stored in the first place.

The fix is to move the storing of the flag up to `pose_slide_init` to ensure that it
is captured as soon as the struct is allocated.

Pull Request: https://projects.blender.org/blender/blender/pulls/131327
parent 3f74f481
No related branches found
No related tags found
No related merge requests found
...@@ -277,6 +277,10 @@ static int pose_slide_init(bContext *C, wmOperator *op, ePoseSlide_Modes mode) ...@@ -277,6 +277,10 @@ static int pose_slide_init(bContext *C, wmOperator *op, ePoseSlide_Modes mode)
pso->num.val_flag[0] |= NUM_NO_NEGATIVE; pso->num.val_flag[0] |= NUM_NO_NEGATIVE;
pso->num.unit_type[0] = B_UNIT_NONE; /* Percentages don't have any units. */ pso->num.unit_type[0] = B_UNIT_NONE; /* Percentages don't have any units. */
/* Save current bone visibility. */
View3D *v3d = pso->area->spacedata.first;
pso->overlay_flag = v3d->overlay.flag;
/* Return status is whether we've got all the data we were requested to get. */ /* Return status is whether we've got all the data we were requested to get. */
return 1; return 1;
} }
...@@ -1111,10 +1115,6 @@ static int pose_slide_invoke_common(bContext *C, wmOperator *op, const wmEvent * ...@@ -1111,10 +1115,6 @@ static int pose_slide_invoke_common(bContext *C, wmOperator *op, const wmEvent *
/* Add a modal handler for this operator. */ /* Add a modal handler for this operator. */
WM_event_add_modal_handler(C, op); WM_event_add_modal_handler(C, op);
/* Save current bone visibility. */
View3D *v3d = pso->area->spacedata.first;
pso->overlay_flag = v3d->overlay.flag;
return OPERATOR_RUNNING_MODAL; return OPERATOR_RUNNING_MODAL;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment