]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.1.1448: statusline is sometimes drawn on top of popup v8.1.1448
authorBram Moolenaar <Bram@vim.org>
Sun, 2 Jun 2019 12:12:11 +0000 (14:12 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 2 Jun 2019 12:12:11 +0000 (14:12 +0200)
Problem:    Statusline is sometimes drawn on top of popup.
Solution:   Redraw popups after the statusline. (Naruhiko Nishino,
            closes #4468)

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

index 387c398650a6217ea6e2efb1bb163956c9889cf9..be3bcfad5d1013610ce66b5366417478d3e3a1b6 100644 (file)
@@ -823,7 +823,7 @@ update_screen(int type_arg)
     did_intro = TRUE;
 
 #ifdef FEAT_TEXT_PROP
-    // Display popup windows on top of the others.
+    // Display popup windows on top of the windows.
     update_popups();
 #endif
 
@@ -987,6 +987,11 @@ update_debug_sign(buf_T *buf, linenr_T lnum)
            win_redr_status(wp, FALSE);
     }
 
+#ifdef FEAT_TEXT_PROP
+    // Display popup windows on top of the others.
+    update_popups();
+#endif
+
     update_finish();
 }
 #endif
@@ -1211,6 +1216,11 @@ updateWindow(win_T *wp)
            )
        win_redr_status(wp, FALSE);
 
+#ifdef FEAT_TEXT_PROP
+    // Display popup windows on top of everything.
+    update_popups();
+#endif
+
     update_finish();
 }
 #endif
@@ -6795,6 +6805,11 @@ redraw_statuslines(void)
            win_redr_status(wp, FALSE);
     if (redraw_tabline)
        draw_tabline();
+
+#ifdef FEAT_TEXT_PROP
+    // Display popup windows on top of the status lines.
+    update_popups();
+#endif
 }
 
 #if defined(FEAT_WILDMENU) || defined(PROTO)
@@ -11101,6 +11116,11 @@ showruler(int always)
     /* Redraw the tab pages line if needed. */
     if (redraw_tabline)
        draw_tabline();
+
+#ifdef FEAT_TEXT_PROP
+    // Display popup windows on top of everything.
+    update_popups();
+#endif
 }
 
 #ifdef FEAT_CMDL_INFO
diff --git a/src/testdir/dumps/Test_popupwin_behind.dump b/src/testdir/dumps/Test_popupwin_behind.dump
new file mode 100644 (file)
index 0000000..1fa8615
--- /dev/null
@@ -0,0 +1,10 @@
+| +0&#ffffff0@36||+1&&> +0&&@36
+|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @34|l+0#0000001#ffd7ff255|i|n|e|1| +0#4040ff13#ffffff0@33
+|[+1#0000000&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l|l+0#0000001#ffd7ff255|i|n|e|2| +3#0000000#ffffff0|N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1
+| +0&&@35|l+0#0000001#ffd7ff255|i|n|e|3| +0#0000000#ffffff0@33
+|~+0#4040ff13&| @34|l+0#0000001#ffd7ff255|i|n|e|4| +0#4040ff13#ffffff0@33
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
+|A+0&&|l|r|e|a|d|y| |o|n|l|y| |o|n|e| |w|i|n|d|o|w| @51
index 4ed3b1caba63cb42da7b18a537c7c1353a6661c5..0eb171a68bc3e5a102b3a649737d87d24e15ba42 100644 (file)
@@ -610,3 +610,40 @@ func Test_popup_empty()
   call assert_equal(2, pos.width)
   call assert_equal(3, pos.height)
 endfunc
+
+func Test_popup_never_behind()
+  if !CanRunVimInTerminal()
+    return
+  endif
+  " +-----------------------------+
+  " |             |               |
+  " |             |               |
+  " |             |               |
+  " |            line1            |
+  " |------------line2------------|
+  " |            line3            |
+  " |            line4            |
+  " |                             |
+  " |                             |
+  " +-----------------------------+
+  let lines =<< trim END
+    only 
+    split
+    vsplit
+    let info_window1 = getwininfo()[0]
+    let line = info_window1['height']
+    let col = info_window1['width']
+    call popup_create(['line1', 'line2', 'line3', 'line4'], {
+             \   'line' : line,
+             \   'col' : col,
+             \ })
+  END
+  call writefile(lines, 'XtestPopupBehind')
+  let buf = RunVimInTerminal('-S XtestPopupBehind', {'rows': 10})
+  call term_sendkeys(buf, "\<C-W>w")
+  call VerifyScreenDump(buf, 'Test_popupwin_behind', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XtestPopupBehind')
+endfunc
index 9f316c168f3c7b75b2aa3842c0b7d379a394fba1..83181abd9f7ae4fd3c33eb02ce51d299181b42b0 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1448,
 /**/
     1447,
 /**/