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.
This commit is contained in:
Ton Roosendaal 2004-11-30 22:32:52 +00:00
parent e7bd591842
commit 1534066d5b
2 changed files with 21 additions and 1 deletions

@ -700,6 +700,23 @@ void countall()
allqueue(REDRAWINFO, 1); /* 1, because header->win==0! */ 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() void snap_sel_to_grid()
{ {
@ -786,6 +803,7 @@ void snap_sel_to_grid()
base= base->next; base= base->next;
} }
update_select_dependency();
allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWVIEW3D, 0);
} }
@ -871,6 +889,7 @@ void snap_sel_to_curs()
base= base->next; base= base->next;
} }
update_select_dependency();
allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWVIEW3D, 0);
} }
@ -1181,7 +1200,7 @@ void snap_to_center()
base= base->next; base= base->next;
} }
update_select_dependency();
allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWVIEW3D, 0);
} }

@ -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) { for(base= G.scene->base.first; base; base= base->next) {
if(base->lay & G.vd->lay) { if(base->lay & G.vd->lay) {
project_short(base->object->obmat[3], &base->sx);
if(lasso_inside(mcords, moves, base->sx, base->sy)) { if(lasso_inside(mcords, moves, base->sx, base->sy)) {
if(select) base->flag |= SELECT; if(select) base->flag |= SELECT;