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-12 11:40:47 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-12 11:40:47 +0400
commitc74ace03e025b9ee94664f2ec8291279effb3500 (patch)
treee09f248ed6fb07de69d5ab1101d751defc0b2153 /source/blender/bmesh/intern/bmesh_marking.c
parent30888ac25c3fe76e50cdcc940419b247840b05ff (diff)
fix [#30907] Inset tool with Select Outer disabled does not allow translation of new faces
inset with select-inner faces gave invalid selection. also correct spelling in some comments.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_marking.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_marking.c43
1 files changed, 42 insertions, 1 deletions
diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c
index 03c4d3c9cbb..a83987be94c 100644
--- a/source/blender/bmesh/intern/bmesh_marking.c
+++ b/source/blender/bmesh/intern/bmesh_marking.c
@@ -395,7 +395,7 @@ void BM_face_select_set(BMesh *bm, BMFace *f, int select)
* Sets the selection mode for the bmesh,
* updating the selection state.
*/
-void BM_select_mode_set(BMesh *bm, int selectmode)
+void BM_mesh_select_mode_set(BMesh *bm, int selectmode)
{
BMIter iter;
BMElem *ele;
@@ -446,6 +446,47 @@ void BM_select_mode_set(BMesh *bm, int selectmode)
}
/**
+ * \brief De-Select, Re-Select elements
+ * Awkwardly named function
+ *
+ * Deselect's one type of elements then re-selects another,
+ * Use case is to de-select stray edges or verts.
+ */
+void BM_mesh_select_flush_strip(BMesh *bm, const char htype_desel, const char htype_sel)
+{
+ const char iter_types[3] = {BM_VERTS_OF_MESH,
+ BM_EDGES_OF_MESH,
+ BM_FACES_OF_MESH};
+
+ const char flag_types[3] = {BM_VERT, BM_EDGE, BM_FACE};
+
+ BMIter iter;
+ BMElem *ele;
+ int i;
+
+ for (i = 0; i < 3; i++) {
+ if (htype_desel & flag_types[i]) {
+ ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
+ for ( ; ele; ele = BM_iter_step(&iter)) {
+ BM_elem_flag_disable(ele, BM_ELEM_SELECT);
+ }
+ }
+ }
+
+ for (i = 0; i < 3; i++) {
+ if (htype_sel & flag_types[i]) {
+ ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
+ for ( ; ele; ele = BM_iter_step(&iter)) {
+ if (BM_elem_flag_test(ele, BM_ELEM_SELECT)) {
+ BM_elem_select_set(bm, ele, TRUE);
+ }
+ }
+ }
+ }
+
+}
+
+/**
* counts number of elements with flag enabled/disabled
*/
static int bm_mesh_flag_count(BMesh *bm, const char htype, const char hflag,