diff --git a/src/auto/configure b/src/auto/configure
index 35eea35..bb59c15 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -3394,12 +3394,6 @@
     if test "x$CARBON" = "xyes"; then
       if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
 	with_x=no
-
-		if test x$prefix = xNONE; then
-	  prefix=/Applications
-	fi
-
-		datadir='${prefix}/Vim.app/Contents/Resources'
       fi
     fi
   fi
@@ -7266,6 +7260,13 @@
   if test "$VIMNAME" = "vim"; then
     VIMNAME=Vim
   fi
+
+    if test x$prefix = xNONE; then
+    prefix=/Applications
+  fi
+
+    datadir='${prefix}/Vim.app/Contents/Resources'
+
     SKIP_GTK=YES;
   SKIP_GTK2=YES;
   SKIP_GNOME=YES;
diff --git a/src/configure.in b/src/configure.in
index 9e500d9..8c33500 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -165,14 +165,6 @@
     if test "x$CARBON" = "xyes"; then
       if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
 	with_x=no
-
-	dnl Default install directory is not /usr/local
-	if test x$prefix = xNONE; then
-	  prefix=/Applications
-	fi
-
-	dnl Sorry for the hard coded default
-	datadir='${prefix}/Vim.app/Contents/Resources'
       fi
     fi
   fi
@@ -1305,12 +1297,21 @@
 
 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
   AC_MSG_CHECKING(for Carbon GUI)
-  dnl already did this
+  dnl already did the check, just give the message
   AC_MSG_RESULT(yes);
   GUITYPE=CARBONGUI
   if test "$VIMNAME" = "vim"; then
     VIMNAME=Vim
   fi
+
+  dnl Default install directory is not /usr/local
+  if test x$prefix = xNONE; then
+    prefix=/Applications
+  fi
+
+  dnl Sorry for the hard coded default
+  datadir='${prefix}/Vim.app/Contents/Resources'
+
   dnl skip everything else
   SKIP_GTK=YES;
   SKIP_GTK2=YES;
diff --git a/src/edit.c b/src/edit.c
index 1cf2808..2ff1722 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -4150,6 +4150,15 @@
 
 	/* display the updated popup menu */
 	ins_compl_show_pum();
+#ifdef FEAT_GUI
+	if (gui.in_use)
+	{
+	    /* Show the cursor after the match, not after the redrawn text. */
+	    setcursor();
+	    out_flush();
+	    gui_update_cursor(FALSE, FALSE);
+	}
+#endif
 
 	/* Delete old text to be replaced, since we're still searching and
 	 * don't want to match ourselves!  */
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index cc75c67..0da144f 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -2221,6 +2221,7 @@
 {
     DialogInfo *di = (DialogInfo *)data;
 
+#ifndef HAVE_GTK2
     /* Ignore hitting "Enter" if there is no default button. */
     if (event->keyval == GDK_Return)
     {
@@ -2228,6 +2229,7 @@
 	    gtk_dialog_response(di->dialog, GTK_RESPONSE_ACCEPT);
 	return TRUE;
     }
+#endif
 
     /* Close the dialog when hitting "Esc". */
     if (event->keyval == GDK_Escape)
@@ -2290,7 +2292,7 @@
 	dialoginfo.noalt = TRUE;
 
     /* Allow activation of mnemonic accelerators without pressing <Alt> when
-     * there is no textfield.  Handle pressing Enter and Esc. */
+     * there is no textfield.  Handle pressing Esc. */
     g_signal_connect(G_OBJECT(dialog), "key_press_event",
 			 G_CALLBACK(&dialog_key_press_event_cb), &dialoginfo);
 
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 60c5e83..b00322d 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -2507,12 +2507,13 @@
     if (*p_encoding == NUL)
 	p_encoding = enc_skip(p_enc);
 
-    /* Look for recognised multi-byte coding, and if the charset is recognised.
-     * This is to cope with the fact that various unicode encodings are
-     * supported in more than one of CJK. */
+    /* Look for a multi-byte font that matches the encoding and character set.
+     * Only look if multi-byte character set is defined, or using multi-byte
+     * encoding other than Unicode.  This is because a Unicode encoding does not
+     * uniquely identify a CJK character set to use. */
     p_mbenc = NULL;
     props = enc_canon_props(p_encoding);
-    if (!(props & ENC_8BIT) && (*p_penc != NUL || *p_pmcs != NUL))
+    if (!(props & ENC_8BIT) && ((*p_pmcs != NUL) || !(props & ENC_UNICODE)))
     {
 	p_mbenc_first = NULL;
 	p_mbchar = NULL;
diff --git a/src/misc2.c b/src/misc2.c
index 6346e3f..5d80427 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -3413,6 +3413,13 @@
 	return;
     }
 
+    /* When ignoring the mouse don't change shape on the statusline. */
+    if (*p_mouse == NUL
+	    && (shape_idx == SHAPE_IDX_CLINE
+		|| shape_idx == SHAPE_IDX_STATUS
+		|| shape_idx == SHAPE_IDX_VSEP))
+	shape_idx = -2;
+
     if (shape_idx == -2
 	    && old_mouse_shape != shape_table[SHAPE_IDX_CLINE].mshape
 	    && old_mouse_shape != shape_table[SHAPE_IDX_STATUS].mshape
diff --git a/src/version.h b/src/version.h
index f1c2dc5..6323f46 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70g"
 #define VIM_VERSION_SHORT	"7.0g"
-#define VIM_VERSION_MEDIUM	"7.0g02 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g02 BETA (2006 May 3)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g02 BETA (2006 May 3, compiled "
+#define VIM_VERSION_MEDIUM	"7.0g03 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g03 BETA (2006 May 4)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g03 BETA (2006 May 4, compiled "
