[Bf-blender-cvs] [2f87f3ae405] soc-2021-curves: Double click to cycle handle types
Dilith Jayakody
noreply at git.blender.org
Tue Jan 18 13:01:15 CET 2022
Commit: 2f87f3ae40520c1f5041d4edd7a2f0082b70bea8
Author: Dilith Jayakody
Date: Tue Jan 18 17:22:55 2022 +0530
Branches: soc-2021-curves
https://developer.blender.org/rB2f87f3ae40520c1f5041d4edd7a2f0082b70bea8
Double click to cycle handle types
===================================================================
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 db76016ebb3..48b9cf5069b 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -7009,7 +7009,7 @@ def km_3d_view_tool_edit_curve_pen(params):
("curve.pen", {"type": params.tool_mouse, "value": 'PRESS', "shift": True},
{"properties": [("insert_point", True), ("select_multi", True),]}),
("curve.pen", {"type": params.tool_mouse, "value": 'DOUBLE_CLICK'},
- {"properties": [("toggle_vector", True),]}),
+ {"properties": [("toggle_vector", True), ("cycle_handle_type", True),]}),
]},
)
diff --git a/source/blender/editors/curve/editcurve_pen.c b/source/blender/editors/curve/editcurve_pen.c
index 2869ff0c2fb..8e3c3941f8c 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -1580,7 +1580,7 @@ static void toggle_select_bp(BPoint *bp)
}
}
-static void toggle_vector_auto(BezTriple *bezt, short bezt_idx, CurvePenData *cpd)
+static void toggle_handle_types(BezTriple *bezt, short bezt_idx, CurvePenData *cpd)
{
if (bezt_idx == 0) {
if (bezt->h1 == HD_VECT) {
@@ -1608,6 +1608,22 @@ static void toggle_vector_auto(BezTriple *bezt, short bezt_idx, CurvePenData *cp
}
}
+static void cycle_handles(BezTriple *bezt)
+{
+ if (bezt->h1 == HD_AUTO) {
+ bezt->h1 = bezt->h2 = HD_VECT;
+ }
+ else if (bezt->h1 == HD_VECT) {
+ bezt->h1 = bezt->h2 = HD_ALIGN;
+ }
+ else if (bezt->h1 == HD_ALIGN) {
+ bezt->h1 = bezt->h2 = HD_FREE;
+ }
+ else {
+ bezt->h1 = bezt->h2 = HD_AUTO;
+ }
+}
+
static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
@@ -1646,6 +1662,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
const bool move_point = RNA_boolean_get(op->ptr, "move_point");
const bool close_spline = RNA_boolean_get(op->ptr, "close_spline");
const bool toggle_vector = RNA_boolean_get(op->ptr, "toggle_vector");
+ const bool cycle_handle_type = RNA_boolean_get(op->ptr, "cycle_handle_type");
const int free_toggle = RNA_enum_get(op->ptr, "free_toggle");
const int adj_handle = RNA_enum_get(op->ptr, "adj_handle");
const int move_entire = RNA_enum_get(op->ptr, "move_entire");
@@ -1790,7 +1807,13 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
get_closest_vertex_to_point_in_nurbs(
nurbs, &nu, &bezt, &bp, &bezt_idx, mval_fl, sel_dist_mul, &vc);
if (bezt) {
- toggle_vector_auto(bezt, bezt_idx, cpd);
+ if (bezt_idx == 1 && cycle_handle_type) {
+ cycle_handles(bezt);
+ cpd->acted = true;
+ }
+ else {
+ toggle_handle_types(bezt, bezt_idx, cpd);
+ }
if (nu && nu->type == CU_BEZIER) {
BKE_nurb_handles_calc(nu);
@@ -1927,4 +1950,9 @@ void CURVE_OT_pen(wmOperatorType *ot)
"Make a spline cyclic by clicking endpoints");
prop = RNA_def_boolean(
ot->srna, "toggle_vector", false, "Toggle Vector", "Toggle between Vector and Auto handles");
+ prop = RNA_def_boolean(ot->srna,
+ "cycle_handle_type",
+ false,
+ "Cycle Handle Type",
+ "Cycle between all four handle types");
}
More information about the Bf-blender-cvs
mailing list