checking for V3D_LOCAL was duplicated in transform.c, and both checks not quite correct.

- When checking edimode, make sure its mesh editmode.
- Graph editor supports this option but wasn't being checked.
This commit is contained in:
2013-02-18 15:47:13 +00:00
parent bd7648b2d2
commit 4cd487d731
3 changed files with 21 additions and 21 deletions

View File

@@ -152,8 +152,7 @@ def edge_face_count_dict(mesh):
faces using each edge. faces using each edge.
:rtype: dict :rtype: dict
""" """
#face_edge_keys = [face.edge_keys for face in ]
face_edge_count = {} face_edge_count = {}
loops = mesh.loops loops = mesh.loops
edges = mesh.edges edges = mesh.edges

View File

@@ -104,6 +104,16 @@ static int doVertSlide(TransInfo *t, float perc);
static void drawEdgeSlide(const struct bContext *C, TransInfo *t); static void drawEdgeSlide(const struct bContext *C, TransInfo *t);
static void drawVertSlide(const struct bContext *C, TransInfo *t); static void drawVertSlide(const struct bContext *C, TransInfo *t);
static bool transdata_check_local_center(TransInfo *t)
{
return ((t->around == V3D_LOCAL) && (
(t->flag & (T_OBJECT | T_POSE)) ||
(t->obedit && t->obedit->type == OB_MESH && (t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE))) ||
(t->obedit && t->obedit->type == OB_ARMATURE) ||
(t->spacetype == SPACE_IPO))
);
}
/* ************************** SPACE DEPENDANT CODE **************************** */ /* ************************** SPACE DEPENDANT CODE **************************** */
void setTransformViewMatrices(TransInfo *t) void setTransformViewMatrices(TransInfo *t)
@@ -3005,12 +3015,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3])
} }
/* local constraint shouldn't alter center */ /* local constraint shouldn't alter center */
if ((t->around == V3D_LOCAL) && if (transdata_check_local_center(t)) {
( (t->flag & (T_OBJECT | T_POSE)) ||
((t->flag & T_EDIT) && (t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE))) ||
(t->obedit && t->obedit->type == OB_ARMATURE))
)
{
copy_v3_v3(center, td->center); copy_v3_v3(center, td->center);
} }
else if (t->options & CTX_MOVIECLIP) { else if (t->options & CTX_MOVIECLIP) {
@@ -3387,20 +3392,16 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
{ {
float vec[3], totmat[3][3], smat[3][3]; float vec[3], totmat[3][3], smat[3][3];
float eul[3], fmat[3][3], quat[4]; float eul[3], fmat[3][3], quat[4];
float *center = t->center; const float *center;
/* local constraint shouldn't alter center */ /* local constraint shouldn't alter center */
if (around == V3D_LOCAL) { if (transdata_check_local_center(t) ||
if ( (t->flag & (T_OBJECT | T_POSE)) || ((around == V3D_LOCAL) && (t->options & CTX_MOVIECLIP)))
(t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE)) || {
(t->obedit && t->obedit->type == OB_ARMATURE)) center = td->center;
{ }
center = td->center; else {
} center = t->center;
if (t->options & CTX_MOVIECLIP) {
center = td->center;
}
} }
if (t->flag & T_POINTS) { if (t->flag & T_POINTS) {

View File

@@ -2548,7 +2548,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL} {0, NULL, 0, NULL, NULL}
}; };
/* this is basically the same as the one for the 3D-View, but with some entries ommitted */ /* this is basically the same as the one for the 3D-View, but with some entries omitted */
static EnumPropertyItem gpivot_items[] = { static EnumPropertyItem gpivot_items[] = {
{V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
{V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""}, {V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""},