# HG changeset patch # User Bram Moolenaar # Date 1342713944 -7200 # Node ID d47e6222d1cde1caf08fa63104375f5750c25d90 # Parent d89d41dd034e95f500f8f78d887d65f6a481ceb0 updated for version 7.3.608 Problem: winrestview() does not always restore the view correctly. Solution: Call win_new_height() and win_new_width(). (Lech Lorens) diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -18601,6 +18601,10 @@ f_winrestview(argvars, rettv) curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol"); check_cursor(); + win_new_height(curwin, curwin->w_height); +# ifdef FEAT_VERTSPLIT + win_new_width(curwin, W_WIDTH(curwin)); +# endif changed_window_setting(); if (curwin->w_topline == 0) diff --git a/src/proto/window.pro b/src/proto/window.pro --- a/src/proto/window.pro +++ b/src/proto/window.pro @@ -51,6 +51,8 @@ void win_setwidth_win __ARGS((int width, void win_setminheight __ARGS((void)); void win_drag_status_line __ARGS((win_T *dragwin, int offset)); void win_drag_vsep_line __ARGS((win_T *dragwin, int offset)); +void win_new_height __ARGS((win_T *wp, int height)); +void win_new_width __ARGS((win_T *wp, int width)); void win_comp_scroll __ARGS((win_T *wp)); void command_height __ARGS((void)); void last_status __ARGS((int morewin)); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 608, +/**/ 607, /**/ 606, diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -54,7 +54,6 @@ static void frame_append __ARGS((frame_T static void frame_insert __ARGS((frame_T *before, frame_T *frp)); static void frame_remove __ARGS((frame_T *frp)); #ifdef FEAT_VERTSPLIT -static void win_new_width __ARGS((win_T *wp, int width)); static void win_goto_ver __ARGS((int up, long count)); static void win_goto_hor __ARGS((int left, long count)); #endif @@ -71,7 +70,6 @@ static win_T *restore_snapshot_rec __ARG static win_T *win_alloc __ARGS((win_T *after, int hidden)); static void set_fraction __ARGS((win_T *wp)); -static void win_new_height __ARGS((win_T *wp, int height)); #define URL_SLASH 1 /* path_is_url() has found "://" */ #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ @@ -5557,7 +5555,7 @@ set_fraction(wp) * This takes care of the things inside the window, not what happens to the * window position, the frame or to other windows. */ - static void + void win_new_height(wp, height) win_T *wp; int height; @@ -5697,7 +5695,7 @@ win_new_height(wp, height) /* * Set the width of a window. */ - static void + void win_new_width(wp, width) win_T *wp; int width;