forked from bartvdbraak/blender
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:
parent
dc7e1037d4
commit
26249043e6
@ -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++;
|
||||
|
Loading…
Reference in New Issue
Block a user