Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/mesh/editmesh_select.c')
-rw-r--r--source/blender/editors/mesh/editmesh_select.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index 23828098940..6cdf7a629d9 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -57,6 +57,7 @@
#include "ED_mesh.h"
#include "ED_screen.h"
#include "ED_view3d.h"
+#include "ED_curve.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
@@ -1303,14 +1304,23 @@ static bool mouse_mesh_loop(bContext *C, const int mval[2], bool extend, bool de
static int edbm_select_loop_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
-
+ bool extend = RNA_boolean_get(op->ptr, "extend");
+ bool deselect = RNA_boolean_get(op->ptr, "deselect");
+ bool toggle = RNA_boolean_get(op->ptr, "toggle");
+
+ /* NURBS surfaces have their own loop selection code. */
+ Object *obedit = CTX_data_edit_object(C);
+ if (ELEM(obedit->type, OB_CURVE, OB_SURF))
+ {
+ int location[2];
+ RNA_int_get_array(op->ptr, "location", location);
+ return mouse_nurb(C, location, extend, deselect, toggle, true);
+ }
+ /* end NURBS interception code */
+
+ bool b_ring = RNA_boolean_get(op->ptr, "ring");
view3d_operator_needs_opengl(C);
-
- if (mouse_mesh_loop(C, event->mval,
- RNA_boolean_get(op->ptr, "extend"),
- RNA_boolean_get(op->ptr, "deselect"),
- RNA_boolean_get(op->ptr, "toggle"),
- RNA_boolean_get(op->ptr, "ring")))
+ if (mouse_mesh_loop(C, event->mval, extend, deselect, toggle, b_ring))
{
return OPERATOR_FINISHED;
}
@@ -1328,7 +1338,7 @@ void MESH_OT_loop_select(wmOperatorType *ot)
/* api callbacks */
ot->invoke = edbm_select_loop_invoke;
- ot->poll = ED_operator_editmesh_region_view3d;
+ ot->poll = ED_operator_editmesh_or_editcurve_region_view3d;
/* flags */
ot->flag = OPTYPE_UNDO;