diff --git a/src/getchar.c b/src/getchar.c
index fe1cc7e..4a3587c 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1575,6 +1575,9 @@
 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
 		    || im_is_preediting()
 #endif
+#if defined(FEAT_TEXT_PROP)
+		    || popup_no_mapping()
+#endif
 		    )
 	    {
 		// no mapping after modifier has been read
diff --git a/src/popupwin.c b/src/popupwin.c
index 4ca6d9f..28ad48c 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -800,6 +800,15 @@
 	    set_callback(&wp->w_filter_cb, &callback);
 	}
     }
+    di = dict_find(dict, (char_u *)"mapping", -1);
+    if (di != NULL)
+    {
+	nr = dict_get_number(dict, (char_u *)"mapping");
+	if (nr)
+	    wp->w_popup_flags |= POPF_MAPPING;
+	else
+	    wp->w_popup_flags &= ~POPF_MAPPING;
+    }
 
     di = dict_find(dict, (char_u *)"callback", -1);
     if (di != NULL)
@@ -1413,7 +1422,7 @@
     if (rettv != NULL)
 	rettv->vval.v_number = wp->w_id;
     wp->w_popup_pos = POPPOS_TOPLEFT;
-    wp->w_popup_flags = POPF_IS_POPUP;
+    wp->w_popup_flags = POPF_IS_POPUP | POPF_MAPPING;
 
     if (buf != NULL)
     {
@@ -1561,6 +1570,7 @@
 	wp->w_popup_pos = POPPOS_CENTER;
 	wp->w_zindex = POPUPWIN_DIALOG_ZINDEX;
 	wp->w_popup_flags |= POPF_DRAG;
+	wp->w_popup_flags &= ~POPF_MAPPING;
 	for (i = 0; i < 4; ++i)
 	{
 	    wp->w_popup_border[i] = 1;
@@ -2502,6 +2512,25 @@
 }
 
 /*
+ * Return TRUE if there is a popup visible with a filter callback and the
+ * "mapping" property off.
+ */
+    int
+popup_no_mapping(void)
+{
+    int	    round;
+    win_T   *wp;
+
+    for (round = 1; round <= 2; ++round)
+	for (wp = round == 1 ? first_popupwin : curtab->tp_first_popupwin;
+						   wp != NULL; wp = wp->w_next)
+	    if (wp->w_filter_cb.cb_name != NULL
+		    && (wp->w_popup_flags & (POPF_HIDDEN | POPF_MAPPING)) == 0)
+		return TRUE;
+    return FALSE;
+}
+
+/*
  * Called when the cursor moved: check if any popup needs to be closed if the
  * cursor moved far enough.
  */
diff --git a/src/proto/popupwin.pro b/src/proto/popupwin.pro
index b964fc0..f1d0d2b 100644
--- a/src/proto/popupwin.pro
+++ b/src/proto/popupwin.pro
@@ -38,6 +38,7 @@
 void popup_reset_handled(void);
 win_T *find_next_popup(int lowest);
 int popup_do_filter(int c);
+int popup_no_mapping(void);
 void popup_check_cursor_pos(void);
 void may_update_popup_mask(int type);
 void update_popups(void (*win_update)(win_T *wp));
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index d4b98ae..e5d1631 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -657,6 +657,7 @@
   call assert_fails('call popup_create("text", #{mask: ["asdf"]})', 'E475:')
   call popup_clear()
   call assert_fails('call popup_create("text", #{mask: test_null_list()})', 'E475:')
+  call assert_fails('call popup_create("text", #{mapping: []})', 'E745:')
   call popup_clear()
 endfunc
 
@@ -1203,6 +1204,8 @@
     let s:cb_winid = a:id
     let s:cb_res = a:res
   endfunc
+  " mapping won't be used in popup
+  map j k
 
   let winid = ShowMenu(" ", 1)
   let winid = ShowMenu("j \<CR>", 2)
@@ -1215,6 +1218,7 @@
   let winid = ShowMenu("\<C-C>", -1)
 
   delfunc QuitCallback
+  unmap j
 endfunc
 
 func Test_popup_menu_screenshot()
@@ -2194,6 +2198,9 @@
   call term_sendkeys(buf, "/another\<CR>\<C-W>}")
   call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_4', {})
 
+  call term_sendkeys(buf, ":cd ..\<CR>:\<CR>")
+  call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_5', {})
+
   call StopVimInTerminal(buf)
   call delete('Xtags')
   call delete('Xtagfile')
diff --git a/src/version.c b/src/version.c
index ec67fe4..b2c4416 100644
--- a/src/version.c
+++ b/src/version.c
@@ -774,6 +774,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1799,
+/**/
     1798,
 /**/
     1797,
diff --git a/src/vim.h b/src/vim.h
index 02b4c03..70fcf3a 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -621,6 +621,7 @@
 #define POPF_ON_CMDLINE	0x10	// popup overlaps command line
 #define POPF_DRAG	0x20	// popup can be moved by dragging
 #define POPF_RESIZE	0x40	// popup can be resized by dragging
+#define POPF_MAPPING	0x80	// mapping keys
 
 #ifdef FEAT_TEXT_PROP
 # define WIN_IS_POPUP(wp) ((wp)->w_popup_flags != 0)
