From 63fc267929e64cd8ab09d35cae12a172d3e218f3 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 19:59:57 +0000 Subject: [PATCH] [#20213] Align to Transform Orientation crashes Blender Align needs to be call with region context. Also added checks to prevent this from crashing if not called properly. --- release/scripts/ui/space_view3d.py | 2 +- source/blender/editors/transform/transform.c | 2 +- source/blender/editors/transform/transform_generics.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 5ad63a578d2..ea44e43c851 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -139,7 +139,7 @@ class VIEW3D_MT_transform(bpy.types.Menu): if context.edit_object and context.edit_object.type == 'ARMATURE': layout.operator("armature.align") else: - layout.operator_context = 'EXEC_AREA' + layout.operator_context = 'EXEC_REGION_WIN' layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working layout.separator() diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index cbcb3953f49..ffc6ea86835 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -126,7 +126,7 @@ void setTransformViewMatrices(TransInfo *t) { - if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) { + if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW) { RegionView3D *rv3d = t->ar->regiondata; copy_m4_m4(t->viewmat, rv3d->viewmat); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 71a5affb573..c9b5b17091e 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1357,7 +1357,7 @@ void calculateCenter(TransInfo *t) /* for panning from cameraview */ if(t->flag & T_OBJECT) { - if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) + if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW) { View3D *v3d = t->view; Scene *scene = t->scene;