changeset 18074:364a9be6a21e v8.1.2032

patch 8.1.2032: scrollbar thumb wrong in popup window Commit: https://github.com/vim/vim/commit/076d98839c4f6f15ae3563263057aa99ff04a869 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 14 22:23:29 2019 +0200 patch 8.1.2032: scrollbar thumb wrong in popup window Problem: Scrollbar thumb wrong in popup window. Solution: Adjust thumb size and position when scrolled.
author Bram Moolenaar <Bram@vim.org>
date Sat, 14 Sep 2019 22:30:03 +0200
parents c53b2d988211
children c144bdfaf26c
files src/popupwin.c src/testdir/dumps/Test_popupwin_scroll_2.dump src/version.c
diffstat 3 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -3363,10 +3363,12 @@ update_popups(void (*win_update)(win_T *
 	// Compute scrollbar thumb position and size.
 	if (wp->w_has_scrollbar)
 	{
-	    linenr_T linecount = wp->w_buffer->b_ml.ml_line_count;
-
-	    sb_thumb_height = (wp->w_height * wp->w_height + linecount / 2)
-								   / linecount;
+	    linenr_T	linecount = wp->w_buffer->b_ml.ml_line_count;
+	    int		height = wp->w_height;
+
+	    sb_thumb_height = (height * height + linecount / 2) / linecount;
+	    if (wp->w_topline > 1 && sb_thumb_height == height)
+		--sb_thumb_height;  // scrolled, no full thumb
 	    if (sb_thumb_height == 0)
 		sb_thumb_height = 1;
 	    if (linecount <= wp->w_height)
@@ -3377,6 +3379,9 @@ update_popups(void (*win_update)(win_T *
 				+ (linecount / wp->w_height) / 2)
 				* (wp->w_height - sb_thumb_height)
 						  / (linecount - wp->w_height);
+	    if (wp->w_topline > 1 && sb_thumb_top == 0 && height > 1)
+		sb_thumb_top = 1;  // show it's scrolled
+
 	    if (wp->w_scrollbar_highlight != NULL)
 		attr_scroll = syn_name2attr(wp->w_scrollbar_highlight);
 	    else
--- a/src/testdir/dumps/Test_popupwin_scroll_2.dump
+++ b/src/testdir/dumps/Test_popupwin_scroll_2.dump
@@ -1,9 +1,9 @@
 >1+0&#ffffff0| @73
 |2| @73
 |3| @73
-|4| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#0000001| +0&#ffffff0@32
+|4| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#a8a8a8255| +0&#ffffff0@32
 |5| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#0000001| +0&#ffffff0@32
-|6| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32
+|6| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#0000001| +0&#ffffff0@32
 |7| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32
 |8| @73
 |9| @73
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2032,
+/**/
     2031,
 /**/
     2030,