diff options
Diffstat (limited to 'source/blender/editors/screen/area.c')
-rw-r--r-- | source/blender/editors/screen/area.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 1a061172ec1..69af4fbb45d 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1187,7 +1187,10 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex uiEndBlock(C, block); if(vertical) { - y += yco-style->panelouter; + if(pt->flag & PNL_NO_HEADER) + y += yco; + else + y += yco-style->panelouter; } else { x += w; @@ -1216,13 +1219,20 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex if(vertical) { v2d->keepofs |= V2D_LOCKOFS_X; v2d->keepofs &= ~V2D_LOCKOFS_Y; + + // don't jump back when panels close or hide + y= MAX2(-y, -v2d->cur.ymin); } else { v2d->keepofs &= ~V2D_LOCKOFS_X; v2d->keepofs |= V2D_LOCKOFS_Y; + + // don't jump back when panels close or hide + x= MAX2(x, v2d->cur.xmax); + y= -y; } - UI_view2d_totRect_set(v2d, x, -y); + UI_view2d_totRect_set(v2d, x, y); /* set the view */ UI_view2d_view_ortho(C, v2d); |