diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index 7469869..85fc1d7 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 24
+*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -14,6 +14,7 @@
 2. Commands			|tab-page-commands|
 3. Other items			|tab-page-other|
 4. Setting 'tabline'		|setting-tabline|
+5. Setting 'guitablabel'	|setting-guitablabel|
 
 {Vi does not have any of these commands}
 {not able to use multiple tab pages when the |+windows| feature was disabled
@@ -133,7 +134,7 @@
 		to the last one.
 
 :tabr[ewind]			*:tabfir* *:tabfirst* *:tabr* *:tabrewind*
-:tabl[ast]	Go to the first tab page.
+:tabfir[st]	Go to the first tab page.
 
 							*:tabl* *:tablast*
 :tabl[ast]	Go to the last tab page.
@@ -205,6 +206,9 @@
 ==============================================================================
 4. Setting 'tabline'					*setting-tabline*
 
+The 'tabline' option specifies what the line with tab pages labels looks like.
+It is only used when there is no GUI tab line.
+
 You can use the 'showtabline' option to specify when you want the line with
 tab page labels to appear: never, when there is more than one tab page or
 always.
@@ -269,4 +273,54 @@
 clever way when there is not enough room.  Check the 'columns' option for the
 space available.
 
+==============================================================================
+5. Setting 'guitablabel'				*setting-guitablabel*
+
+When the GUI tab pages line is displayed, 'guitablabel' can be used to
+specify the label to display for each tab page.  Unlike 'tabline', which
+specifies the whole tab pages line at once, 'guitablabel' is used for each
+label separately.
+
+See the 'statusline' option for the format of the value.
+
+The "%N" item can be used for the current tab page number.  The |v:lnum|
+variable is also set to this number.
+
+Note that syntax highlighting is not used for 'guitablabel'.  The %T and %X
+are also ignored.
+
+A simple example that puts the tab page number and the buffer name in the label: >
+
+	:set guitablabel=%N\ %f
+
+An example that resembles the default: Show the number of windows in the tab
+page and a '+' if there is a modifed buffer: >
+
+	function! GuiTabLabel()
+	  let label = ''
+	  let bufnrlist = tabpagebuflist(v:lnum)
+
+	  " Add '+' if one of the buffers in the tab page is modified
+	  for bufnr in bufnrlist
+	    if getbufvar(bufnr, "&modified")
+	      let label = '+'
+	      break
+	    endif
+	  endfor
+
+	  " Append the number of windows in the tab page if more than one
+	  let wincount = tabpagewinnr(v:lnum, '$')
+	  if wincount > 1
+	    let label .= wincount
+	  endif
+	  if label != ''
+	    let label .= ' '
+	  endif
+
+	  " Append the buffer name
+	  return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
+	endfunction
+	set guitablabel=%{GuiTabLabel()}
+<
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/buffer.c b/src/buffer.c
index 101d33f..697599a 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3197,7 +3197,7 @@
 
 #endif /* FEAT_TITLE */
 
-#if defined(FEAT_STL_OPT) || defined(PROTO)
+#if defined(FEAT_STL_OPT) || defined(FEAT_GUI_TABLINE) || defined(PROTO)
 /*
  * Build a string from the status line items in "fmt".
  * Return length of string in screen cells.
@@ -3212,10 +3212,11 @@
  * If maxwidth is not zero, the string will be filled at any middle marker
  * or truncated if too long, fillchar is used for all whitespace.
  */
+/*ARGSUSED*/
     int
 build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
     win_T	*wp;
-    char_u	*out;		/* buffer to write into */
+    char_u	*out;		/* buffer to write into != NameBuff */
     size_t	outlen;		/* length of out[] */
     char_u	*fmt;
     int		use_sandbox;	/* "fmt" was set insecurely, use sandbox */
@@ -3632,8 +3633,8 @@
 		str = tmp;
 	    break;
 	case STL_PAGENUM:
-#ifdef FEAT_PRINTER
-	    num = get_printer_page_num();
+#if defined(FEAT_PRINTER) || defined(FEAT_WINDOWS)
+	    num = printer_page_num;
 #else
 	    num = 0;
 #endif
@@ -4020,7 +4021,8 @@
 }
 #endif /* FEAT_STL_OPT */
 
-#if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) || defined(PROTO)
+#if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
+	    || defined(FEAT_GUI_TABLINE) || defined(PROTO)
 /*
  * Get relative cursor position in window into "str[]", in the form 99%, using
  * "Top", "Bot" or "All" when appropriate.
diff --git a/src/normal.c b/src/normal.c
index cc9d0d1..405f558 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -76,6 +76,7 @@
 #endif
 #ifdef FEAT_GUI_TABLINE
 static void	nv_tabline __ARGS((cmdarg_T *cap));
+static void	nv_tabmenu __ARGS((cmdarg_T *cap));
 #endif
 static void	nv_exmode __ARGS((cmdarg_T *cap));
 static void	nv_colon __ARGS((cmdarg_T *cap));
@@ -423,6 +424,7 @@
 #endif
 #ifdef FEAT_GUI_TABLINE
     {K_TABLINE, nv_tabline,	0,			0},
+    {K_TABMENU, nv_tabmenu,	0,			0},
 #endif
 #ifdef FEAT_FKMAP
     {K_F8,	farsi_fkey,	0,			0},
@@ -4997,6 +4999,44 @@
     /* Even if an operator was pending, we still want to jump tabs. */
     goto_tabpage(current_tab);
 }
+
+/*
+ * Selected item in tab line menu.
+ */
+    static void
+nv_tabmenu(cap)
+    cmdarg_T	*cap;
+{
+    if (cap->oap->op_type != OP_NOP)
+	clearopbeep(cap->oap);
+
+    /* Even if an operator was pending, we still want to jump tabs. */
+    switch (current_tabmenu)
+    {
+	case TABLINE_MENU_CLOSE:
+	    if (current_tab == 0)
+		do_cmdline_cmd((char_u *)"tabclose");
+	    else
+	    {
+		vim_snprintf((char *)IObuff, IOSIZE, "tabclose %d",
+								 current_tab);
+		do_cmdline_cmd(IObuff);
+	    }
+	    break;
+
+	case TABLINE_MENU_NEW:
+	    if (current_tab > 0)
+		goto_tabpage(current_tab);
+	    do_cmdline_cmd((char_u *)"tabnew");
+	    break;
+
+	case TABLINE_MENU_OPEN:
+	    if (current_tab > 0)
+		goto_tabpage(current_tab);
+	    do_cmdline_cmd((char_u *)"browse tabnew");
+	    break;
+    }
+}
 #endif
 
 /*
diff --git a/src/window.c b/src/window.c
index f0a4265..0c0fb30 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3143,7 +3143,7 @@
 
 /*
  * Get index of tab page "tp".  First one has index 1.
- * When not found returns number of tab pages.
+ * When not found returns number of tab pages plus one.
  */
     int
 tabpage_index(ftp)
