// XXX rotational difference
}
else if (driver->id) {
- /* normal channel-drives-channel */
- node1 = dag_get_node(dag, driver->id); // XXX we assume that id is an object...
+ if(GS(driver->id->name)==ID_OB) {
+ /* normal channel-drives-channel */
+ node1 = dag_get_node(dag, driver->id);
- // XXX what happens for bone drivers?
- dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Ipo Driver");
+ // XXX how to find out rnapath is bone?
+ if( ((Object *)driver->id)->type==OB_ARMATURE )
+ dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Ipo Driver");
+ else
+ dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Ipo Driver");
+ }
}
#if 0 // XXX old 'normal' type
UI_view2d_view_restore(C);
}
-static void graph_main_area_listener(ARegion *ar, wmNotifier *wmn)
+static void graph_region_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
switch(wmn->category) {
art->regionid = RGN_TYPE_WINDOW;
art->init= graph_main_area_init;
art->draw= graph_main_area_draw;
- art->listener= graph_main_area_listener;
+ art->listener= graph_region_listener;
art->keymapflag= ED_KEYMAP_VIEW2D/*|ED_KEYMAP_MARKERS*/|ED_KEYMAP_ANIMATION|ED_KEYMAP_FRAMES;
BLI_addhead(&st->regiontypes, art);
art->regionid = RGN_TYPE_HEADER;
art->minsizey= HEADERY;
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
-
+ art->listener= graph_region_listener;
art->init= graph_header_area_init;
art->draw= graph_header_area_draw;
art->regionid = RGN_TYPE_CHANNELS;
art->minsizex= 200;
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
-
+ art->listener= graph_region_listener;
art->init= graph_channel_area_init;
art->draw= graph_channel_area_draw;