diff options
author | Julian Eisel <julian_eisel@web.de> | 2015-02-14 23:54:31 +0300 |
---|---|---|
committer | Julian Eisel <julian_eisel@web.de> | 2015-02-14 23:54:31 +0300 |
commit | 24976dd29d16ffc176ad0f87246fa98a1da31ccc (patch) | |
tree | ae1f9938824c064fc8aadc5ebe3984aa52e1ef95 /source/blender/editors/space_outliner | |
parent | 354cf76803de2ef3f3c4f1f13c3c294041fa2881 (diff) |
Outliner: Toggle restrict buttons only for selectable child objects
D404 by @rupp with minor edits by me.
Diffstat (limited to 'source/blender/editors/space_outliner')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_draw.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 3aaa1165c19..0766587ab33 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -176,16 +176,20 @@ static void restrictbutton_recursive_child(bContext *C, Scene *scene, Object *ob { Main *bmain = CTX_data_main(C); Object *ob; + for (ob = bmain->object.first; ob; ob = ob->id.next) { if (BKE_object_is_child_recursive(ob_parent, ob)) { - if (state) { - ob->restrictflag |= flag; - if (deselect) { - ED_base_object_select(BKE_scene_base_find(scene, ob), BA_DESELECT); + /* only do if child object is selectable */ + if ((flag == OB_RESTRICT_SELECT) || (ob->restrictflag & OB_RESTRICT_SELECT) == 0) { + if (state) { + ob->restrictflag |= flag; + if (deselect) { + ED_base_object_select(BKE_scene_base_find(scene, ob), BA_DESELECT); + } + } + else { + ob->restrictflag &= ~flag; } - } - else { - ob->restrictflag &= ~flag; } if (rnapropname) { |