summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-07-19 18:05:44 +0200
committerBram Moolenaar <Bram@vim.org>2012-07-19 18:05:44 +0200
commit6763c140d656703814d9a268c8492762aee69469 (patch)
tree4b3057d4acf252fe2ffc054a49e62ceaf49f1ff0
parent049d8e79cf49a38c1243f4ec33e48a9bd89b5e4c (diff)
updated for version 7.3.608v7.3.608
Problem: winrestview() does not always restore the view correctly. Solution: Call win_new_height() and win_new_width(). (Lech Lorens)
-rw-r--r--src/eval.c4
-rw-r--r--src/proto/window.pro2
-rw-r--r--src/version.c2
-rw-r--r--src/window.c6
4 files changed, 10 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index f9db2f9ffe..b83334c361 100644
--- 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
index 847b64bb50..92229692f5 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -51,6 +51,8 @@ void win_setwidth_win __ARGS((int width, win_T *wp));
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
index 5dd3776c45..c8a283e06b 100644
--- 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
index c0b7b8b91b..e1dc940398 100644
--- a/src/window.c
+++ b/src/window.c
@@ -54,7 +54,6 @@ static void frame_append __ARGS((frame_T *after, frame_T *frp));
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 __ARGS((frame_T *sn, frame_T *fr));
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;