[Bf-blender-cvs] [b764b26d5a7] soc-2021-curves: Set `close spline` to be enabled by default
dilithjay
noreply at git.blender.org
Sun Jan 2 11:03:16 CET 2022
Commit: b764b26d5a79040bde33e775c36811901ee4d308
Author: dilithjay
Date: Fri Dec 31 23:04:17 2021 +0530
Branches: soc-2021-curves
https://developer.blender.org/rBb764b26d5a79040bde33e775c36811901ee4d308
Set `close spline` to be enabled by default
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M source/blender/editors/curve/editcurve_pen.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 979a8a42e9d..008331120fc 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -6997,7 +6997,8 @@ def km_3d_view_tool_edit_curve_pen(params):
("move_segment", True),
("select_point", True),
("move_point", True),
- ("extra_func", "FREE_TOGGLE")
+ ("close_spline", True),
+ ("extra_func", "FREE_TOGGLE"),
]}),
("curve.pen", {"type": params.tool_mouse, "value": 'PRESS', "ctrl": True},
{"properties": [("delete_point", True),]}),
diff --git a/source/blender/editors/curve/editcurve_pen.c b/source/blender/editors/curve/editcurve_pen.c
index 3963ad834b2..7c9bf9d46e3 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -86,6 +86,10 @@ typedef struct CurvePenData {
bool extra_pressed;
/* Whether a point was found underneath the mouse. */
bool found_point;
+
+ Nurb *nu;
+ BezTriple *bezt;
+ BPoint *bp;
} CurvePenData;
/* Enum to choose between the extra functionalities. */
@@ -1052,6 +1056,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
Object *obedit = CTX_data_edit_object(C);
ED_view3d_viewcontext_init(C, &vc, depsgraph);
+ Curve *cu = vc.obedit->data;
BezTriple *bezt = NULL;
BPoint *bp = NULL;
@@ -1150,20 +1155,14 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
}
else if (ELEM(event->type, LEFTMOUSE)) {
if (event->val == KM_PRESS) {
- Curve *cu = vc.obedit->data;
/* Get currently selected point if any. Used for making spline cyclic. */
ED_curve_nurb_vert_selected_find(cu, vc.v3d, &nu, &bezt, &bp);
if (ED_curve_editnurb_select_pick_thresholded(
C, event->mval, sel_dist_mul, false, false, false)) {
- if (close_spline && nu && !(nu->flagu & CU_NURB_CYCLIC)) {
- copy_v2_v2_int(vc.mval, event->mval);
- const bool closed = nu->pntsu > 2 &&
- make_cyclic_if_endpoints(nu, bezt, bp, &vc, C, sel_dist_mul);
-
- /* Set "new_point" to true to be able to click and drag to control handles when added. */
- cpd->new_point = closed;
- }
cpd->found_point = true;
+ cpd->nu = nu;
+ cpd->bezt = bezt;
+ cpd->bp = bp;
}
else {
if (is_spline_nearby(&vc, op, event)) {
@@ -1188,7 +1187,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
}
}
else if (event->val == KM_RELEASE) {
- bool deleted = false;
+ bool deleted = false, closed = false;
if (delete_point && !cpd->new_point && !cpd->dragging) {
if (ED_curve_editnurb_select_pick_thresholded(
@@ -1197,8 +1196,16 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
}
}
- if ((insert_point || extrude_point) && cpd->spline_nearby) {
- if (!cpd->dragging && !deleted) {
+ if (!deleted && close_spline && cpd->found_point && !cpd->dragging) {
+ if (cpd->nu && !(cpd->nu->flagu & CU_NURB_CYCLIC)) {
+ copy_v2_v2_int(vc.mval, event->mval);
+ closed = cpd->nu->pntsu > 2 &&
+ make_cyclic_if_endpoints(cpd->nu, cpd->bezt, cpd->bp, &vc, C, sel_dist_mul);
+ }
+ }
+
+ if (!deleted && !closed && (insert_point || extrude_point) && cpd->spline_nearby) {
+ if (!cpd->dragging) {
if (insert_point && move_seg) {
insert_point_to_segment(event, vc.obedit->data, &nu, &vc);
cpd->new_point = true;
More information about the Bf-blender-cvs
mailing list