Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2008-10-06 13:17:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2008-10-06 13:17:49 +0400
commitba720030be454fa36bb4e43b59896ea3753bb585 (patch)
tree096715cc19270affc45afeea8a426892b2df36ad /source
parentbd81616ac65a5326654f53cd3dc517b6eea35b43 (diff)
* dont change handle types when adjusting the radius or tilt of a curve handel.
* dont take the handles into account for the manipulator center when they are not drawn.
Diffstat (limited to 'source')
-rw-r--r--source/blender/src/transform_conversions.c5
-rw-r--r--source/blender/src/transform_manipulator.c13
2 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c
index 5dadcc67a09..00937e893f1 100644
--- a/source/blender/src/transform_conversions.c
+++ b/source/blender/src/transform_conversions.c
@@ -1428,7 +1428,10 @@ static void createTransCurveVerts(TransInfo *t)
if (propmode && head != tail)
calc_distanceCurveVerts(head, tail-1);
- testhandlesNurb(nu); /* sets the handles based on their selection, do this after the data is copied to the TransData */
+ /* TODO - in the case of tilt and radius we can also avoid allocating the initTransDataCurveHandes
+ * but for now just dont change handle types */
+ if (ELEM(t->mode, TFM_CURVE_SHRINKFATTEN, TFM_TILT) == 0)
+ testhandlesNurb(nu); /* sets the handles based on their selection, do this after the data is copied to the TransData */
}
else {
TransData *head, *tail;
diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c
index 709879f142b..b5a5ecd05ce 100644
--- a/source/blender/src/transform_manipulator.c
+++ b/source/blender/src/transform_manipulator.c
@@ -282,8 +282,17 @@ int calc_manipulator_stats(ScrArea *sa)
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
- /* exception */
- if( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT ) {
+ /* exceptions
+ * if handles are hidden then only check the center points.
+ * If 2 or more are selected then only use the center point too.
+ */
+ if (G.f & G_HIDDENHANDLES) {
+ if (bezt->f2 & SELECT) {
+ calc_tw_center(bezt->vec[1]);
+ totsel++;
+ }
+ }
+ else if ( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT ) {
calc_tw_center(bezt->vec[1]);
totsel++;
}