Fix T99037: bpy.ops.transform.rotate fails in background mode

This reverts commit c503c5f756,
alternate fix for T82244.

Scripts that run in background mode expected rotation to be usable,
defaulting to the 3D viewport when there is no active windowing data.

Also resolves T88610.
This commit is contained in:
Campbell Barton 2022-06-24 17:45:07 +10:00
parent 585d81ba2b
commit 77eadbede4
Notes: blender-bot 2023-02-14 06:17:14 +01:00
Referenced by issue #99323, Regression: Geometry nodes result does not show in mesh edit mode
Referenced by issue #99037, bpy.ops.transform.rotate doesn't work in blender in background mode. (same as T88610)
Referenced by issue #88610, bpy.ops.transform.rotate doesn't work in blender as module or in blender in background mode.
2 changed files with 7 additions and 13 deletions

View File

@ -11,6 +11,7 @@
#include "BLI_task.h"
#include "BKE_context.h"
#include "BKE_report.h"
#include "BKE_unit.h"
#include "ED_screen.h"
@ -343,6 +344,11 @@ static void applyRotationMatrix(TransInfo *t, float mat_xform[4][4])
void initRotation(TransInfo *t)
{
if (t->spacetype == SPACE_ACTION) {
BKE_report(t->reports, RPT_ERROR, "Rotation is not supported in the Dope Sheet Editor");
t->state = TRANS_CANCEL;
}
t->mode = TFM_ROTATION;
t->transform = applyRotation;
t->transform_matrix = applyRotationMatrix;

View File

@ -849,17 +849,6 @@ static void TRANSFORM_OT_trackball(struct wmOperatorType *ot)
Transform_Properties(ot, P_PROPORTIONAL | P_MIRROR | P_SNAP | P_GPENCIL_EDIT | P_CENTER);
}
/* Similar to #transform_shear_poll. */
static bool transform_rotate_poll(bContext *C)
{
if (!ED_operator_screenactive(C)) {
return false;
}
ScrArea *area = CTX_wm_area(C);
return area && !ELEM(area->spacetype, SPACE_ACTION);
}
static void TRANSFORM_OT_rotate(struct wmOperatorType *ot)
{
/* identifiers */
@ -873,7 +862,7 @@ static void TRANSFORM_OT_rotate(struct wmOperatorType *ot)
ot->exec = transform_exec;
ot->modal = transform_modal;
ot->cancel = transform_cancel;
ot->poll = transform_rotate_poll;
ot->poll = ED_operator_screenactive;
ot->poll_property = transform_poll_property;
RNA_def_float_rotation(
@ -938,7 +927,6 @@ static void TRANSFORM_OT_bend(struct wmOperatorType *ot)
Transform_Properties(ot, P_PROPORTIONAL | P_MIRROR | P_SNAP | P_GPENCIL_EDIT | P_CENTER);
}
/* Similar to #transform_rotate_poll. */
static bool transform_shear_poll(bContext *C)
{
if (!ED_operator_screenactive(C)) {