Thanks so much for this fix!
Jonathan Williamson http://cgcookie.com On Mon, May 13, 2013 at 10:10 PM, Jonathan Williamson < jonat...@montagestudio.org> wrote: > Thanks so much for this fix! > > Jonathan Williamson > http://cgcookie.com > > > On Mon, May 13, 2013 at 9:55 PM, Campbell Barton <ideasma...@gmail.com>wrote: > >> Revision: 56784 >> >> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56784 >> Author: campbellbarton >> Date: 2013-05-14 04:55:21 +0000 (Tue, 14 May 2013) >> Log Message: >> ----------- >> fix for problem where edge loop select would select too many vertices >> (extend selection too far), >> >> before & after: >> http://www.graphicall.org/ftp/ideasman42/edgeloop_select_fix.png >> >> Modified Paths: >> -------------- >> trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c >> >> Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c >> =================================================================== >> --- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c >> 2013-05-14 04:09:02 UTC (rev 56783) >> +++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c >> 2013-05-14 04:55:21 UTC (rev 56784) >> @@ -428,6 +428,15 @@ >> * >> * Starts at a tool-flagged edge and walks over the edge loop >> */ >> + >> +/* utility function */ >> +static bool bm_loop_is_single(BMLoop *l) >> +{ >> + return ((BM_edge_is_boundary(l->e)) && >> + (l->f->len != 4) && >> + (BM_edge_is_boundary(l->next->e) || >> BM_edge_is_boundary(l->prev->e))); >> +} >> + >> static void bmw_LoopWalker_begin(BMWalker *walker, void *data) >> { >> BMwLoopWalker *lwalk = NULL, owalk, *owalk_pt; >> @@ -444,7 +453,7 @@ >> lwalk->cur = lwalk->start = e; >> lwalk->lastv = lwalk->startv = v; >> lwalk->is_boundary = BM_edge_is_boundary(e); >> - lwalk->is_single = (vert_edge_count[0] == 2 && vert_edge_count[1] >> == 2); >> + lwalk->is_single = (lwalk->is_boundary && >> bm_loop_is_single(e->l)); >> >> /* could also check that vertex*/ >> if ((lwalk->is_boundary == false) && >> @@ -639,6 +648,10 @@ >> } while (true); >> } >> >> + if (owalk.is_single == false && bm_loop_is_single(l)) { >> + l = NULL; >> + } >> + >> if (l != NULL) { >> if (l != e->l && >> bmw_mask_check_edge(walker, l->e) && >> >> _______________________________________________ >> Bf-blender-cvs mailing list >> bf-blender-...@blender.org >> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >> > > _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers