diff options
author | Jiri Hnidek <jiri.hnidek@tul.cz> | 2006-10-30 17:59:30 +0300 |
---|---|---|
committer | Jiri Hnidek <jiri.hnidek@tul.cz> | 2006-10-30 17:59:30 +0300 |
commit | e944ed2f4a5c7a0452a7e9d431bd40ad5cbc7d9a (patch) | |
tree | 6446e3e63715c271e1f1fd93936f3473eccc8e87 /source/blender/src/outliner.c | |
parent | b17ce5e24a8fd099be72b753fbd98aa4448abfd0 (diff) |
- bug fix #5141, blender doesn't crash, when you try to unsubscribe twice
from verse node in outliner
Diffstat (limited to 'source/blender/src/outliner.c')
-rw-r--r-- | source/blender/src/outliner.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/source/blender/src/outliner.c b/source/blender/src/outliner.c index 237c4144221..45e84c6b735 100644 --- a/source/blender/src/outliner.c +++ b/source/blender/src/outliner.c @@ -1656,15 +1656,25 @@ static int do_outliner_mouse_event(SpaceOops *soops, TreeElement *te, short even } else if(te->idcode==ID_VN) { struct VNode *vnode = (VNode*)te->directdata; - event = pupmenu("VerseNode %t| Subscribe %x1| Unsubscribe %x2"); - switch(event) { - case 1: - b_verse_pop_node(vnode); - break; - case 2: - /* Global */ - b_verse_unsubscribe(vnode); - break; + if (vnode->type==V_NT_OBJECT || vnode->type==V_NT_BITMAP) { + char subscribed = 0; + if((vnode->type==V_NT_OBJECT) && (((VObjectData*)vnode->data)->object!=NULL)) + subscribed = 1; + if((vnode->type==V_NT_BITMAP) && (((VBitmapData*)vnode->data)->image!=NULL)) + subscribed = 1; + if(subscribed==1) + event = pupmenu("VerseNode %t| Unsubscribe %x2"); + else + event = pupmenu("VerseNode %t| Subscribe %x1"); + switch(event) { + case 1: + b_verse_pop_node(vnode); + break; + case 2: + /* Global */ + b_verse_unsubscribe(vnode); + break; + } } } else if(te->idcode==ID_MS) { |