Index: source/blender/editors/interface/view2d.c =================================================================== --- source/blender/editors/interface/view2d.c (revision 43747) +++ source/blender/editors/interface/view2d.c (working copy) @@ -476,8 +476,16 @@ void UI_view2d_curRect_validate_resize(View2D *v2d, int resize) if (winy < v2d->oldwiny) { float temp = v2d->oldwiny - winy; - cur->ymin += temp; - cur->ymax += temp; + if (v2d->align & V2D_ALIGN_NO_NEG_Y) + { + cur->ymin -= temp; + cur->ymax -= temp; + } + else /* Assume V2D_ALIGN_NO_POS_Y or combination */ + { + cur->ymin += temp; + cur->ymax += temp; + } } } Index: source/blender/editors/screen/area.c =================================================================== --- source/blender/editors/screen/area.c (revision 43747) +++ source/blender/editors/screen/area.c (working copy) @@ -1244,10 +1244,6 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa) /* prevent uiblocks to run */ uiFreeBlocks(NULL, &ar->uiblocks); } - - /* rechecks 2d matrix for header on dpi changing, do not do for other regions, it resets view && blocks view2d operator polls (ton) */ - if(ar->regiontype==RGN_TYPE_HEADER) - ar->v2d.flag &= ~V2D_IS_INITIALISED; } } @@ -1760,7 +1756,7 @@ void ED_region_header(const bContext *C, ARegion *ar) } /* always as last */ - UI_view2d_totRect_set(&ar->v2d, maxco+UI_UNIT_X+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin); + UI_view2d_totRect_set(&ar->v2d, maxco+UI_UNIT_X+80, headery); /* restore view matrix? */ UI_view2d_view_restore(C);