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

@@ -153,7 +153,6 @@ def edge_face_count_dict(mesh):
:rtype: dict
"""
#face_edge_keys = [face.edge_keys for face in ]
face_edge_count = {}
loops = mesh.loops
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 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 **************************** */
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 */
if ((t->around == V3D_LOCAL) &&
( (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))
)
{
if (transdata_check_local_center(t)) {
copy_v3_v3(center, td->center);
}
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 eul[3], fmat[3][3], quat[4];
float *center = t->center;
const float *center;
/* local constraint shouldn't alter center */
if (around == V3D_LOCAL) {
if ( (t->flag & (T_OBJECT | T_POSE)) ||
(t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE)) ||
(t->obedit && t->obedit->type == OB_ARMATURE))
if (transdata_check_local_center(t) ||
((around == V3D_LOCAL) && (t->options & CTX_MOVIECLIP)))
{
center = td->center;
}
if (t->options & CTX_MOVIECLIP) {
center = td->center;
}
else {
center = t->center;
}
if (t->flag & T_POINTS) {

View File

@@ -2548,7 +2548,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
{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[] = {
{V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
{V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""},