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:
authorAntony Riakiotakis <kalast@gmail.com>2012-02-27 20:45:48 +0400
committerAntony Riakiotakis <kalast@gmail.com>2012-02-27 20:45:48 +0400
commitd55c1d59f91a919c8d4b935136454200adb0b8e8 (patch)
treece36a1aff7544ca37b09432a4894e1b4fbbdd022 /source/blender/editors/transform/transform.c
parentd8403875ccc422c88e6d46090033e3e31a0da02b (diff)
Fix: confirming edge slide with factor 0 and automerge turned on would delete the selected edges. Caused by automerging the edges with temporary geometry used for the operation, that was getting deleted later. Now deleting the temporary geometry before automerging.
Diffstat (limited to 'source/blender/editors/transform/transform.c')
-rw-r--r--source/blender/editors/transform/transform.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 9b971376846..c9cb6c79066 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -4631,6 +4631,7 @@ static int createSlideVerts(TransInfo *t)
BLI_smallhash_insert(&sld->vhash, (uintptr_t)tempsv->v, tempsv);
}
+ sld->origfaces_init = TRUE;
sld->em = em;
/*zero out start*/
@@ -4742,11 +4743,26 @@ void projectSVData(TransInfo *t, int final)
BLI_smallhash_release(&visit);
}
+void freeSlideTempFaces(SlideData *sld){
+ if(sld->origfaces_init){
+ SmallHashIter hiter;
+ BMFace *copyf;
+
+ copyf = BLI_smallhash_iternew(&sld->origfaces, &hiter, NULL);
+ for (; copyf; copyf=BLI_smallhash_iternext(&hiter, NULL)) {
+ BM_face_verts_kill(sld->em->bm, copyf);
+ }
+
+ BLI_smallhash_release(&sld->origfaces);
+
+ sld->origfaces_init = FALSE;
+ }
+}
+
+
void freeSlideVerts(TransInfo *t)
{
SlideData *sld = t->customData;
- SmallHashIter hiter;
- BMFace *copyf;
#if 0 /*BMESH_TODO*/
if(me->drawflag & ME_DRAWEXTRA_EDGELEN) {
@@ -4776,17 +4792,13 @@ void freeSlideVerts(TransInfo *t)
sld->perc = 0.0;
projectSVData(t, 0);
}
-
- copyf = BLI_smallhash_iternew(&sld->origfaces, &hiter, NULL);
- for (; copyf; copyf=BLI_smallhash_iternext(&hiter, NULL)) {
- BM_face_verts_kill(sld->em->bm, copyf);
- }
-
+
+ freeSlideTempFaces(sld);
+
sld->em->bm->ob = t->obedit;
bmesh_edit_end(sld->em->bm, BMO_OP_FLAG_UNTAN_MULTIRES);
BLI_smallhash_release(&sld->vhash);
- BLI_smallhash_release(&sld->origfaces);
MEM_freeN(sld->sv);
MEM_freeN(sld);