0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

patch 8.2.4558: Motif: using default colors does not work as expected

Problem:    Motif: using default colors does not work as expected.
Solution:   Do not try to store the default colors, use the resources.
            (closes #9933)
This commit is contained in:
Bram Moolenaar
2022-03-13 14:45:03 +00:00
parent 754d2b4036
commit e850439a56
3 changed files with 12 additions and 27 deletions

View File

@@ -333,12 +333,6 @@ typedef struct Gui
char *rsrc_scroll_bg_name; // Color of scrollbar background char *rsrc_scroll_bg_name; // Color of scrollbar background
guicolor_T scroll_bg_pixel; // Same in Pixel format guicolor_T scroll_bg_pixel; // Same in Pixel format
# ifdef FEAT_GUI_MOTIF
guicolor_T menu_def_fg_pixel; // Default menu foreground
guicolor_T menu_def_bg_pixel; // Default menu background
guicolor_T scroll_def_fg_pixel; // Default scrollbar foreground
guicolor_T scroll_def_bg_pixel; // Default scrollbar background
# endif
Display *dpy; // X display Display *dpy; // X display
Window wid; // Window id of text area Window wid; // Window id of text area
int visibility; // Is shell partially/fully obscured? int visibility; // Is shell partially/fully obscured?

View File

@@ -440,11 +440,6 @@ gui_x11_create_widgets(void)
menuBar = XmCreateMenuBar(vimForm, "menuBar", al, ac); menuBar = XmCreateMenuBar(vimForm, "menuBar", al, ac);
XtManageChild(menuBar); XtManageChild(menuBar);
// Remember the default colors, needed for ":hi clear".
XtVaGetValues(menuBar,
XmNbackground, &gui.menu_def_bg_pixel,
XmNforeground, &gui.menu_def_fg_pixel,
NULL);
gui_motif_menu_colors(menuBar); gui_motif_menu_colors(menuBar);
} }
#endif #endif
@@ -1672,12 +1667,10 @@ gui_mch_def_colors(void)
{ {
if (gui.in_use) if (gui.in_use)
{ {
// Use the values saved when starting up. These should come from the gui.menu_fg_pixel = gui_get_color((char_u *)gui.rsrc_menu_fg_name);
// window manager or a resources file. gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
gui.menu_fg_pixel = gui.menu_def_fg_pixel; gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
gui.menu_bg_pixel = gui.menu_def_bg_pixel; gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
gui.scroll_fg_pixel = gui.scroll_def_fg_pixel;
gui.scroll_bg_pixel = gui.scroll_def_bg_pixel;
#ifdef FEAT_BEVAL_GUI #ifdef FEAT_BEVAL_GUI
gui.tooltip_fg_pixel = gui.tooltip_fg_pixel =
gui_get_color((char_u *)gui.rsrc_tooltip_fg_name); gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
@@ -1860,14 +1853,6 @@ gui_mch_create_scrollbar(
sb->id = XtCreateWidget("scrollBar", sb->id = XtCreateWidget("scrollBar",
xmScrollBarWidgetClass, textAreaForm, args, n); xmScrollBarWidgetClass, textAreaForm, args, n);
// Remember the default colors, needed for ":hi clear".
if (gui.scroll_def_bg_pixel == (guicolor_T)0
&& gui.scroll_def_fg_pixel == (guicolor_T)0)
XtVaGetValues(sb->id,
XmNbackground, &gui.scroll_def_bg_pixel,
XmNforeground, &gui.scroll_def_fg_pixel,
NULL);
if (sb->id != (Widget)0) if (sb->id != (Widget)0)
{ {
gui_mch_set_scrollbar_colors(sb); gui_mch_set_scrollbar_colors(sb);
@@ -1895,12 +1880,16 @@ gui_mch_set_scrollbar_colors(scrollbar_T *sb)
if (gui.scroll_bg_pixel != INVALCOLOR) if (gui.scroll_bg_pixel != INVALCOLOR)
{ {
#if (XmVersion>=1002) #if (XmVersion>=1002)
// This should not only set the through color but also adjust
// related colors, such as shadows.
XmChangeColor(sb->id, gui.scroll_bg_pixel); XmChangeColor(sb->id, gui.scroll_bg_pixel);
#else #endif
// Set the through color directly, in case XmChangeColor() decided
// to change it.
XtVaSetValues(sb->id, XtVaSetValues(sb->id,
XmNtroughColor, gui.scroll_bg_pixel, XmNtroughColor, gui.scroll_bg_pixel,
NULL); NULL);
#endif
} }
if (gui.scroll_fg_pixel != INVALCOLOR) if (gui.scroll_fg_pixel != INVALCOLOR)

View File

@@ -750,6 +750,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 */
/**/
4558,
/**/ /**/
4557, 4557,
/**/ /**/