diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 81dcddc..607b90a 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -2209,4 +2209,19 @@
 
 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 35e18c9..8d261b7 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -2728,7 +2728,7 @@
     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 @@
     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 3176b9d..706291b 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -1788,15 +1788,17 @@
 	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 8748740..b9c7922 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -442,7 +442,7 @@
 		|| 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 66f192a..f8abb07 100644
--- a/src/proto/gui_x11.pro
+++ b/src/proto/gui_x11.pro
@@ -11,7 +11,7 @@
 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 fb93b90..352dce1 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -328,7 +328,7 @@
 # else
 		FALSE
 # endif
-		);
+		, RESIZE_BOTH);
     else
 #endif
 	mch_set_shellsize();
