diff --git a/src/eval.c b/src/eval.c
index 980d15e..a4dae79 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -11952,7 +11952,7 @@
     {
 	/* Set curwin to be our win, temporarily.  Also set the tabpage,
 	 * otherwise the window is not valid. */
-	switch_win(&oldcurwin, &oldtabpage, win, tp);
+	switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE);
 
 	if (*varname == '&')	/* window-local-option */
 	{
@@ -11972,7 +11972,7 @@
 	}
 
 	/* restore previous notion of curwin */
-	restore_win(oldcurwin, oldtabpage);
+	restore_win(oldcurwin, oldtabpage, TRUE);
     }
 
     if (!done && argvars[off + 2].v_type != VAR_UNKNOWN)
@@ -16775,7 +16775,7 @@
     if (win != NULL && varname != NULL && varp != NULL)
     {
 #ifdef FEAT_WINDOWS
-	if (switch_win(&save_curwin, &save_curtab, win, tp) == FAIL)
+	if (switch_win(&save_curwin, &save_curtab, win, tp, TRUE) == FAIL)
 	    return;
 #endif
 
@@ -16804,7 +16804,7 @@
 	}
 
 #ifdef FEAT_WINDOWS
-	restore_win(save_curwin, save_curtab);
+	restore_win(save_curwin, save_curtab, TRUE);
 #endif
     }
 }
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 85b4631..f19deb0 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -2706,7 +2706,7 @@
     {
 	case SREQ_WIN:
 	    if (switch_win(&save_curwin, &save_curtab, (win_T *)from,
-				     win_find_tabpage((win_T *)from)) == FAIL)
+			      win_find_tabpage((win_T *)from), FALSE) == FAIL)
 	    {
 		if (VimTryEnd())
 		    return -1;
@@ -2714,7 +2714,7 @@
 		return -1;
 	    }
 	    r = set_option_value_err(key, numval, stringval, opt_flags);
-	    restore_win(save_curwin, save_curtab);
+	    restore_win(save_curwin, save_curtab, FALSE);
 	    if (r == FAIL)
 		return -1;
 	    break;
diff --git a/src/proto/window.pro b/src/proto/window.pro
index 83116c9..fdba722 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -70,8 +70,8 @@
 void check_lnums __ARGS((int do_curwin));
 void make_snapshot __ARGS((int idx));
 void restore_snapshot __ARGS((int idx, int close_curwin));
-int switch_win __ARGS((win_T **save_curwin, tabpage_T **save_curtab, win_T *win, tabpage_T *tp));
-void restore_win __ARGS((win_T *save_curwin, tabpage_T *save_curtab));
+int switch_win __ARGS((win_T **save_curwin, tabpage_T **save_curtab, win_T *win, tabpage_T *tp, int no_display));
+void restore_win __ARGS((win_T *save_curwin, tabpage_T *save_curtab, int no_display));
 void switch_buffer __ARGS((buf_T **save_curbuf, buf_T *buf));
 void restore_buffer __ARGS((buf_T *save_curbuf));
 int win_hasvertsplit __ARGS((void));
diff --git a/src/version.c b/src/version.c
index d0380a4..e7fe7e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1204,
+/**/
     1203,
 /**/
     1202,
diff --git a/src/window.c b/src/window.c
index 881be8b..ca92d57 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3774,7 +3774,8 @@
     /* We would like doing the TabEnter event first, but we don't have a
      * valid current window yet, which may break some commands.
      * This triggers autocommands, thus may make "tp" invalid. */
-    win_enter_ext(tp->tp_curwin, FALSE, TRUE, trigger_enter_autocmds, trigger_leave_autocmds);
+    win_enter_ext(tp->tp_curwin, FALSE, TRUE,
+			      trigger_enter_autocmds, trigger_leave_autocmds);
     prevwin = next_prevwin;
 
     last_status(FALSE);		/* status line may appear or disappear */
@@ -6575,14 +6576,17 @@
  * Set "win" to be the curwin and "tp" to be the current tab page.
  * restore_win() MUST be called to undo.
  * No autocommands will be executed.
+ * When "no_display" is TRUE the display won't be affected, no redraw is
+ * triggered, another tabpage access is limited.
  * Returns FAIL if switching to "win" failed.
  */
     int
-switch_win(save_curwin, save_curtab, win, tp)
+switch_win(save_curwin, save_curtab, win, tp, no_display)
     win_T	**save_curwin;
     tabpage_T	**save_curtab;
     win_T	*win;
     tabpage_T	*tp;
+    int		no_display;
 {
 # ifdef FEAT_AUTOCMD
     block_autocmds();
@@ -6592,7 +6596,16 @@
     if (tp != NULL)
     {
 	*save_curtab = curtab;
-	goto_tabpage_tp(tp, FALSE, FALSE);
+	if (no_display)
+	{
+	    curtab->tp_firstwin = firstwin;
+	    curtab->tp_lastwin = lastwin;
+	    curtab = tp;
+	    firstwin = curtab->tp_firstwin;
+	    lastwin = curtab->tp_lastwin;
+	}
+	else
+	    goto_tabpage_tp(tp, FALSE, FALSE);
     }
     if (!win_valid(win))
     {
@@ -6609,15 +6622,29 @@
 
 /*
  * Restore current tabpage and window saved by switch_win(), if still valid.
+ * When "no_display" is TRUE the display won't be affected, no redraw is
+ * triggered.
  */
     void
-restore_win(save_curwin, save_curtab)
+restore_win(save_curwin, save_curtab, no_display)
     win_T	*save_curwin;
     tabpage_T	*save_curtab;
+    int		no_display;
 {
 # ifdef FEAT_WINDOWS
     if (save_curtab != NULL && valid_tabpage(save_curtab))
-	goto_tabpage_tp(save_curtab, FALSE, FALSE);
+    {
+	if (no_display)
+	{
+	    curtab->tp_firstwin = firstwin;
+	    curtab->tp_lastwin = lastwin;
+	    curtab = save_curtab;
+	    firstwin = curtab->tp_firstwin;
+	    lastwin = curtab->tp_lastwin;
+	}
+	else
+	    goto_tabpage_tp(save_curtab, FALSE, FALSE);
+    }
     if (win_valid(save_curwin))
     {
 	curwin = save_curwin;
