diff options
Diffstat (limited to 'source/blender/editors/space_action/space_action.c')
-rw-r--r-- | source/blender/editors/space_action/space_action.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index e92ea906237..079cee290ae 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -128,7 +128,7 @@ static SpaceLink *action_new(const ScrArea *area, const Scene *scene) region->v2d.minzoom = 0.01f; region->v2d.maxzoom = 50; region->v2d.scroll = (V2D_SCROLL_BOTTOM | V2D_SCROLL_HORIZONTAL_HANDLES); - region->v2d.scroll |= (V2D_SCROLL_RIGHT); + region->v2d.scroll |= V2D_SCROLL_RIGHT; region->v2d.keepzoom = V2D_LOCKZOOM_Y; region->v2d.keepofs = V2D_KEEPOFS_Y; region->v2d.align = V2D_ALIGN_NO_POS_Y; @@ -181,10 +181,14 @@ static void action_main_region_draw(const bContext *C, ARegion *region) Object *obact = CTX_data_active_object(C); bAnimContext ac; View2D *v2d = ®ion->v2d; - View2DScrollers *scrollers; short marker_flag = 0; short cfra_flag = 0; + UI_view2d_view_ortho(v2d); + if (saction->flag & SACTION_DRAWTIME) { + cfra_flag |= DRAWCFRA_UNIT_SECONDS; + } + /* clear and setup matrix */ UI_ThemeClearColor(TH_BACK); GPU_clear(GPU_COLOR_BIT); @@ -204,12 +208,6 @@ static void action_main_region_draw(const bContext *C, ARegion *region) draw_channel_strips(&ac, saction, region); } - /* current frame */ - if (saction->flag & SACTION_DRAWTIME) { - cfra_flag |= DRAWCFRA_UNIT_SECONDS; - } - ANIM_draw_cfra(C, v2d, cfra_flag); - /* markers */ UI_view2d_view_orthoSpecial(region, v2d, 1); @@ -238,11 +236,20 @@ static void action_main_region_draw(const bContext *C, ARegion *region) /* scrubbing region */ ED_time_scrub_draw(region, scene, saction->flag & SACTION_DRAWTIME, true); +} + +static void action_main_region_draw_overlay(const bContext *C, ARegion *region) +{ + /* draw entirely, view changes should be handled here */ + const SpaceAction *saction = CTX_wm_space_action(C); + const Scene *scene = CTX_data_scene(C); + View2D *v2d = ®ion->v2d; + + /* scrubbing region */ + ED_time_scrub_draw_current_frame(region, scene, saction->flag & SACTION_DRAWTIME, true); /* scrollers */ - scrollers = UI_view2d_scrollers_calc(v2d, NULL); - UI_view2d_scrollers_draw(v2d, scrollers); - UI_view2d_scrollers_free(scrollers); + UI_view2d_scrollers_draw(v2d, NULL); } /* add handlers, stuff you only do once or on area/region changes */ @@ -874,6 +881,7 @@ void ED_spacetype_action(void) art->regionid = RGN_TYPE_WINDOW; art->init = action_main_region_init; art->draw = action_main_region_draw; + art->draw_overlay = action_main_region_draw_overlay; art->listener = action_main_region_listener; art->message_subscribe = saction_main_region_message_subscribe; art->keymapflag = ED_KEYMAP_VIEW2D | ED_KEYMAP_ANIMATION | ED_KEYMAP_FRAMES; |