Fix T63066: Outliner crash when selecting object being in armature editmode
authorDalai Felinto <dfelinto@gmail.com>
Tue, 16 Apr 2019 18:35:08 +0000 (15:35 -0300)
committerDalai Felinto <dfelinto@gmail.com>
Tue, 16 Apr 2019 18:42:32 +0000 (15:42 -0300)
commite6151bc4c1f218d506ecc4b577d77e1f86955277
treea2d1ab231c47c5cce7057b4b214f7b5593356089
parente2e3a61310f635b13c1c8a903e917161f4142e8c
Fix T63066: Outliner crash when selecting object being in armature editmode

While fixing it, also reproducing multi-object selection logic we have
in the viewport. If you select one bone from an armature, it deselects all
bones from the other armatures currently in edit mode.

Inspired by proposed fix by Philipp Oeser (lichtwerk).

Code explanation
================

CTX_data_edit_object(C) may be NULL here. In the few cases where it is
not we use it for the notifier (in the other cases we call the notifier
with NULL, so no harm done).

This code is called during outliner drawing, and it is called, for
instance every time you mouse hover a bone.

If you have a mesh object in edit mode and mouse hover the bones of an armature
it is plain obvious we can't rely on CTX_data_edit_object() for anything
armature related. And that the original assert was asking for troubles.
source/blender/editors/space_outliner/outliner_select.c