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:
authorCampbell Barton <ideasman42@gmail.com>2012-04-23 19:18:12 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-23 19:18:12 +0400
commiteff325a98c0765ca9045766cbf790ecdffdf0451 (patch)
treed8ff1cd9897eff61e2cc3d167d585059a786bdc0 /source/blender/editors/mesh/editmesh_rip.c
parentcb91c5d7b264bb96f3772e83cccd58c0fa7319f1 (diff)
minor changes to rip internals
- check if vertex ripping has no effect. - no need to flush selection for vertex rip.
Diffstat (limited to 'source/blender/editors/mesh/editmesh_rip.c')
-rw-r--r--source/blender/editors/mesh/editmesh_rip.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c
index 84e9b0658ed..2380efc818b 100644
--- a/source/blender/editors/mesh/editmesh_rip.c
+++ b/source/blender/editors/mesh/editmesh_rip.c
@@ -372,6 +372,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event)
BMLoop *l;
BMEdge *e, *e2;
BMVert *v, *ripvert = NULL;
+ const int totvert_orig = bm->totvert;
int i;
float projectMat[4][4], fmval[3] = {event->mval[0], event->mval[1]};
float dist = FLT_MAX;
@@ -573,6 +574,11 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event)
}
}
+ if (totvert_orig == bm->totvert) {
+ BKE_report(op->reports, RPT_ERROR, "No vertices could be ripped");
+ return OPERATOR_CANCELLED;
+ }
+
return OPERATOR_FINISHED;
}
@@ -590,6 +596,7 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event)
BMLoop *l;
BMEdge *e, *e2;
BMVert *v;
+ const int totedge_orig = bm->totedge;
int i;
float projectMat[4][4], fmval[3] = {event->mval[0], event->mval[1]};
@@ -671,6 +678,12 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event)
ar, projectMat, fmval);
MEM_freeN(eloop_pairs);
+ if (totedge_orig == bm->totedge) {
+ BKE_report(op->reports, RPT_ERROR, "No edges could be ripped");
+ return OPERATOR_CANCELLED;
+ }
+
+ EDBM_selectmode_flush(em);
return OPERATOR_FINISHED;
}
@@ -684,7 +697,6 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
BMIter iter;
BMEdge *e;
int singlesel = (bm->totvertsel == 1 && bm->totedgesel == 0 && bm->totfacesel == 0);
- const int totedge_orig = bm->totedge;
int ret;
/* running in face mode hardly makes sense, so convert to region loop and rip */
@@ -724,13 +736,6 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_CANCELLED;
}
- EDBM_selectmode_flush(em);
-
- if ((singlesel == FALSE) && (totedge_orig == bm->totedge)) {
- BKE_report(op->reports, RPT_ERROR, "No edges could be ripped");
- return OPERATOR_CANCELLED;
- }
-
BLI_assert(singlesel ? (bm->totvertsel > 0) : (bm->totedgesel > 0));
if (bm->totvertsel == 0) {