From 1534066d5bb46aac1a14ac0b10af72fd9b34a0ba Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Tue, 30 Nov 2004 22:32:52 +0000 Subject: [PATCH] - Bug fix #1913 Lasso select on objects didnt work with multiple views, due to lack of calculation of screencoords. - Bug fix #1914 Hooks didn't update 'parent' when snapping to grid a Hook. Solved it for snap to cursor too. --- source/blender/src/edit.c | 21 ++++++++++++++++++++- source/blender/src/editview.c | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/source/blender/src/edit.c b/source/blender/src/edit.c index e9699caf27e..370b868640c 100644 --- a/source/blender/src/edit.c +++ b/source/blender/src/edit.c @@ -700,6 +700,23 @@ void countall() allqueue(REDRAWINFO, 1); /* 1, because header->win==0! */ } +/* selected things moved, and might need update in displists */ +static void update_select_dependency(void) +{ + Base *base; + Object *ob; + for(base= (G.scene->base.first); base; base= base->next) { + ob= base->object; + if(ob->hooks.first) { + ObHook *hook= ob->hooks.first; + while(hook) { + if(hook->parent->flag & SELECT) freedisplist(&ob->disp); + hook= hook->next; + } + } + } + +} void snap_sel_to_grid() { @@ -786,6 +803,7 @@ void snap_sel_to_grid() base= base->next; } + update_select_dependency(); allqueue(REDRAWVIEW3D, 0); } @@ -871,6 +889,7 @@ void snap_sel_to_curs() base= base->next; } + update_select_dependency(); allqueue(REDRAWVIEW3D, 0); } @@ -1181,7 +1200,7 @@ void snap_to_center() base= base->next; } - + update_select_dependency(); allqueue(REDRAWVIEW3D, 0); } diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c index 7aedab6e539..514b369a7e8 100644 --- a/source/blender/src/editview.c +++ b/source/blender/src/editview.c @@ -239,6 +239,7 @@ static void do_lasso_select_objects(short mcords[][2], short moves, short select for(base= G.scene->base.first; base; base= base->next) { if(base->lay & G.vd->lay) { + project_short(base->object->obmat[3], &base->sx); if(lasso_inside(mcords, moves, base->sx, base->sy)) { if(select) base->flag |= SELECT;