diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-10-07 07:39:06 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-10-09 14:23:39 +0300 |
commit | fe32c438ac3a1eda3f550768bd22e7da0b9f43a5 (patch) | |
tree | 6fda7e7a63750c27133908edefde61f03b5246e4 | |
parent | 5d59a51acab16e27c42e197c25c0d68a063c152c (diff) |
BMesh: maintain select-history when sorting
-rw-r--r-- | source/blender/bmesh/intern/bmesh_mesh.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 115330cb25a..9036e882b0b 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -1665,6 +1665,40 @@ void BM_mesh_remap( } } + /* Selection history */ + { + BMEditSelection *ese; + for (ese = bm->selected.first; ese; ese = ese->next) { + switch (ese->htype) { + case BM_VERT: + if (vptr_map) { + ese->ele = BLI_ghash_lookup(vptr_map, ese->ele); + BLI_assert(ese->ele); + } + break; + case BM_EDGE: + if (eptr_map) { + ese->ele = BLI_ghash_lookup(eptr_map, ese->ele); + BLI_assert(ese->ele); + } + break; + case BM_FACE: + if (fptr_map) { + ese->ele = BLI_ghash_lookup(fptr_map, ese->ele); + BLI_assert(ese->ele); + } + break; + } + } + } + + if (fptr_map) { + if (bm->act_face) { + bm->act_face = BLI_ghash_lookup(fptr_map, bm->act_face); + BLI_assert(bm->act_face); + } + } + if (vptr_map) BLI_ghash_free(vptr_map, NULL, NULL); if (eptr_map) |