Mercurial > vim
diff src/popupwin.c @ 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 | 56032a704448 |
children | 9c3347b21b89 |
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