diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 81dcddc6003aaf62fc93f32817c1fae22771be46..607b90a0a7d85feee17af1a0027dcc18ea57500b 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -2209,4 +2209,19 @@ apparently doesn't work everywhere.  Use %H:%M:%S instead.
 
 Typing BS at the "z=" prompt removed the prompt.
 
+--- fixes since Vim 6.0c ---
+
+When jumping to another tab page the Vim window size was always set, even when
+nothing in the layout changed.
+
+Win32 GUI tab pages line wasn't always enabled.  Do a proper check for the
+compiler version.
+
+Win32: When switching between tab pages the Vim window was moved when part of
+it was outside of the screen.  Now only do that in the direction of a size
+change.
+
+Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan)
+
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 35e18c97794ba0c8e2cca0aeba3cfccff91e94c7..8d261b75985f83bd3dbb115af0b7653ee2c59a52 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -2728,7 +2728,7 @@ mainwin_screen_changed_cb(GtkWidget  *widget,
     if (gui.norm_font != NULL)
     {
 	gui_mch_init_font(p_guifont, FALSE);
-	gui_set_shellsize(FALSE, FALSE);
+	gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH);
     }
 }
 #endif /* HAVE_GTK_MULTIHEAD */
@@ -4247,7 +4247,8 @@ force_shell_resize_idle(gpointer data)
     void
 gui_mch_set_shellsize(int width, int height,
 		      int min_width,  int min_height,
-		      int base_width, int base_height)
+		      int base_width, int base_height,
+		      int direction)
 {
 #ifndef HAVE_GTK2
     /* Hack: When the form already is at the desired size, the window might
diff --git a/src/gui_x11.c b/src/gui_x11.c
index 3176b9d8454608d090bb05c6de9a6f0eb6145c18..706291bbd24c65e80677d0bf9cf4d6e3cba1a6d7 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -1788,15 +1788,17 @@ gui_mch_set_winpos(x, y)
 	NULL);
 }
 
+/*ARGSUSED*/
     void
 gui_mch_set_shellsize(width, height, min_width, min_height,
-		    base_width, base_height)
+		    base_width, base_height, direction)
     int		width;
     int		height;
     int		min_width;
     int		min_height;
     int		base_width;
     int		base_height;
+    int		direction;
 {
 #ifdef FEAT_XIM
     height += xim_get_status_area_height(),
diff --git a/src/menu.c b/src/menu.c
index 8748740a5413cbc22b1694a1256e2ed59cb947fb..b9c79229bb30ff5ca8d02c8c56ec7e1e4259025e 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -442,7 +442,7 @@ ex_menu(eap)
 		|| gui.toolbar_height != old_toolbar_height
 # endif
 	    ))
-	gui_set_shellsize(FALSE, FALSE);
+	gui_set_shellsize(FALSE, FALSE, RESIZE_VERT);
 #endif
 
 theend:
diff --git a/src/proto/gui_x11.pro b/src/proto/gui_x11.pro
index 66f192a411e5802c1c787b11f5b6d27ed204a6e5..f8abb070f1eb1e80fb64480d5b857a1ec63f4a8e 100644
--- a/src/proto/gui_x11.pro
+++ b/src/proto/gui_x11.pro
@@ -11,7 +11,7 @@ extern void gui_init_menu_font __ARGS((void));
 extern void gui_mch_exit __ARGS((int rc));
 extern int gui_mch_get_winpos __ARGS((int *x, int *y));
 extern void gui_mch_set_winpos __ARGS((int x, int y));
-extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
 extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
 extern int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
 extern GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
diff --git a/src/ui.c b/src/ui.c
index fb93b905defef1f0fda54cd98ed109db57d6d9df..352dce16edda94ec75885b19027e97c35aaed805 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -328,7 +328,7 @@ ui_set_shellsize(mustset)
 # else
 		FALSE
 # endif
-		);
+		, RESIZE_BOTH);
     else
 #endif
 	mch_set_shellsize();