diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 7488920e0cacbb1c164d494eae1100492305da2d..f2b57a92fbd706c598a89719846a7c2d558fb060 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 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
 							*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 @@ GTK+ GUI known bugs:
 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 @@ Built-in script language:
     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 9b1f138695077016a1db9f56be24afb2d6020d8f..c01908017728012e67bfa76d39ad708c3a29e3c4 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 @@ Buffers without a name report "No Name" instead of "No File".  It was
 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 @@ consistency.
 
 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 077991d5af564c3660c75fbec18f1f85c3b54e8c..655d5aedcc63345b13d0d01711d1eb483555b02b 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -33,13 +33,19 @@ general_beval_cb(beval, state)
 #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 @@ general_beval_cb(beval, state)
 	    if (result != NULL && result[0] != NUL)
 	    {
 		gui_mch_post_balloon(beval, result);
+		recursive = FALSE;
 		return;
 	    }
 	}
@@ -97,6 +104,8 @@ general_beval_cb(beval, state)
     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 c6b093f269761ceb478cb0e942bf2cdb09ebadfd..36688ea073960be5c1bc5c494944130bbab02069 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -3691,6 +3691,7 @@ gui_mch_init(void)
 	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);