changeset 3697:d47e6222d1cd v7.3.608

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)
author Bram Moolenaar <bram@vim.org>
date Thu, 19 Jul 2012 18:05:44 +0200
parents d89d41dd034e
children 580391c2f925
files src/eval.c src/proto/window.pro src/version.c src/window.c
diffstat 4 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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));
--- 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,
--- 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;