]> granicus.if.org Git - vim/commitdiff
patch 8.1.1499: ruler not updated after popup window was removed v8.1.1499
authorBram Moolenaar <Bram@vim.org>
Sat, 8 Jun 2019 17:01:18 +0000 (19:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 8 Jun 2019 17:01:18 +0000 (19:01 +0200)
Problem:    Ruler not updated after popup window was removed.
Solution:   use popup_mask in screen_puts().

src/screen.c
src/testdir/dumps/Test_popupwin_07.dump [new file with mode: 0644]
src/testdir/dumps/Test_popupwin_08.dump [new file with mode: 0644]
src/testdir/test_popupwin.vim
src/version.c

index 76d9b3c4b0731a8ce20c94815ec2d7a778e50c7e..0a93f86add5d14d29b20a28ecbe881ede562469c 100644 (file)
@@ -7897,7 +7897,11 @@ screen_puts_len(
                || ScreenAttrs[off] != attr
                || exmode_active;
 
-       if (need_redraw || force_redraw_this)
+       if ((need_redraw || force_redraw_this)
+#ifdef FEAT_TEXT_PROP
+               && popup_mask[row * screen_Columns + col] <= screen_zindex
+#endif
+          )
        {
 #if defined(FEAT_GUI) || defined(UNIX)
            /* The bold trick makes a single row of pixels appear in the next
diff --git a/src/testdir/dumps/Test_popupwin_07.dump b/src/testdir/dumps/Test_popupwin_07.dump
new file mode 100644 (file)
index 0000000..5c44ad3
--- /dev/null
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @52|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @11
+|~+0#4040ff13#ffffff0| @52|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @6
+|:+0#0000000#ffffff0|c|a|l@1| |p|o|p|u|p|_|m|o|v|e|(|p|o|p|u|p|w|i|n|,| |{|'|l|i|n|e|'|:| |7|,| |'|c|o|l|'|:| |5@1|}|)| @3|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i
+| +0#0000000#ffffff0@53|t+0#0000001#ffd7ff255| |h|e|r|e| @14
diff --git a/src/testdir/dumps/Test_popupwin_08.dump b/src/testdir/dumps/Test_popupwin_08.dump
new file mode 100644 (file)
index 0000000..114e642
--- /dev/null
@@ -0,0 +1,10 @@
+>x+0&#ffffff0@2| @71
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@74
+@57|1|,|1| @10|A|l@1| 
index 46a5d6d3f51d55cb4379dd2f6f1971299b4e146d..5983dfb47d82266c57b8de67be0b08c3e10a96a1 100644 (file)
@@ -51,6 +51,19 @@ func Test_simple_popup()
   call term_sendkeys(buf, ":redraw\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_06', {})
 
+  " move popup over ruler
+  call term_sendkeys(buf, ":set cmdheight=2\<CR>")
+  call term_sendkeys(buf, ":call popup_move(popupwin, {'line': 7, 'col': 55})\<CR>")
+  call VerifyScreenDump(buf, 'Test_popupwin_07', {})
+
+  " clear all popups after moving the cursor a bit, so that ruler is updated
+  call term_sendkeys(buf, "axxx\<Esc>")
+  call term_wait(buf)
+  call term_sendkeys(buf, "0")
+  call term_wait(buf)
+  call term_sendkeys(buf, ":popupclear\<CR>")
+  call VerifyScreenDump(buf, 'Test_popupwin_08', {})
+
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestPopup')
index 79b0d55ae422905f40c0efd93c9f8ab2dc379637..6635610f9f8a29a282f5ff406f74481bf50948d1 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1499,
 /**/
     1498,
 /**/