Merge branch 'master' into blender2.8

Conflicts:
	source/blender/editors/space_outliner/outliner_draw.c
	source/blender/editors/space_outliner/outliner_edit.c
	source/blender/editors/space_outliner/outliner_intern.h
	source/blender/editors/space_outliner/outliner_select.c
This commit is contained in:
Julian Eisel 2016-10-16 15:33:00 +02:00
commit b557ceb2c1
7 changed files with 74 additions and 79 deletions

View File

@ -155,7 +155,7 @@ static void restrictbutton_recursive_ebone(bContext *C, EditBone *ebone_parent,
}
}
static void restrictbutton_recursive_bone(bContext *C, bArmature *arm, Bone *bone_parent, int flag, bool set_flag)
static void restrictbutton_recursive_bone(Bone *bone_parent, int flag, bool set_flag)
{
Bone *bone;
for (bone = bone_parent->childbase.first; bone; bone = bone->next) {
@ -166,7 +166,7 @@ static void restrictbutton_recursive_bone(bContext *C, bArmature *arm, Bone *bon
else {
bone->flag &= ~flag;
}
restrictbutton_recursive_bone(C, arm, bone, flag, set_flag);
restrictbutton_recursive_bone(bone, flag, set_flag);
}
}
@ -294,29 +294,27 @@ static void restrictbutton_modifier_cb(bContext *C, void *UNUSED(poin), void *po
WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
}
static void restrictbutton_bone_visibility_cb(bContext *C, void *poin, void *poin2)
static void restrictbutton_bone_visibility_cb(bContext *C, void *UNUSED(poin), void *poin2)
{
bArmature *arm = (bArmature *)poin;
Bone *bone = (Bone *)poin2;
if (bone->flag & BONE_HIDDEN_P)
bone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
if (CTX_wm_window(C)->eventstate->ctrl) {
restrictbutton_recursive_bone(C, arm, bone, BONE_HIDDEN_P, (bone->flag & BONE_HIDDEN_P) != 0);
restrictbutton_recursive_bone(bone, BONE_HIDDEN_P, (bone->flag & BONE_HIDDEN_P) != 0);
}
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, NULL);
}
static void restrictbutton_bone_select_cb(bContext *C, void *poin, void *poin2)
static void restrictbutton_bone_select_cb(bContext *C, void *UNUSED(poin), void *poin2)
{
bArmature *arm = (bArmature *)poin;
Bone *bone = (Bone *)poin2;
if (bone->flag & BONE_UNSELECTABLE)
bone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
if (CTX_wm_window(C)->eventstate->ctrl) {
restrictbutton_recursive_bone(C, arm, bone, BONE_UNSELECTABLE, (bone->flag & BONE_UNSELECTABLE) != 0);
restrictbutton_recursive_bone(bone, BONE_UNSELECTABLE, (bone->flag & BONE_UNSELECTABLE) != 0);
}
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, NULL);
@ -893,7 +891,7 @@ static void outliner_draw_rnacols(ARegion *ar, int sizex)
miny);
}
static void outliner_draw_rnabuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, int sizex, ListBase *lb)
static void outliner_draw_rnabuts(uiBlock *block, ARegion *ar, SpaceOops *soops, int sizex, ListBase *lb)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -932,7 +930,7 @@ static void outliner_draw_rnabuts(uiBlock *block, Scene *scene, ARegion *ar, Spa
}
}
if (TSELEM_OPEN(tselem, soops)) outliner_draw_rnabuts(block, scene, ar, soops, sizex, &te->subtree);
if (TSELEM_OPEN(tselem, soops)) outliner_draw_rnabuts(block, ar, soops, sizex, &te->subtree);
}
UI_block_emboss_set(block, UI_EMBOSS);
@ -1408,7 +1406,7 @@ static void outliner_draw_iconrow(bContext *C, uiBlock *block, Scene *scene, Spa
}
/* closed tree element */
static void outliner_set_coord_tree_element(SpaceOops *soops, TreeElement *te, int startx, int starty)
static void outliner_set_coord_tree_element(TreeElement *te, int startx, int starty)
{
TreeElement *ten;
@ -1420,7 +1418,7 @@ static void outliner_set_coord_tree_element(SpaceOops *soops, TreeElement *te, i
}
for (ten = te->subtree.first; ten; ten = ten->next) {
outliner_set_coord_tree_element(soops, ten, startx + UI_UNIT_X, starty);
outliner_set_coord_tree_element(ten, startx + UI_UNIT_X, starty);
}
}
@ -1631,7 +1629,7 @@ static void outliner_draw_tree_element(
}
else {
for (ten = te->subtree.first; ten; ten = ten->next) {
outliner_set_coord_tree_element(soops, ten, startx, *starty);
outliner_set_coord_tree_element(ten, startx, *starty);
}
*starty -= UI_UNIT_Y;
@ -1672,7 +1670,7 @@ static void outliner_draw_hierarchy_lines(SpaceOops *soops, ListBase *lb, int st
}
}
static void outliner_draw_struct_marks(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty)
static void outliner_draw_struct_marks(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -1911,7 +1909,7 @@ void draw_outliner(const bContext *C)
if (ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) {
/* draw rna buttons */
outliner_draw_rnacols(ar, sizex_rna);
outliner_draw_rnabuts(block, scene, ar, soops, sizex_rna, &soops->tree);
outliner_draw_rnabuts(block, ar, soops, sizex_rna, &soops->tree);
}
else if ((soops->outlinevis == SO_ID_ORPHANS) && has_restrict_icons) {
/* draw user toggle columns */

View File

@ -117,9 +117,7 @@ static void outliner_open_reveal(SpaceOops *soops, ListBase *lb, TreeElement *te
}
#endif
static TreeElement *outliner_dropzone_element(
const SpaceOops *soops, TreeElement *te,
const float fmval[2], const bool children)
static TreeElement *outliner_dropzone_element(TreeElement *te, const float fmval[2], const bool children)
{
if ((fmval[1] > te->ys) && (fmval[1] < (te->ys + UI_UNIT_Y))) {
/* name and first icon */
@ -129,7 +127,7 @@ static TreeElement *outliner_dropzone_element(
/* Not it. Let's look at its children. */
if (children && (TREESTORE(te)->flag & TSE_CLOSED) == 0 && (te->subtree.first)) {
for (te = te->subtree.first; te; te = te->next) {
TreeElement *te_valid = outliner_dropzone_element(soops, te, fmval, children);
TreeElement *te_valid = outliner_dropzone_element(te, fmval, children);
if (te_valid)
return te_valid;
}
@ -143,7 +141,7 @@ TreeElement *outliner_dropzone_find(const SpaceOops *soops, const float fmval[2]
TreeElement *te;
for (te = soops->tree.first; te; te = te->next) {
TreeElement *te_valid = outliner_dropzone_element(soops, te, fmval, children);
TreeElement *te_valid = outliner_dropzone_element(te, fmval, children);
if (te_valid)
return te_valid;
}
@ -214,7 +212,7 @@ static int outliner_highlight_update(bContext *C, wmOperator *UNUSED(op), const
bool changed = false;
if (!hovered_te || !(hovered_te->store_elem->flag & TSE_HIGHLIGHTED)) {
changed = outliner_set_flag(soops, &soops->tree, TSE_HIGHLIGHTED, false);
changed = outliner_set_flag(&soops->tree, TSE_HIGHLIGHTED, false);
if (hovered_te) {
hovered_te->store_elem->flag |= TSE_HIGHLIGHTED;
changed = true;
@ -251,7 +249,7 @@ static int do_outliner_item_openclose(bContext *C, SpaceOops *soops, TreeElement
/* all below close/open? */
if (all) {
tselem->flag &= ~TSE_CLOSED;
outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1));
outliner_set_flag(&te->subtree, TSE_CLOSED, !outliner_has_one_flag(&te->subtree, TSE_CLOSED, 1));
}
else {
if (tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED;
@ -339,7 +337,7 @@ void item_rename_cb(
do_item_rename(ar, te, tselem, reports);
}
static int do_outliner_item_rename(ReportList *reports, ARegion *ar, SpaceOops *soops, TreeElement *te, const float mval[2])
static int do_outliner_item_rename(ReportList *reports, ARegion *ar, TreeElement *te, const float mval[2])
{
if (mval[1] > te->ys && mval[1] < te->ys + UI_UNIT_Y) {
TreeStoreElem *tselem = TREESTORE(te);
@ -353,7 +351,7 @@ static int do_outliner_item_rename(ReportList *reports, ARegion *ar, SpaceOops *
}
for (te = te->subtree.first; te; te = te->next) {
if (do_outliner_item_rename(reports, ar, soops, te, mval)) return 1;
if (do_outliner_item_rename(reports, ar, te, mval)) return 1;
}
return 0;
}
@ -369,7 +367,7 @@ static int outliner_item_rename(bContext *C, wmOperator *op, const wmEvent *even
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &fmval[0], &fmval[1]);
for (te = soops->tree.first; te; te = te->next) {
if (do_outliner_item_rename(op->reports, ar, soops, te, fmval)) {
if (do_outliner_item_rename(op->reports, ar, te, fmval)) {
changed = true;
break;
}
@ -800,20 +798,20 @@ void lib_reload_cb(
/* Apply Settings ------------------------------- */
static int outliner_count_levels(SpaceOops *soops, ListBase *lb, const int curlevel)
static int outliner_count_levels(ListBase *lb, const int curlevel)
{
TreeElement *te;
int level = curlevel, lev;
for (te = lb->first; te; te = te->next) {
lev = outliner_count_levels(soops, &te->subtree, curlevel + 1);
lev = outliner_count_levels(&te->subtree, curlevel + 1);
if (lev > level) level = lev;
}
return level;
}
int outliner_has_one_flag(SpaceOops *soops, ListBase *lb, short flag, const int curlevel)
int outliner_has_one_flag(ListBase *lb, short flag, const int curlevel)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -823,7 +821,7 @@ int outliner_has_one_flag(SpaceOops *soops, ListBase *lb, short flag, const int
tselem = TREESTORE(te);
if (tselem->flag & flag) return curlevel;
level = outliner_has_one_flag(soops, &te->subtree, flag, curlevel + 1);
level = outliner_has_one_flag(&te->subtree, flag, curlevel + 1);
if (level) return level;
}
return 0;
@ -833,7 +831,7 @@ int outliner_has_one_flag(SpaceOops *soops, ListBase *lb, short flag, const int
* Set or unset \a flag for all outliner elements in \a lb and sub-trees.
* \return if any flag was modified.
*/
bool outliner_set_flag(SpaceOops *soops, ListBase *lb, short flag, short set)
bool outliner_set_flag(ListBase *lb, short flag, short set)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -853,7 +851,7 @@ bool outliner_set_flag(SpaceOops *soops, ListBase *lb, short flag, short set)
tselem->flag |= flag;
changed = true;
}
changed |= outliner_set_flag(soops, &te->subtree, flag, set);
changed |= outliner_set_flag(&te->subtree, flag, set);
}
return changed;
@ -1068,10 +1066,10 @@ static int outliner_toggle_expanded_exec(bContext *C, wmOperator *UNUSED(op))
SpaceOops *soops = CTX_wm_space_outliner(C);
ARegion *ar = CTX_wm_region(C);
if (outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1))
outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 0);
if (outliner_has_one_flag(&soops->tree, TSE_CLOSED, 1))
outliner_set_flag(&soops->tree, TSE_CLOSED, 0);
else
outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 1);
outliner_set_flag(&soops->tree, TSE_CLOSED, 1);
ED_region_tag_redraw(ar);
@ -1100,10 +1098,10 @@ static int outliner_toggle_selected_exec(bContext *C, wmOperator *UNUSED(op))
ARegion *ar = CTX_wm_region(C);
Scene *scene = CTX_data_scene(C);
if (outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1))
outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0);
if (outliner_has_one_flag(&soops->tree, TSE_SELECTED, 1))
outliner_set_flag(&soops->tree, TSE_SELECTED, 0);
else
outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 1);
outliner_set_flag(&soops->tree, TSE_SELECTED, 1);
soops->storeflag |= SO_TREESTORE_REDRAW;
@ -1201,13 +1199,13 @@ static int outliner_show_active_exec(bContext *C, wmOperator *UNUSED(op))
if (obact->mode & OB_MODE_POSE) {
bPoseChannel *pchan = CTX_data_active_pose_bone(C);
if (pchan) {
te = outliner_find_posechannel(so, &te_obact->subtree, pchan);
te = outliner_find_posechannel(&te_obact->subtree, pchan);
}
}
else if (obact->mode & OB_MODE_EDIT) {
EditBone *ebone = CTX_data_active_bone(C);
if (ebone) {
te = outliner_find_editbone(so, &te_obact->subtree, ebone);
te = outliner_find_editbone(&te_obact->subtree, ebone);
}
}
}
@ -1402,7 +1400,7 @@ static void outliner_find_panel(Scene *UNUSED(scene), ARegion *ar, SpaceOops *so
/* Show One Level ----------------------------------------------- */
/* helper function for Show/Hide one level operator */
static void outliner_openclose_level(SpaceOops *soops, ListBase *lb, int curlevel, int level, int open)
static void outliner_openclose_level(ListBase *lb, int curlevel, int level, int open)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -1417,7 +1415,7 @@ static void outliner_openclose_level(SpaceOops *soops, ListBase *lb, int curleve
if (curlevel >= level) tselem->flag |= TSE_CLOSED;
}
outliner_openclose_level(soops, &te->subtree, curlevel + 1, level, open);
outliner_openclose_level(&te->subtree, curlevel + 1, level, open);
}
}
@ -1428,13 +1426,13 @@ static int outliner_one_level_exec(bContext *C, wmOperator *op)
const bool add = RNA_boolean_get(op->ptr, "open");
int level;
level = outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1);
level = outliner_has_one_flag(&soops->tree, TSE_CLOSED, 1);
if (add == 1) {
if (level) outliner_openclose_level(soops, &soops->tree, 1, level, 1);
if (level) outliner_openclose_level(&soops->tree, 1, level, 1);
}
else {
if (level == 0) level = outliner_count_levels(soops, &soops->tree, 0);
if (level) outliner_openclose_level(soops, &soops->tree, 1, level - 1, 0);
if (level == 0) level = outliner_count_levels(&soops->tree, 0);
if (level) outliner_openclose_level(&soops->tree, 1, level - 1, 0);
}
ED_region_tag_redraw(ar);
@ -1465,7 +1463,7 @@ void OUTLINER_OT_show_one_level(wmOperatorType *ot)
/* Show Hierarchy ----------------------------------------------- */
/* helper function for tree_element_shwo_hierarchy() - recursively checks whether subtrees have any objects*/
static int subtree_has_objects(SpaceOops *soops, ListBase *lb)
static int subtree_has_objects(ListBase *lb)
{
TreeElement *te;
TreeStoreElem *tselem;
@ -1473,7 +1471,7 @@ static int subtree_has_objects(SpaceOops *soops, ListBase *lb)
for (te = lb->first; te; te = te->next) {
tselem = TREESTORE(te);
if (tselem->type == 0 && te->idcode == ID_OB) return 1;
if (subtree_has_objects(soops, &te->subtree)) return 1;
if (subtree_has_objects(&te->subtree)) return 1;
}
return 0;
}
@ -1494,7 +1492,7 @@ static void tree_element_show_hierarchy(Scene *scene, SpaceOops *soops, ListBase
else tselem->flag &= ~TSE_CLOSED;
}
else if (te->idcode == ID_OB) {
if (subtree_has_objects(soops, &te->subtree)) tselem->flag &= ~TSE_CLOSED;
if (subtree_has_objects(&te->subtree)) tselem->flag &= ~TSE_CLOSED;
else tselem->flag |= TSE_CLOSED;
}
}

View File

@ -137,8 +137,8 @@ void outliner_cleanup_tree(struct SpaceOops *soops);
TreeElement *outliner_find_tse(struct SpaceOops *soops, const TreeStoreElem *tse);
TreeElement *outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem);
TreeElement *outliner_find_id(struct SpaceOops *soops, ListBase *lb, const struct ID *id);
TreeElement *outliner_find_posechannel(struct SpaceOops *soops, ListBase *lb, const struct bPoseChannel *pchan);
TreeElement *outliner_find_editbone(struct SpaceOops *soops, ListBase *lb, const struct EditBone *ebone);
TreeElement *outliner_find_posechannel(ListBase *lb, const struct bPoseChannel *pchan);
TreeElement *outliner_find_editbone(ListBase *lb, const struct EditBone *ebone);
struct ID *outliner_search_back(SpaceOops *soops, TreeElement *te, short idcode);
void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct SpaceOops *soops);
@ -170,8 +170,8 @@ void outliner_do_object_operation(
int common_restrict_check(struct bContext *C, struct Object *ob);
int outliner_has_one_flag(struct SpaceOops *soops, ListBase *lb, short flag, const int curlevel);
bool outliner_set_flag(struct SpaceOops *soops, ListBase *lb, short flag, short set);
int outliner_has_one_flag(ListBase *lb, short flag, const int curlevel);
bool outliner_set_flag(ListBase *lb, short flag, short set);
void object_toggle_visibility_cb(
struct bContext *C, struct ReportList *reports, struct Scene *scene,

View File

@ -897,19 +897,19 @@ static void outliner_item_select(SpaceOops *soops, const TreeElement *te, const
const short new_flag = toggle ? (tselem->flag ^ TSE_SELECTED) : (tselem->flag | TSE_SELECTED);
if (extend == false) {
outliner_set_flag(soops, &soops->tree, TSE_SELECTED, false);
outliner_set_flag(&soops->tree, TSE_SELECTED, false);
}
tselem->flag = new_flag;
}
static void outliner_item_toggle_closed(SpaceOops *soops, TreeElement *te, const bool toggle_children)
static void outliner_item_toggle_closed(TreeElement *te, const bool toggle_children)
{
TreeStoreElem *tselem = TREESTORE(te);
if (toggle_children) {
tselem->flag &= ~TSE_CLOSED;
const bool all_opened = !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1);
outliner_set_flag(soops, &te->subtree, TSE_CLOSED, all_opened);
const bool all_opened = !outliner_has_one_flag(&te->subtree, TSE_CLOSED, 1);
outliner_set_flag(&te->subtree, TSE_CLOSED, all_opened);
}
else {
tselem->flag ^= TSE_CLOSED;
@ -946,7 +946,7 @@ int outliner_item_activate_or_toggle_closed(bContext *C, int x, int y, bool exte
/* skip */
}
else if (outliner_item_is_co_within_close_toggle(te, view_mval[0])) {
outliner_item_toggle_closed(soops, te, extend);
outliner_item_toggle_closed(te, extend);
changed = true;
}
else {
@ -994,7 +994,7 @@ void OUTLINER_OT_item_activate(wmOperatorType *ot)
/* ****************************************************** */
/* **************** Border Select Tool ****************** */
static void outliner_item_border_select(Scene *scene, SpaceOops *soops, rctf *rectf, TreeElement *te, int gesture_mode)
static void outliner_item_border_select(Scene *scene, rctf *rectf, TreeElement *te, int gesture_mode)
{
TreeStoreElem *tselem = TREESTORE(te);
@ -1010,7 +1010,7 @@ static void outliner_item_border_select(Scene *scene, SpaceOops *soops, rctf *re
/* Look at its children. */
if ((tselem->flag & TSE_CLOSED) == 0) {
for (te = te->subtree.first; te; te = te->next) {
outliner_item_border_select(scene, soops, rectf, te, gesture_mode);
outliner_item_border_select(scene, rectf, te, gesture_mode);
}
}
}
@ -1028,7 +1028,7 @@ static int outliner_border_select_exec(bContext *C, wmOperator *op)
UI_view2d_region_to_view_rctf(&ar->v2d, &rectf, &rectf);
for (te = soops->tree.first; te; te = te->next) {
outliner_item_border_select(scene, soops, &rectf, te, gesture_mode);
outliner_item_border_select(scene, &rectf, te, gesture_mode);
}
WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);

View File

@ -1832,8 +1832,8 @@ void OUTLINER_OT_data_operation(wmOperatorType *ot)
/* ******************** */
static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops,
TreeElement *te, const wmEvent *event, const float mval[2])
static int do_outliner_operation_event(bContext *C, ARegion *ar, SpaceOops *soops,
TreeElement *te, const float mval[2])
{
ReportList *reports = CTX_wm_reports(C); // XXX...
@ -1844,8 +1844,8 @@ static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, S
/* select object that's clicked on and popup context menu */
if (!(tselem->flag & TSE_SELECTED)) {
if (outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1))
outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0);
if (outliner_has_one_flag(&soops->tree, TSE_SELECTED, 1))
outliner_set_flag(&soops->tree, TSE_SELECTED, 0);
tselem->flag |= TSE_SELECTED;
/* redraw, same as outliner_select function */
@ -1916,7 +1916,7 @@ static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, S
}
for (te = te->subtree.first; te; te = te->next) {
if (do_outliner_operation_event(C, scene, ar, soops, te, event, mval))
if (do_outliner_operation_event(C, ar, soops, te, mval))
return 1;
}
return 0;
@ -1925,7 +1925,6 @@ static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, S
static int outliner_operation(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
{
Scene *scene = CTX_data_scene(C);
ARegion *ar = CTX_wm_region(C);
SpaceOops *soops = CTX_wm_space_outliner(C);
uiBut *but = UI_context_active_but_get(C);
@ -1939,7 +1938,7 @@ static int outliner_operation(bContext *C, wmOperator *UNUSED(op), const wmEvent
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &fmval[0], &fmval[1]);
for (te = soops->tree.first; te; te = te->next) {
if (do_outliner_operation_event(C, scene, ar, soops, te, event, fmval)) {
if (do_outliner_operation_event(C, ar, soops, te, fmval)) {
break;
}
}

View File

@ -248,7 +248,7 @@ TreeElement *outliner_find_id(SpaceOops *soops, ListBase *lb, const ID *id)
return NULL;
}
TreeElement *outliner_find_posechannel(SpaceOops *soops, ListBase *lb, const bPoseChannel *pchan)
TreeElement *outliner_find_posechannel(ListBase *lb, const bPoseChannel *pchan)
{
for (TreeElement *te = lb->first; te; te = te->next) {
if (te->directdata == pchan) {
@ -257,7 +257,7 @@ TreeElement *outliner_find_posechannel(SpaceOops *soops, ListBase *lb, const bPo
TreeStoreElem *tselem = TREESTORE(te);
if (ELEM(tselem->type, TSE_POSE_BASE, TSE_POSE_CHANNEL)) {
TreeElement *tes = outliner_find_posechannel(soops, &te->subtree, pchan);
TreeElement *tes = outliner_find_posechannel(&te->subtree, pchan);
if (tes) {
return tes;
}
@ -266,7 +266,7 @@ TreeElement *outliner_find_posechannel(SpaceOops *soops, ListBase *lb, const bPo
return NULL;
}
TreeElement *outliner_find_editbone(SpaceOops *soops, ListBase *lb, const EditBone *ebone)
TreeElement *outliner_find_editbone(ListBase *lb, const EditBone *ebone)
{
for (TreeElement *te = lb->first; te; te = te->next) {
if (te->directdata == ebone) {
@ -275,7 +275,7 @@ TreeElement *outliner_find_editbone(SpaceOops *soops, ListBase *lb, const EditBo
TreeStoreElem *tselem = TREESTORE(te);
if (ELEM(tselem->type, 0, TSE_EBONE)) {
TreeElement *tes = outliner_find_editbone(soops, &te->subtree, ebone);
TreeElement *tes = outliner_find_editbone(&te->subtree, ebone);
if (tes) {
return tes;
}
@ -307,7 +307,7 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i
/* -------------------------------------------------------- */
/* special handling of hierarchical non-lib data */
static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone,
static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone,
TreeElement *parent, int *a)
{
TreeElement *te = outliner_add_element(soops, lb, id, parent, TSE_BONE, *a);
@ -878,7 +878,7 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
// TODO: this function needs to be split up! It's getting a bit too large...
// Note: "ID" is not always a real ID
static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv,
static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv,
TreeElement *parent, short type, short index)
{
TreeElement *te;
@ -1466,15 +1466,12 @@ static int treesort_obtype_alpha(const void *v1, const void *v2)
#endif
/* sort happens on each subtree individual */
static void outliner_sort(SpaceOops *soops, ListBase *lb)
static void outliner_sort(ListBase *lb)
{
TreeElement *te;
TreeStoreElem *tselem;
int totelem = 0;
if (soops->flag & SO_SKIP_SORT_ALPHA)
return;
te = lb->last;
if (te == NULL) return;
tselem = TREESTORE(te);
@ -1528,7 +1525,7 @@ static void outliner_sort(SpaceOops *soops, ListBase *lb)
}
for (te = lb->first; te; te = te->next) {
outliner_sort(soops, &te->subtree);
outliner_sort(&te->subtree);
}
}
@ -1821,7 +1818,9 @@ void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops)
if (ten) ten->directdata = BASACT;
}
outliner_sort(soops, &soops->tree);
if ((soops->flag & SO_SKIP_SORT_ALPHA) == 0) {
outliner_sort(&soops->tree);
}
outliner_filter_tree(soops, &soops->tree);
}

View File

@ -306,6 +306,7 @@ static void outliner_main_region_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(s
case ND_KEYINGSET:
case ND_FRAME:
case ND_RENDER_OPTIONS:
case ND_SEQUENCER:
case ND_LAYER:
case ND_WORLD:
ED_region_tag_redraw(ar);