updated for version 7.0g03
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 7488920..f2b57a9 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0g.  Last change: 2006 May 03
+*todo.txt*      For Vim version 7.0g.  Last change: 2006 May 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,6 +30,15 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Cursor moved while evaluating balloonexpr. (Neil Bird)
+
+Change exists() not to ignore non-isk chars after the recognized word. (Benji
+Fisher)
+
+GTK1: tab page labels don't work. (Helmut Schellong)
+
+Test 61 fails sometimes.
+
 indent/html.vim doesn't restore 'ignorecase' and 'cpo'.
 
 
@@ -195,10 +204,6 @@
 8   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
     Machowski)  They are displayed as separate characters.  Problem in
     creating a label?
-8   GTK2: selecting button in confirm dialog with keys and hitting Enter
-    doesn't select that button. (Steve Hall)
-    It's possible to set the default button but it's not clear how to obtain
-    the currently selected (highlighted) button.
 8   GTK 2: Combining UTF-8 characters are sometimes not drawn properly.
     Depends on the font size, "monospace 13" has the problem.  Vim seems to do
     everything right, must be a GTK bug.  Is there a way to work around it?
@@ -1497,8 +1502,6 @@
     to avoid a performance penalty (esp. for string options)?
 8   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
     ":let &t_xx =".  Useful for making portable mappings.
-8   exists("&&option") tests if 'option' is actually implemented.  Useful for
-    'shellslash', for example.
 -   Add "{range}source": execute lines from a buffer.
     Alternative: Allow range for ":exec", pass it on to the executed command.
     (Webb)
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 9b1f138..c019080 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0g.  Last change: 2006 May 03
+*version7.txt*  For Vim version 7.0g.  Last change: 2006 May 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -100,10 +100,10 @@
 confusing for buffers with a name and 'buftype' set to "nofile".
 
 When ":file xxx" is used in a buffer without a name, the alternate file name
-isn't set.  This avoids creating buffers without a name that are not useful.
+isn't set.  This avoids creating buffers without a name, they are not useful.
 
 The "2html.vim" script now converts closed folds to HTML.  This means the HTML
-looks like its displayed, with the same folds open and closed.  Use "zR", or
+looks like it's displayed, with the same folds open and closed.  Use "zR", or
 "let html_ignore_folding=1", if no folds should appear in the HTML. (partly by
 Carl Osterwisch)
 Diff mode is now also converted to HTML as it is displayed.
@@ -2888,5 +2888,29 @@
 
 When using "/encoding=abc" in a spell word list, only "bc" was used.
 
+When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't
+work. (Mike Williams)
+
+Mac: When building with "--disable-gui" the install directory would still be
+"/Applications" and Vim.app would be installed.  Now install in /usr/local as
+usual for a console application.
+
+GUI: when doing completion and there is one match and still searching for
+another, the cursor was displayed at the end of the line instead of after the
+match.  Now show the cursor after the match while still searching for matches.
+
+GUI: The mouse shape changed on the statusline even when 'mouse' was empty and
+they can't be dragged..
+
+GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and
+hitting Enter didn't select that button.  Removed GTK 1 specific code. (Neil
+Bird)
+
+When evaluating 'balloonexpr' takes a long time it could be called
+recursively, which could cause a crash.
+
+exists() could not be used to detect whether ":2match" is supported.  Added a
+check for it specifically.
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 077991d..655d5ae 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -33,13 +33,19 @@
 #ifdef FEAT_WINDOWS
     win_T	*cw;
 #endif
-
+    static int	recursive = FALSE;
 
     /* Don't do anything when 'ballooneval' is off, messages scrolled the
      * windows up or we have no beval area. */
     if (!p_beval || balloonEval == NULL || msg_scrolled > 0)
 	return;
 
+    /* Don't do this recursively.  Happens when the expression evaluation
+     * takes a long time and invokes something that checks for CTRL-C typed. */
+    if (recursive)
+	return;
+    recursive = TRUE;
+
 #ifdef FEAT_EVAL
     if (get_beval_info(balloonEval, TRUE, &wp, &lnum, &text, &col) == OK)
     {
@@ -84,6 +90,7 @@
 	    if (result != NULL && result[0] != NUL)
 	    {
 		gui_mch_post_balloon(beval, result);
+		recursive = FALSE;
 		return;
 	    }
 	}
@@ -97,6 +104,8 @@
     if (bevalServers & BEVAL_WORKSHOP)
 	workshop_beval_cb(beval, state);
 #endif
+
+    recursive = FALSE;
 }
 
 /* on Win32 only get_beval_info() is required */
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index c6b093f..36688ea 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -3691,6 +3691,7 @@
 	gtk_container_add(GTK_CONTAINER(event_box), label);
 	gtk_notebook_set_tab_label(GTK_NOTEBOOK(gui.tabline), page, event_box);
     }
+
     gtk_signal_connect(GTK_OBJECT(gui.tabline), "switch_page",
 		       GTK_SIGNAL_FUNC(on_select_tab), NULL);