forked from bartvdbraak/blender
add missing notifiers for bone circle/border/lasso select.
This commit is contained in:
parent
4828d0cba0
commit
1e291017ca
@ -630,6 +630,7 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
|
|||||||
EditBone *ebone;
|
EditBone *ebone;
|
||||||
float vec[3];
|
float vec[3];
|
||||||
short sco1[2], sco2[2], didpoint;
|
short sco1[2], sco2[2], didpoint;
|
||||||
|
int change= FALSE;
|
||||||
|
|
||||||
/* set editdata in vc */
|
/* set editdata in vc */
|
||||||
|
|
||||||
@ -645,20 +646,27 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
|
|||||||
if(select) ebone->flag |= BONE_ROOTSEL;
|
if(select) ebone->flag |= BONE_ROOTSEL;
|
||||||
else ebone->flag &= ~BONE_ROOTSEL;
|
else ebone->flag &= ~BONE_ROOTSEL;
|
||||||
didpoint= 1;
|
didpoint= 1;
|
||||||
|
change= TRUE;
|
||||||
}
|
}
|
||||||
if(lasso_inside(mcords, moves, sco2[0], sco2[1])) {
|
if(lasso_inside(mcords, moves, sco2[0], sco2[1])) {
|
||||||
if(select) ebone->flag |= BONE_TIPSEL;
|
if(select) ebone->flag |= BONE_TIPSEL;
|
||||||
else ebone->flag &= ~BONE_TIPSEL;
|
else ebone->flag &= ~BONE_TIPSEL;
|
||||||
didpoint= 1;
|
didpoint= 1;
|
||||||
|
change= TRUE;
|
||||||
}
|
}
|
||||||
/* if one of points selected, we skip the bone itself */
|
/* if one of points selected, we skip the bone itself */
|
||||||
if(didpoint==0 && lasso_inside_edge(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1])) {
|
if(didpoint==0 && lasso_inside_edge(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1])) {
|
||||||
if(select) ebone->flag |= BONE_TIPSEL|BONE_ROOTSEL|BONE_SELECTED;
|
if(select) ebone->flag |= BONE_TIPSEL|BONE_ROOTSEL|BONE_SELECTED;
|
||||||
else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
|
else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
|
||||||
|
change= TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(change) {
|
||||||
ED_armature_sync_selection(arm->edbo);
|
ED_armature_sync_selection(arm->edbo);
|
||||||
ED_armature_validate_active(arm);
|
ED_armature_validate_active(arm);
|
||||||
|
WM_main_add_notifier(NC_OBJECT|ND_BONE_SELECT, vc->obedit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_lasso_select_facemode(ViewContext *vc, short mcords[][2], short moves, short select)
|
static void do_lasso_select_facemode(ViewContext *vc, short mcords[][2], short moves, short select)
|
||||||
@ -1593,6 +1601,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ED_armature_sync_selection(arm->edbo);
|
ED_armature_sync_selection(arm->edbo);
|
||||||
|
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, vc.obedit);
|
||||||
}
|
}
|
||||||
else if(obedit->type==OB_LATTICE) {
|
else if(obedit->type==OB_LATTICE) {
|
||||||
do_lattice_box_select(&vc, &rect, selecting, extend);
|
do_lattice_box_select(&vc, &rect, selecting, extend);
|
||||||
@ -1985,6 +1994,7 @@ static void armature_circle_select(ViewContext *vc, int selecting, short *mval,
|
|||||||
struct {ViewContext *vc; short select, mval[2]; float radius; } data;
|
struct {ViewContext *vc; short select, mval[2]; float radius; } data;
|
||||||
bArmature *arm= vc->obedit->data;
|
bArmature *arm= vc->obedit->data;
|
||||||
EditBone *ebone;
|
EditBone *ebone;
|
||||||
|
int change= FALSE;
|
||||||
|
|
||||||
/* set vc->edit data */
|
/* set vc->edit data */
|
||||||
data.select = selecting;
|
data.select = selecting;
|
||||||
@ -2023,10 +2033,14 @@ static void armature_circle_select(ViewContext *vc, int selecting, short *mval,
|
|||||||
ebone->flag |= BONE_TIPSEL|BONE_ROOTSEL|BONE_SELECTED;
|
ebone->flag |= BONE_TIPSEL|BONE_ROOTSEL|BONE_SELECTED;
|
||||||
else
|
else
|
||||||
ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
|
ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
|
||||||
|
change= TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(change) {
|
||||||
ED_armature_validate_active(arm);
|
ED_armature_validate_active(arm);
|
||||||
|
WM_main_add_notifier(NC_OBJECT|ND_BONE_SELECT, vc->obedit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Callbacks for circle selection in Editmode */
|
/** Callbacks for circle selection in Editmode */
|
||||||
|
Loading…
Reference in New Issue
Block a user