bugfix [#24324] Wrong center for scaling Bezier Curve's handles

slight change to how transform calculates the center of each bezier handle selection.
- selecting both handles but not the knot now uses the mid point between the 2, before it used the handle.
- selecting 1 handle of a curve was still setting td->center to be the knot, now use the handles location only if its selected.
This commit is contained in:
Campbell Barton 2010-10-19 14:11:46 +00:00
parent dc7e1037d4
commit 26249043e6
2 changed files with 4 additions and 8 deletions

@ -1403,7 +1403,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
) {
VECCOPY(td->iloc, bezt->vec[0]);
td->loc= bezt->vec[0];
VECCOPY(td->center, bezt->vec[1]);
VECCOPY(td->center, bezt->vec[(hide_handles || bezt->f2 & SELECT) ? 1:0]);
if (hide_handles) {
if(bezt->f2 & SELECT) td->flag= TD_SELECTED;
else td->flag= 0;
@ -1462,7 +1462,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t)
) {
VECCOPY(td->iloc, bezt->vec[2]);
td->loc= bezt->vec[2];
VECCOPY(td->center, bezt->vec[1]);
VECCOPY(td->center, bezt->vec[(hide_handles || bezt->f2 & SELECT) ? 1:2]);
if (hide_handles) {
if(bezt->f2 & SELECT) td->flag= TD_SELECTED;
else td->flag= 0;

@ -308,7 +308,7 @@ int calc_manipulator_stats(const bContext *C)
while(a--) {
/* 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 the center knot is selected then only use this as the center point.
*/
if (cu->drawflag & CU_HIDE_HANDLES) {
if (bezt->f2 & SELECT) {
@ -316,7 +316,7 @@ int calc_manipulator_stats(const bContext *C)
totsel++;
}
}
else if ( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT ) {
else if (bezt->f2 & SELECT) {
calc_tw_center(scene, bezt->vec[1]);
totsel++;
}
@ -325,10 +325,6 @@ int calc_manipulator_stats(const bContext *C)
calc_tw_center(scene, bezt->vec[0]);
totsel++;
}
if(bezt->f2) {
calc_tw_center(scene, bezt->vec[1]);
totsel++;
}
if(bezt->f3) {
calc_tw_center(scene, bezt->vec[2]);
totsel++;