mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Problem: Cannot specify highlighting for popup window scrollbar. Solution: Add "scrollbarhighlight" and "thumbhighlight" options.
This commit is contained in:
parent
6efd76ae4a
commit
4cd583c6da
@ -269,6 +269,26 @@ apply_move_options(win_T *wp, dict_T *d)
|
|||||||
get_pos_options(wp, 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().
|
* 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);
|
di = dict_find(dict, (char_u *)"zindex", -1);
|
||||||
if (di != NULL)
|
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, "wrap", wp->w_p_wrap);
|
||||||
dict_add_number(dict, "drag", wp->w_popup_drag);
|
dict_add_number(dict, "drag", wp->w_popup_drag);
|
||||||
dict_add_string(dict, "highlight", wp->w_p_wcr);
|
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
|
// find the tabpage that holds this popup
|
||||||
i = 1;
|
i = 1;
|
||||||
@ -2131,8 +2159,8 @@ update_popups(void (*win_update)(win_T *wp))
|
|||||||
int i;
|
int i;
|
||||||
int sb_thumb_top = 0;
|
int sb_thumb_top = 0;
|
||||||
int sb_thumb_height = 0;
|
int sb_thumb_height = 0;
|
||||||
int attr_scroll = highlight_attr[HLF_PSB];
|
int attr_scroll = 0;
|
||||||
int attr_thumb = highlight_attr[HLF_PST];
|
int attr_thumb = 0;
|
||||||
|
|
||||||
// Find the window with the lowest zindex that hasn't been updated yet,
|
// 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
|
// 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)
|
sb_thumb_top = (wp->w_topline - 1 + (linecount / wp->w_height) / 2)
|
||||||
* (wp->w_height - sb_thumb_height)
|
* (wp->w_height - sb_thumb_height)
|
||||||
/ (linecount - wp->w_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];
|
for (i = wp->w_popup_border[0];
|
||||||
|
@ -2904,6 +2904,8 @@ struct window_S
|
|||||||
int w_firstline; // "firstline" for popup window
|
int w_firstline; // "firstline" for popup window
|
||||||
int w_want_scrollbar; // when zero don't use a scrollbar
|
int w_want_scrollbar; // when zero don't use a scrollbar
|
||||||
int w_has_scrollbar; // scrollbar displayed
|
int w_has_scrollbar; // scrollbar displayed
|
||||||
|
char_u *w_scrollbar_highlight; // "scrollbarhighlight"
|
||||||
|
char_u *w_thumb_highlight; // "thumbhighlight"
|
||||||
int w_popup_padding[4]; // popup padding top/right/bot/left
|
int w_popup_padding[4]; // popup padding top/right/bot/left
|
||||||
int w_popup_border[4]; // popup border top/right/bot/left
|
int w_popup_border[4]; // popup border top/right/bot/left
|
||||||
char_u *w_border_highlight[4]; // popup border highlight
|
char_u *w_border_highlight[4]; // popup border highlight
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
>1+0&#ffffff0| @73
|
>1+0&#ffffff0| @73
|
||||||
|2| @73
|
|2| @73
|
||||||
|3| @73
|
|3| @73
|
||||||
|4| @31|o+0#0000001#ffd7ff255|n|e| @4| +0#0000000#0000001| +0&#ffffff0@32
|
|4| @31|o+0#0000001#ffd7ff255|n|e| @4| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|5| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#0000001| +0&#ffffff0@32
|
|5| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|6| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|6| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|7| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|7| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|8| @73
|
|8| @73
|
||||||
|9| @73
|
|9| @73
|
||||||
|:|c|a|l@1| |S|c|r|o|l@1|U|p|(|)| @40|1|,|1| @10|T|o|p|
|
|:|c|a|l@1| |S|c|r|o|l@1|U|p|(|)| @40|1|,|1| @10|T|o|p|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
>1+0&#ffffff0| @73
|
>1+0&#ffffff0| @73
|
||||||
|2| @73
|
|2| @73
|
||||||
|3| @73
|
|3| @73
|
||||||
|4| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|4| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|5| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#0000001| +0&#ffffff0@32
|
|5| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|6| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#0000001| +0&#ffffff0@32
|
|6| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|7| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|7| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|8| @73
|
|8| @73
|
||||||
|9| @73
|
|9| @73
|
||||||
|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p|
|
|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
>1+0&#ffffff0| @73
|
>1+0&#ffffff0| @73
|
||||||
|2| @73
|
|2| @73
|
||||||
|3| @73
|
|3| @73
|
||||||
|4| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|4| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|5| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#a8a8a8255| +0&#ffffff0@32
|
|5| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#ff404010| +0&#ffffff0@32
|
||||||
|6| @31|e+0#0000001#ffd7ff255|i|g|h|t| @2| +0#0000000#0000001| +0&#ffffff0@32
|
|6| @31|e+0#0000001#ffd7ff255|i|g|h|t| @2| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|7| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#0000001| +0&#ffffff0@32
|
|7| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#4040ff13| +0&#ffffff0@32
|
||||||
|8| @73
|
|8| @73
|
||||||
|9| @73
|
|9| @73
|
||||||
|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p|
|
|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p|
|
||||||
|
@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1600,
|
||||||
/**/
|
/**/
|
||||||
1599,
|
1599,
|
||||||
/**/
|
/**/
|
||||||
|
@ -4857,6 +4857,8 @@ win_free(
|
|||||||
free_callback(&wp->w_filter_cb);
|
free_callback(&wp->w_filter_cb);
|
||||||
for (i = 0; i < 4; ++i)
|
for (i = 0; i < 4; ++i)
|
||||||
VIM_CLEAR(wp->w_border_highlight[i]);
|
VIM_CLEAR(wp->w_border_highlight[i]);
|
||||||
|
vim_free(wp->w_scrollbar_highlight);
|
||||||
|
vim_free(wp->w_thumb_highlight);
|
||||||
vim_free(wp->w_popup_title);
|
vim_free(wp->w_popup_title);
|
||||||
list_unref(wp->w_popup_mask);
|
list_unref(wp->w_popup_mask);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user