diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-26 05:13:57 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-26 05:13:57 +0200 |
commit | 4cd583c6da08ce2f87e1c07b6490a74bb3c3d0c0 (patch) | |
tree | 69d196edbe6544f3c902c5000b21bbb96d313bbd /src/popupwin.c | |
parent | 6efd76ae4a5cb60facd261abd5d64800ec96402d (diff) | |
download | vim-git-4cd583c6da08ce2f87e1c07b6490a74bb3c3d0c0.tar.gz |
patch 8.1.1600: cannot specify highlighting for popup window scrollbarv8.1.1600
Problem: Cannot specify highlighting for popup window scrollbar.
Solution: Add "scrollbarhighlight" and "thumbhighlight" options.
Diffstat (limited to 'src/popupwin.c')
-rw-r--r-- | src/popupwin.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/popupwin.c b/src/popupwin.c index 2158a8036..5aab84a4a 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -269,6 +269,26 @@ apply_move_options(win_T *wp, dict_T *d) get_pos_options(wp, d); } + static void +check_highlight(dict_T *dict, char *name, char_u **pval) +{ + dictitem_T *di; + char_u *str; + + di = dict_find(dict, (char_u *)name, -1); + if (di != NULL) + { + if (di->di_tv.v_type != VAR_STRING) + semsg(_(e_invargval), name); + else + { + str = tv_get_string(&di->di_tv); + if (*str != NUL) + *pval = vim_strsave(str); + } + } +} + /* * Shared between popup_create() and f_popup_setoptions(). */ @@ -375,6 +395,9 @@ apply_general_options(win_T *wp, dict_T *dict) } } + check_highlight(dict, "scrollbarhighlight", &wp->w_scrollbar_highlight); + check_highlight(dict, "thumbhighlight", &wp->w_thumb_highlight); + di = dict_find(dict, (char_u *)"zindex", -1); if (di != NULL) { @@ -1677,6 +1700,11 @@ f_popup_getoptions(typval_T *argvars, typval_T *rettv) dict_add_number(dict, "wrap", wp->w_p_wrap); dict_add_number(dict, "drag", wp->w_popup_drag); dict_add_string(dict, "highlight", wp->w_p_wcr); + if (wp->w_scrollbar_highlight != NULL) + dict_add_string(dict, "scrollbarhighlight", + wp->w_scrollbar_highlight); + if (wp->w_thumb_highlight != NULL) + dict_add_string(dict, "thumbhighlight", wp->w_thumb_highlight); // find the tabpage that holds this popup i = 1; @@ -2131,8 +2159,8 @@ update_popups(void (*win_update)(win_T *wp)) int i; int sb_thumb_top = 0; int sb_thumb_height = 0; - int attr_scroll = highlight_attr[HLF_PSB]; - int attr_thumb = highlight_attr[HLF_PST]; + int attr_scroll = 0; + int attr_thumb = 0; // Find the window with the lowest zindex that hasn't been updated yet, // so that the window with a higher zindex is drawn later, thus goes on @@ -2246,6 +2274,14 @@ update_popups(void (*win_update)(win_T *wp)) sb_thumb_top = (wp->w_topline - 1 + (linecount / wp->w_height) / 2) * (wp->w_height - sb_thumb_height) / (linecount - wp->w_height); + if (wp->w_scrollbar_highlight != NULL) + attr_scroll = syn_name2attr(wp->w_scrollbar_highlight); + else + attr_scroll = highlight_attr[HLF_PSB]; + if (wp->w_thumb_highlight != NULL) + attr_thumb = syn_name2attr(wp->w_thumb_highlight); + else + attr_thumb = highlight_attr[HLF_PST]; } for (i = wp->w_popup_border[0]; |