From 628d7013e2c0236894d329abfde705d023833092 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 2 Dec 2008 09:43:23 +0000 Subject: [PATCH] View2D - Some more tweaks... * Improved scrollbar drawing a bit more - only cosmetic lines * Added new view2d view-matrix api method to only use 'cur' coordinates on one axis, for use when drawing markers, etc. that need to be glued to a certain time but stay fixed in space in another dimension. This should improve the sitation for drawing markers * To aid testing, adding markers now sets the marker to have frame number as it's "name". This will need to be removed later... --- source/blender/editors/include/UI_view2d.h | 2 + .../editors/interface/interface_draw.c | 8 +- source/blender/editors/interface/view2d.c | 204 +++++++++++------- source/blender/editors/interface/view2d_ops.c | 22 +- .../blender/editors/space_time/ed_markers.c | 29 +-- .../blender/editors/space_time/space_time.c | 15 +- source/blender/makesdna/DNA_view2d_types.h | 5 +- 7 files changed, 175 insertions(+), 110 deletions(-) diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h index 558c6ca435f..3e80b77cd29 100644 --- a/source/blender/editors/include/UI_view2d.h +++ b/source/blender/editors/include/UI_view2d.h @@ -80,6 +80,7 @@ typedef struct View2DScrollers View2DScrollers; /* setup */ void UI_view2d_view_ortho(const struct bContext *C, struct View2D *v2d); +void UI_view2d_view_orthospecial(const struct bContext *C, struct View2D *v2d, short xaxis); void UI_view2d_view_restore(const struct bContext *C); void UI_view2d_update_size(struct View2D *v2d, int winx, int winy); @@ -101,6 +102,7 @@ void UI_view2d_view_to_region(struct View2D *v2d, float x, float y, short *regio void UI_view2d_to_region_no_clip(struct View2D *v2d, float x, float y, short *regionx, short *region_y); /* utilities */ +struct View2D *UI_view2d_fromcontext(const struct bContext *C); void UI_view2d_getscale(struct View2D *v2d, float *x, float *y); diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 405143cc4af..6fe7a166b7f 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -2069,16 +2069,14 @@ static void ui_draw_text_icon(uiBut *but) /* If there's an icon too (made with uiDefIconTextBut) then draw the icon and offset the text label to accomodate it */ - /* XXX 2.50 need interface_icons.c */ -#if 0 - if ( (but->flag & UI_HAS_ICON) && (but->flag & UI_ICON_LEFT) ) { + if ( (but->flag & UI_HAS_ICON) && (but->flag & UI_ICON_LEFT) ) + { ui_draw_icon(but, but->icon, 0); - + if(but->editstr || (but->flag & UI_TEXT_LEFT)) x= but->x1 + but->aspect*UI_icon_get_width(but->icon)+5.0; else x= (but->x1+but->x2-but->strwidth+1)/2.0; } else -#endif { if(but->editstr || (but->flag & UI_TEXT_LEFT)) x= but->x1+4.0; diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index b8db6bf5baf..0d10f37e400 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -46,52 +46,7 @@ #include "UI_view2d.h" /* *********************************************************************** */ -/* Setup and Refresh Code */ - -/* Set view matrices to ortho for View2D drawing */ -void UI_view2d_view_ortho(const bContext *C, View2D *v2d) -{ - ARegion *region= C->region; - int winx, winy; - float ofsx1, ofsy1, ofsx2, ofsy2; - - /* calculate extents of region */ - winx= region->winrct.xmax - region->winrct.xmin; - winy= region->winrct.ymax - region->winrct.ymin; - ofsx1= ofsy1= ofsx2= ofsy2= 0.0f; - - /* these checks here make sure that the region is large-enough to show scrollers */ - if ((winx > SCROLLB+10) && (winy > SCROLLH+10)) { - /* calculate offset factor required on each axis */ - if (v2d->scroll & L_SCROLL) - ofsy1= (float)SCROLLB; - if (v2d->scroll & R_SCROLL) - ofsy2= (float)SCROLLB; - if (v2d->scroll & T_SCROLL) - ofsx1= (float)SCROLLH; - if (v2d->scroll & B_SCROLL) - ofsx2= (float)SCROLLH; - } - - /* note: 0.375 is constant factor to get 1:1 correspondance with pixels */ - wmOrtho2(C->window, v2d->cur.xmin-ofsx1-0.375f, v2d->cur.xmax-ofsx2-0.375f, v2d->cur.ymin-ofsy1-0.375f, v2d->cur.ymax-ofsx2-0.375f); -} - -/* Restore view matrices after drawing */ -void UI_view2d_view_restore(const bContext *C) -{ - ARegion *region= C->region; - int winx, winy; - - /* calculate extents of region */ - winx= region->winrct.xmax - region->winrct.xmin; - winy= region->winrct.ymax - region->winrct.ymin; - - /* note: 0.375 is constant factor to get 1:1 correspondance with pixels */ - wmOrtho2(C->window, -0.375f, winx-0.375f, -0.375f, winy-0.375f); -} - -/* ---------------------- */ +/* Refresh and Validation */ /* Adjust mask size in response to view size changes */ // XXX pre2.5 -> this used to be called calc_scrollrcts() @@ -121,7 +76,7 @@ void UI_view2d_update_size(View2D *v2d, int winx, int winy) } /* horizontal scrollbar */ - if ((v2d->scroll & B_SCROLL) || (v2d->scroll & B_SCROLLO)) { + if (v2d->scroll & (B_SCROLL|B_SCROLLO)) { /* on bottom edge of region (B_SCROLLO is outliner, the ohter is for standard) */ v2d->hor= v2d->mask; v2d->hor.ymax= SCROLLH; @@ -367,6 +322,86 @@ void UI_view2d_enforce_status(View2D *v2d, int winx, int winy) } } +/* *********************************************************************** */ +/* View Matrix Setup */ + +/* Set view matrices to use 'cur' rect as viewing frame for View2D drawing + * - Scrollbars are taken into account when making this matrix, given that most regions have them + */ +void UI_view2d_view_ortho(const bContext *C, View2D *v2d) +{ + float ofsx1, ofsy1, ofsx2, ofsy2; + + ofsx1= ofsy1= ofsx2= ofsy2= 0.0f; + + /* calculate offset factor required on each axis */ + if (v2d->scroll & L_SCROLL) + ofsy1= (float)SCROLLB; + if (v2d->scroll & R_SCROLL) + ofsy2= (float)SCROLLB; + if (v2d->scroll & T_SCROLL) + ofsx1= (float)SCROLLH; + if (v2d->scroll & B_SCROLL) + ofsx2= (float)SCROLLH; + + /* set the matrix - pixel offsets (-0.375) for 1:1 correspondance are not applied, + * as they were causing some unwanted offsets when drawing + */ + wmOrtho2(C->window, v2d->cur.xmin-ofsx1, v2d->cur.xmax-ofsx2, v2d->cur.ymin-ofsy1, v2d->cur.ymax-ofsx2); +} + +/* Set view matices to only use one axis of 'cur' only + * - Scrollbars on appropriate axis will be taken into account + * + * - xaxis = if non-zero, only use cur x-axis, otherwise use cur-yaxis (mostly this will be used for x) + */ +void UI_view2d_view_orthospecial(const bContext *C, View2D *v2d, short xaxis) +{ + ARegion *region= C->region; + int winx, winy; + float ofsx1, ofsy1, ofsx2, ofsy2; + + /* calculate extents of region */ + winx= region->winrct.xmax - region->winrct.xmin; + winy= region->winrct.ymax - region->winrct.ymin; + ofsx1= ofsy1= ofsx2= ofsy2= 0.0f; + + /* calculate offset factor required on each axis */ + if (v2d->scroll & L_SCROLL) + ofsy1= (float)SCROLLB; + if (v2d->scroll & R_SCROLL) + ofsy2= (float)SCROLLB; + if (v2d->scroll & T_SCROLL) + ofsx1= (float)SCROLLH; + if (v2d->scroll & B_SCROLL) + ofsx2= (float)SCROLLH; + + /* set the matrix - pixel offsets (-0.375) for 1:1 correspondance are not applied, + * as they were causing some unwanted offsets when drawing + */ + if (xaxis) + wmOrtho2(C->window, v2d->cur.xmin-ofsx1, v2d->cur.xmax-ofsx2, 0, winy); + else + wmOrtho2(C->window, 0, winx, v2d->cur.ymin-ofsy1, v2d->cur.ymax-ofsx2); +} + + +/* Restore view matrices after drawing */ +void UI_view2d_view_restore(const bContext *C) +{ + ARegion *region= C->region; + int winx, winy; + + /* calculate extents of region */ + winx= region->winrct.xmax - region->winrct.xmin; + winy= region->winrct.ymax - region->winrct.ymin; + + /* set default region matrix - pixel offsets (0.375) for 1:1 correspondance are not applied, + * as they were causing some unwanted offsets when drawing + */ + wmOrtho2(C->window, 0, winx, 0, winy); +} + /* *********************************************************************** */ /* Gridlines */ @@ -498,7 +533,6 @@ void UI_view2d_draw_grid(const bContext *C, View2D *v2d, View2DGrid *grid, int f /* minor gridlines */ step= (v2d->mask.xmax - v2d->mask.xmin + 1) / MINGRIDSTEP; - UI_ThemeColor(TH_GRID); for (a=0; adx; - UI_ThemeColorShade(TH_GRID, 16); step++; @@ -591,7 +624,7 @@ struct View2DScrollers { View2DGrid *grid; /* grid for coordinate drawing */ int vert_min, vert_max; /* vertical scrollbar - current 'focus' button */ - int hor_min, hor_max; /* horizontal scrollbar - current 'focus' button */ + int hor_min, hor_max; /* horizontal scrollbar - current 'focus' button */ }; /* Calculate relevant scroller properties */ @@ -666,19 +699,30 @@ void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers *s /* slider 'button' */ // FIXME: implement fancy one... but only when we get this working first! - UI_ThemeColorShade(TH_SHADE1, dark); - glRecti(scrollers->hor_min, hor.ymin, scrollers->hor_max, hor.ymax); + { + UI_ThemeColorShade(TH_SHADE1, dark); + glRecti(scrollers->hor_min, hor.ymin, scrollers->hor_max, hor.ymax); + + /* draw lines on either end of 'box' */ + glLineWidth(2.0); + UI_ThemeColorShade(TH_SHADE1, darker); + sdrawline(scrollers->hor_min, hor.ymin, scrollers->hor_min, hor.ymax); + sdrawline(scrollers->hor_max, hor.ymin, scrollers->hor_max, hor.ymax); + glLineWidth(1.0); + } - /* draw lines on either end of 'box' */ - glLineWidth(2.0); - UI_ThemeColorShade(TH_SHADE1, darker); - sdrawline(scrollers->hor_min, hor.ymin, scrollers->hor_min, hor.ymax); - sdrawline(scrollers->hor_max, hor.ymin, scrollers->hor_max, hor.ymax); - glLineWidth(1.0); + /* scale indicators */ + // XXX will need to update the font drawing when the new stuff comes in + if (v2d->scroll & HOR_SCROLLGRID) { + + } - /* decoration bright line */ + /* decoration outer bevel line */ UI_ThemeColorShade(TH_SHADE1, lighter); - sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax); + if (v2d->scroll & B_SCROLL) + sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax); + else if (v2d->scroll & T_SCROLL) + sdrawline(hor.xmin, hor.ymin, hor.xmax, hor.ymin); } /* vertical scrollbar */ @@ -689,20 +733,28 @@ void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers *s /* slider 'button' */ // FIXME: implement fancy one... but only when we get this working first! - UI_ThemeColorShade(TH_SHADE1, dark); - glRecti(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_max); + { + UI_ThemeColorShade(TH_SHADE1, dark); + glRecti(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_max); + + /* draw lines on either end of 'box' */ + glLineWidth(2.0); + UI_ThemeColorShade(TH_SHADE1, darker); + sdrawline(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_min); + sdrawline(vert.xmin, scrollers->vert_max, vert.xmax, scrollers->vert_max); + glLineWidth(1.0); + } - /* draw lines on either end of 'box' */ - glLineWidth(2.0); - UI_ThemeColorShade(TH_SHADE1, darker); - sdrawline(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_min); - sdrawline(vert.xmin, scrollers->vert_max, vert.xmax, scrollers->vert_max); - glLineWidth(1.0); + /* scale indiators */ + // XXX will need to update the font drawing when the new stuff comes in + if (v2d->scroll & VERT_SCROLLGRID) { + + } - /* decoration black line */ - UI_ThemeColorShade(TH_SHADE1, darker); - if (v2d->scroll & HOR_SCROLL) - sdrawline(vert.xmax, vert.ymin+SCROLLH, vert.xmax, vert.ymax); + /* decoration outer bevel line */ + UI_ThemeColorShade(TH_SHADE1, lighter); + if (v2d->scroll & R_SCROLL) + sdrawline(vert.xmin, vert.ymin, vert.xmin, vert.ymax); else sdrawline(vert.xmax, vert.ymin, vert.xmax, vert.ymax); } @@ -800,6 +852,14 @@ void UI_view2d_to_region_no_clip(View2D *v2d, float x, float y, short *regionx, /* *********************************************************************** */ /* Utilities */ +/* View2D data by default resides in region, so get from region stored in context */ +View2D *UI_view2d_fromcontext(const bContext *C) +{ + if (C->area == NULL) return NULL; + if (C->region == NULL) return NULL; + return &(C->region->v2d); +} + /* Calculate the scale per-axis of the drawing-area * - Is used to inverse correct drawing of icons, etc. that need to follow view * but not be affected by scale diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 185980e045a..2ddbaeeb79b 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -48,6 +48,11 @@ #include "UI_resources.h" #include "UI_view2d.h" +/* ********************************************************* */ +/* General Polling Funcs */ + + + /* ********************************************************* */ /* VIEW PANNING OPERATOR */ @@ -241,7 +246,6 @@ void ED_View2D_OT_view_pan(wmOperatorType *ot) /* ------------------ Scrollwheel Versions (2) ---------------------- */ -// XXX scroll down operator not working yet! (doesn't get called on wheeldownmouse for some reason) /* this operator only needs this single callback, where it callsthe view_pan_*() methods */ static int view_scrollright_exec(bContext *C, wmOperator *op) { @@ -312,7 +316,6 @@ void ED_View2D_OT_view_scrollleft(wmOperatorType *ot) prop= RNA_def_property(ot->srna, "deltay", PROP_INT, PROP_NONE); } -// XXX scroll down operator not working yet! (doesn't get called on wheeldownmouse for some reason) /* this operator only needs this single callback, where it callsthe view_pan_*() methods */ static int view_scrolldown_exec(bContext *C, wmOperator *op) { @@ -537,6 +540,9 @@ void ED_View2D_OT_view_zoomout(wmOperatorType *ot) prop= RNA_def_property(ot->srna, "zoomfacy", PROP_FLOAT, PROP_NONE); } +/* ********************************************************* */ +/* Scrollers */ + /* ********************************************************* */ /* Registration */ @@ -561,15 +567,15 @@ void UI_view2d_keymap(wmWindowManager *wm) /* pan/scroll operators */ WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_ANY, KM_CTRL, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_ANY, KM_CTRL, 0); - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_ANY, KM_SHIFT, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_ANY, KM_SHIFT, 0); /* zoom */ - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_ANY, 0, 0); + WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_ANY, 0, 0); WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", PADMINUS, KM_PRESS, 0, 0); WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", PADPLUSKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_time/ed_markers.c b/source/blender/editors/space_time/ed_markers.c index 590b09b886b..83ede869360 100644 --- a/source/blender/editors/space_time/ed_markers.c +++ b/source/blender/editors/space_time/ed_markers.c @@ -81,14 +81,6 @@ static ListBase *context_get_markers(const bContext *C) return &C->scene->markers; } -static View2D *context_get_view2d(const bContext *C) -{ - /* XXX solve, get from view2d api? */ - SpaceTime *stime= C->area->spacedata.first; - - return &stime->v2d; -} - /* ************* Marker Drawing ************ */ /* XXX */ @@ -106,7 +98,7 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag) ypixels= v2d->mask.ymax-v2d->mask.ymin; UI_view2d_getscale(v2d, &xscale, &yscale); - glScalef( 1.0/xscale, 1.0/yscale, 1.0); + glScalef(1.0/xscale, 1.0, 1.0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -137,7 +129,7 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag) ICON_MARKER; } - UI_icon_draw(xpos*xscale-5.0, 8.0, icon_id); + UI_icon_draw(xpos*xscale-5.0, 16.0, icon_id); glBlendFunc(GL_ONE, GL_ZERO); glDisable(GL_BLEND); @@ -145,26 +137,26 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag) /* and the marker name too, shifted slightly to the top-right */ if(marker->name && marker->name[0]) { if(marker->flag & SELECT) { - //BIF_ThemeColor(TH_TEXT_HI); + UI_ThemeColor(TH_TEXT_HI); ui_rasterpos_safe(xpos*xscale+4.0, (ypixels<=39.0)?(ypixels-10.0):29.0, 1.0); } else { - // BIF_ThemeColor(TH_TEXT); + UI_ThemeColor(TH_TEXT); if((marker->frame <= cfra) && (marker->frame+5 > cfra)) ui_rasterpos_safe(xpos*xscale+4.0, (ypixels<=39.0)?(ypixels-10.0):29.0, 1.0); else ui_rasterpos_safe(xpos*xscale+4.0, 17.0, 1.0); } -// BIF_DrawString(G.font, marker->name, 0); + UI_DrawString(G.font, marker->name, 0); } - glScalef(xscale, yscale, 1.0); + glScalef(xscale, 1.0, 1.0); } /* Draw Scene-Markers in time window */ void draw_markers_time(const bContext *C, int flag) { ListBase *markers= context_get_markers(C); - View2D *v2d= context_get_view2d(C); + View2D *v2d= UI_view2d_fromcontext(C); TimeMarker *marker; /* unselected markers are drawn at the first time */ @@ -201,6 +193,7 @@ static int ed_marker_add(bContext *C, wmOperator *op) marker = MEM_callocN(sizeof(TimeMarker), "TimeMarker"); marker->flag= SELECT; marker->frame= frame; + sprintf(marker->name, "Frame %d", frame); // XXX - temp code only BLI_addtail(markers, marker); //BIF_undo_push("Add Marker"); @@ -368,7 +361,7 @@ int WM_modal_tweak_check(wmEvent *evt, int tweak_event) static int ed_marker_move_modal(bContext *C, wmOperator *op, wmEvent *evt) { MarkerMove *mm= op->customdata; - View2D *v2d= context_get_view2d(C); + View2D *v2d= UI_view2d_fromcontext(C); TimeMarker *marker, *selmarker=NULL; float dx, fac; char str[256]; @@ -612,7 +605,7 @@ static int find_nearest_marker_time(ListBase *markers, float dx) static int ed_marker_select(bContext *C, wmEvent *evt, int extend) { ListBase *markers= context_get_markers(C); - View2D *v2d= context_get_view2d(C); + View2D *v2d= UI_view2d_fromcontext(C); float viewx; int x, y, cfra; @@ -689,7 +682,7 @@ callbacks: static int ed_marker_border_select_exec(bContext *C, wmOperator *op) { - View2D *v2d= context_get_view2d(C); + View2D *v2d= UI_view2d_fromcontext(C); ListBase *markers= context_get_markers(C); wmGesture *gesture= op->customdata; TimeMarker *marker; diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index d29af67950b..e391ac82c82 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -80,22 +80,24 @@ static void time_draw_cfra_time(const bContext *C, SpaceTime *stime, ARegion *ar static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar) { - /* draw darkened area outside of active timeline + View2D *v2d= UI_view2d_fromcontext(C); + + /* draw darkened area outside of active timeline * frame range used is preview range or scene range */ UI_ThemeColorShade(TH_BACK, -25); if (PSFRA < PEFRA) { - glRectf(ar->v2d.cur.xmin, ar->v2d.cur.ymin, PSFRA, ar->v2d.cur.ymax); - glRectf(PEFRA, ar->v2d.cur.ymin, ar->v2d.cur.xmax, ar->v2d.cur.ymax); + glRectf(v2d->cur.xmin, v2d->cur.ymin, PSFRA, v2d->cur.ymax); + glRectf(PEFRA, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax); } else { - glRectf(ar->v2d.cur.xmin, ar->v2d.cur.ymin, ar->v2d.cur.xmax, ar->v2d.cur.ymax); + glRectf(v2d->cur.xmin, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax); } UI_ThemeColorShade(TH_BACK, -60); /* thin lines where the actual frames are */ - fdrawline(PSFRA, ar->v2d.cur.ymin, PSFRA, ar->v2d.cur.ymax); - fdrawline(PEFRA, ar->v2d.cur.ymin, PEFRA, ar->v2d.cur.ymax); + fdrawline(PSFRA, v2d->cur.ymin, PSFRA, v2d->cur.ymax); + fdrawline(PEFRA, v2d->cur.ymin, PEFRA, v2d->cur.ymax); } static void time_main_area_init(const bContext *C, ARegion *ar) @@ -143,6 +145,7 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) time_draw_cfra_time(C, stime, ar); /* markers */ + UI_view2d_view_orthospecial(C, v2d, 1); draw_markers_time(C, 0); /* reset view matrix */ diff --git a/source/blender/makesdna/DNA_view2d_types.h b/source/blender/makesdna/DNA_view2d_types.h index 683a40a3682..263b2718136 100644 --- a/source/blender/makesdna/DNA_view2d_types.h +++ b/source/blender/makesdna/DNA_view2d_types.h @@ -94,11 +94,14 @@ typedef struct View2D { /* special hacks for outliner hscroll - prevent hanging older versions of Blender */ #define B_SCROLLO (1<<4) #define HOR_SCROLLO (T_SCROLL|B_SCROLLO) - /* scale markings */ + /* scale markings - vertical */ #define LGRID_SCROLL (1<<5) #define RGRID_SCROLL (1<<6) +#define VERT_SCROLLGRID (LGRID_SCROLL|RGRID_SCROLL) + /* scale markings - horizontal */ #define BGRID_SCROLL (1<<7) #define TGRID_SCROLL (1<<8) +#define HOR_SCROLLGRID (BGRID_SCROLL|TGRID_SCROLL) #endif