diff --git a/source/blender/include/transform.h b/source/blender/include/transform.h index 37b28754f92..2ce022a650a 100755 --- a/source/blender/include/transform.h +++ b/source/blender/include/transform.h @@ -323,8 +323,10 @@ int clipUVTransform(TransInfo *t, float *vec, int resize); /*********************** exported from transform_manipulator.c ********** */ struct ScrArea; +struct View3d; void draw_manipulator_ext(struct ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3]); int calc_manipulator_stats(struct ScrArea *sa); +float get_drawsize(struct View3D *v3d); /*********************** TransData Creation and General Handling *********** */ void createTransData(TransInfo *t); diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c index 6e6ae53a651..36acfcd4a59 100644 --- a/source/blender/src/transform_manipulator.c +++ b/source/blender/src/transform_manipulator.c @@ -1328,9 +1328,9 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag /* ********************************************* */ -static float get_manipulator_drawsize(ScrArea *sa) +float get_drawsize(View3D *v3d) { - View3D *v3d= sa->spacedata.first; + ScrArea *sa = v3d->area; float size, vec[3], len1, len2; /* size calculus, depending ortho/persp settings, like initgrabz() */ @@ -1341,7 +1341,7 @@ static float get_manipulator_drawsize(ScrArea *sa) VECCOPY(vec, v3d->persinv[1]); len2= Normalise(vec); - size*= (0.01f*(float)U.tw_size)*(len1>len2?len1:len2); + size*= 0.01f*(len1>len2?len1:len2); /* correct for window size to make widgets appear fixed size */ if(sa->winx > sa->winy) size*= 1000.0f/(float)sa->winx; @@ -1350,6 +1350,16 @@ static float get_manipulator_drawsize(ScrArea *sa) return size; } +static float get_manipulator_drawsize(ScrArea *sa) +{ + View3D *v3d= sa->spacedata.first; + float size = get_drawsize(v3d); + + size*= (float)U.tw_size; + + return size; +} + /* exported to transform_constraints.c */ /* mat, vec = default orientation and location */ /* type = transform type */ diff --git a/source/blender/src/transform_snap.c b/source/blender/src/transform_snap.c index bf307eb5825..3a4bb5087a4 100644 --- a/source/blender/src/transform_snap.c +++ b/source/blender/src/transform_snap.c @@ -82,8 +82,13 @@ void drawSnapping(TransInfo *t) if ((t->tsnap.status & (SNAP_ON|POINT_INIT|TARGET_INIT)) == (SNAP_ON|POINT_INIT|TARGET_INIT) && (G.qual & LR_CTRLKEY)) { float unitmat[4][4]; + float size; char col[4]; + size = get_drawsize(G.vd); + + size *= 0.5f * BIF_GetThemeValuef(TH_VERTEX_SIZE); + BIF_GetThemeColor3ubv(TH_TRANSFORM, col); glColor4ub(col[0], col[1], col[2], 128); @@ -95,7 +100,7 @@ void drawSnapping(TransInfo *t) glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]); Mat4One(unitmat); - drawcircball(GL_LINE_LOOP, unitmat[3], 0.1f, unitmat); + drawcircball(GL_LINE_LOOP, unitmat[3], size, unitmat); glPopMatrix(); } }