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
This commit is contained in:
committed by
Christoph Lendenfeld
parent
9fcc15f8a6
commit
6d4cd2dc96
@@ -259,6 +259,10 @@ static int pose_slide_init(bContext *C, wmOperator *op, ePoseSlide_Modes mode)
|
||||
pso->num.idx_max = 0; /* One axis. */
|
||||
pso->num.unit_type[0] = B_UNIT_NONE; /* Percentages don't have any units. */
|
||||
|
||||
/* Save current bone visibility. */
|
||||
View3D *v3d = static_cast<View3D *>(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 1;
|
||||
}
|
||||
@@ -1063,10 +1067,6 @@ static int pose_slide_invoke_common(bContext *C, wmOperator *op, const wmEvent *
|
||||
/* Add a modal handler for this operator. */
|
||||
WM_event_add_modal_handler(C, op);
|
||||
|
||||
/* Save current bone visibility. */
|
||||
View3D *v3d = static_cast<View3D *>(pso->area->spacedata.first);
|
||||
pso->overlay_flag = v3d->overlay.flag;
|
||||
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user