[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61156] trunk/blender/source/blender: Made active point and active spline behaviour more predictable on curves/ surfaces:
Kevin Mackay
mackay.ka at gmail.com
Wed Nov 6 00:37:09 CET 2013
Revision: 61156
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=61156
Author: yakca
Date: 2013-11-05 23:37:09 +0000 (Tue, 05 Nov 2013)
Log Message:
-----------
Made active point and active spline behaviour more predictable on curves/surfaces:
* deselect all no longer leaves an active point
* the most recently added spline becomes the active one
* on successful duplicate/delete the active point and active spline are reset
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/curve.c
trunk/blender/source/blender/editors/curve/editcurve.c
trunk/blender/source/blender/editors/curve/editcurve_add.c
Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c 2013-11-05 23:15:46 UTC (rev 61155)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c 2013-11-05 23:37:09 UTC (rev 61156)
@@ -230,6 +230,7 @@
cun->editnurb = NULL;
cun->editfont = NULL;
cun->selboxes = NULL;
+ cun->lastsel = NULL;
#if 0 // XXX old animation system
/* single user ipo too */
Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c 2013-11-05 23:15:46 UTC (rev 61155)
+++ trunk/blender/source/blender/editors/curve/editcurve.c 2013-11-05 23:37:09 UTC (rev 61156)
@@ -1279,6 +1279,8 @@
if (editnurb) {
Nurb *nu;
int a;
+ ((Curve *)obedit->data)->lastsel = NULL;
+
for (nu = editnurb->first; nu; nu = nu->next) {
if (nu->bezt) {
BezTriple *bezt;
@@ -1902,7 +1904,6 @@
int a, b, c, starta, enda, diffa, cyclicu, cyclicv, newu, newv;
char *usel;
- cu->lastsel = NULL;
while (nu) {
cyclicu = cyclicv = 0;
if (nu->type == CU_BEZIER) {
@@ -1927,7 +1928,6 @@
newnu = BKE_nurb_copy(nu, newu, 1);
BLI_addtail(newnurb, newnu);
- set_actNurb(obedit, newnu);
memcpy(newnu->bezt, &nu->bezt[starta], diffa * sizeof(BezTriple));
if (newu != diffa) {
memcpy(&newnu->bezt[diffa], nu->bezt, cyclicu * sizeof(BezTriple));
@@ -1976,7 +1976,6 @@
newnu = BKE_nurb_copy(nu, newu, 1);
BLI_addtail(newnurb, newnu);
- set_actNurb(obedit, newnu);
memcpy(newnu->bp, &nu->bp[starta], diffa * sizeof(BPoint));
if (newu != diffa) {
memcpy(&newnu->bp[diffa], nu->bp, cyclicu * sizeof(BPoint));
@@ -1995,8 +1994,6 @@
if (cyclicu != 0) {
newnu = BKE_nurb_copy(nu, cyclicu, 1);
BLI_addtail(newnurb, newnu);
- set_actNurb(obedit, newnu);
-
memcpy(newnu->bp, nu->bp, cyclicu * sizeof(BPoint));
newnu->flagu &= ~CU_NURB_CYCLIC;
@@ -2093,7 +2090,6 @@
memcpy(&newnu->bp[b * newu], &nu->bp[b * nu->pntsu + a], newu * sizeof(BPoint));
}
}
- set_actNurb(obedit, newnu);
BLI_addtail(newnurb, newnu);
if (newu != nu->pntsu) newnu->flagu &= ~CU_NURB_CYCLIC;
@@ -2110,7 +2106,6 @@
for (b = 0; b < newv; b++) {
memcpy(&newnu->bp[b * newu], &nu->bp[b * nu->pntsu], newu * sizeof(BPoint));
}
- set_actNurb(obedit, newnu);
BLI_addtail(newnurb, newnu);
if (newu != nu->pntsu) newnu->flagu &= ~CU_NURB_CYCLIC;
@@ -2127,32 +2122,35 @@
nu = nu->prev;
}
- for (nu = newnurb->first; nu; nu = nu->next) {
- if (nu->type == CU_BEZIER) {
- if (split) {
- /* recalc first and last */
- BKE_nurb_handle_calc_simple(nu, &nu->bezt[0]);
- BKE_nurb_handle_calc_simple(nu, &nu->bezt[nu->pntsu - 1]);
+ if (newnurb->first != NULL) {
+ cu->lastsel = NULL;
+ cu->actnu = -1;
+
+ for (nu = newnurb->first; nu; nu = nu->next) {
+ if (nu->type == CU_BEZIER) {
+ if (split) {
+ /* recalc first and last */
+ BKE_nurb_handle_calc_simple(nu, &nu->bezt[0]);
+ BKE_nurb_handle_calc_simple(nu, &nu->bezt[nu->pntsu - 1]);
+ }
}
- }
- else {
- /* knots done after duplicate as pntsu may change */
- nu->knotsu = nu->knotsv = NULL;
- BKE_nurb_order_clamp_u(nu);
- BKE_nurb_knot_calc_u(nu);
+ else {
+ /* knots done after duplicate as pntsu may change */
+ nu->knotsu = nu->knotsv = NULL;
+ BKE_nurb_order_clamp_u(nu);
+ BKE_nurb_knot_calc_u(nu);
- if (obedit->type == OB_SURF) {
- for (a = 0, bp = nu->bp; a < nu->pntsu * nu->pntsv; a++, bp++) {
- bp->f1 &= ~SURF_SEEN;
+ if (obedit->type == OB_SURF) {
+ for (a = 0, bp = nu->bp; a < nu->pntsu * nu->pntsv; a++, bp++) {
+ bp->f1 &= ~SURF_SEEN;
+ }
+
+ BKE_nurb_order_clamp_v(nu);
+ BKE_nurb_knot_calc_v(nu);
}
-
- BKE_nurb_order_clamp_v(nu);
- BKE_nurb_knot_calc_v(nu);
}
}
}
-
- /* actnu changed */
}
/**************** switch direction operator ***************/
@@ -6367,6 +6365,7 @@
static int curve_delete_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
+ Curve *cu = (Curve *)obedit->data;
eCurveElem_Types type = RNA_enum_get(op->ptr, "type");
int retval;
@@ -6375,6 +6374,9 @@
else BLI_assert(0);
if (retval == OPERATOR_FINISHED) {
+ cu->lastsel = NULL;
+ cu->actnu = -1;
+
if (ED_curve_updateAnimPaths(obedit->data)) WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, obedit);
WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
Modified: trunk/blender/source/blender/editors/curve/editcurve_add.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve_add.c 2013-11-05 23:15:46 UTC (rev 61155)
+++ trunk/blender/source/blender/editors/curve/editcurve_add.c 2013-11-05 23:37:09 UTC (rev 61156)
@@ -458,6 +458,8 @@
if (nu) { /* should always be set */
nu->flag |= CU_SMOOTH;
+ cu->actnu = BLI_countlist(editnurb);
+ cu->lastsel = NULL;
BKE_nurb_test2D(nu);
}
More information about the Bf-blender-cvs
mailing list