diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index f844213..c4ceb5f 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4258,8 +4258,8 @@
 			{not in Vi}
 			{only available when compiled with |+mbyte|}
 	This option specifies a function that will be called to
-	activate/inactivate Input Method.
-	Does not work in the MS-Windows GUI version.
+	activate or deactivate the Input Method.
+	It is not used in the GUI.
 
 	Example: >
 		function ImActivateFunc(active)
@@ -4375,7 +4375,7 @@
 			{only available when compiled with |+mbyte|}
 	This option specifies a function that is called to obtain the status
 	of Input Method.  It must return a positive number when IME is active.
-	Does not work in the MS-Windows GUI version.
+	It is not used in the GUI.
 
 	Example: >
 		function ImStatusFunc()
diff --git a/src/mbyte.c b/src/mbyte.c
index 3ebd183..408c49a 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -4782,6 +4782,14 @@
 
 #endif /* FEAT_MBYTE */
 
+#ifdef FEAT_GUI
+# define USE_IMACTIVATEFUNC (!gui.in_use && *p_imaf != NUL)
+# define USE_IMSTATUSFUNC (!gui.in_use && *p_imsf != NUL)
+#else
+# define USE_IMACTIVATEFUNC (*p_imaf != NUL)
+# define USE_IMSTATUSFUNC (*p_imsf != NUL)
+#endif
+
 #ifdef FEAT_EVAL
     static void
 call_imactivatefunc(int active)
@@ -5689,7 +5697,7 @@
 xim_reset(void)
 {
 #ifdef FEAT_EVAL
-    if (p_imaf[0] != NUL)
+    if (USE_IMACTIVATEFUNC)
 	call_imactivatefunc(im_is_active);
     else
 #endif
@@ -5868,7 +5876,7 @@
 im_get_status(void)
 {
 #  ifdef FEAT_EVAL
-    if (p_imsf[0] != NUL)
+    if (USE_IMSTATUSFUNC)
 	return call_imstatusfunc();
 #  endif
     return im_is_active;
@@ -5908,16 +5916,14 @@
     /* If 'imdisable' is set, XIM is never active. */
     if (p_imdisable)
 	active = FALSE;
-#  if !defined(FEAT_GUI_GTK)
     else if (input_style & XIMPreeditPosition)
 	/* There is a problem in switching XIM off when preediting is used,
 	 * and it is not clear how this can be solved.  For now, keep XIM on
 	 * all the time, like it was done in Vim 5.8. */
 	active = TRUE;
-#  endif
 
 #  if defined(FEAT_EVAL)
-    if (p_imaf[0] != NUL)
+    if (USE_IMACTIVATEFUNC)
     {
 	if (active != im_get_status())
 	{
@@ -6328,7 +6334,8 @@
     }
     else
     {
-	EMSG(_(e_xim));
+	if (!is_not_a_term())
+	    EMSG(_(e_xim));
 	XCloseIM(xim);
 	return FALSE;
     }
@@ -6348,7 +6355,7 @@
 im_get_status(void)
 {
 #  ifdef FEAT_EVAL
-    if (p_imsf[0] != NUL)
+    if (USE_IMSTATUSFUNC)
 	return call_imstatusfunc();
 #  endif
     return xim_has_focus;
@@ -6480,7 +6487,7 @@
 im_get_status()
 {
 #  ifdef FEAT_EVAL
-    if (p_imsf[0] != NUL)
+    if (USE_IMSTATUSFUNC)
 	return call_imstatusfunc();
 #  endif
     return im_was_set_active;
@@ -6492,7 +6499,7 @@
 #  if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
     int	    active = !p_imdisable && active_arg;
 
-    if (p_imaf[0] != NUL && active != im_get_status())
+    if (USE_IMACTIVATEFUNC && active != im_get_status())
     {
 	call_imactivatefunc(active);
 	im_was_set_active = active;
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index 0676c03..142aec0 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -17,9 +17,6 @@
 endfunc
 
 func Test_iminsert2()
-  if has('gui_win32')
-    return
-  endif
   set imactivatefunc=IM_activatefunc
   set imstatusfunc=IM_statusfunc
   set iminsert=2
@@ -27,6 +24,8 @@
   set iminsert=0
   set imactivatefunc=
   set imstatusfunc=
-  call assert_equal(1, s:imactivatefunc_called)
-  call assert_equal(1, s:imstatusfunc_called)
+
+  let expected = has('gui_running') ? 0 : 1
+  call assert_equal(expected, s:imactivatefunc_called)
+  call assert_equal(expected, s:imstatusfunc_called)
 endfunc
diff --git a/src/version.c b/src/version.c
index bcf6a81..f94ef27 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1344,
+/**/
     1343,
 /**/
     1342,
