changeset 28067:e257b6be5bd6 v8.2.4558

patch 8.2.4558: Motif: using default colors does not work as expected Commit: https://github.com/vim/vim/commit/e850439a561d8e7153b987473d768fe9696e9afa Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 13 14:45:03 2022 +0000 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)
author Bram Moolenaar <Bram@vim.org>
date Sun, 13 Mar 2022 16:00:03 +0100
parents f022d3903e58
children 1be25e090d52
files src/gui.h src/gui_motif.c src/version.c
diffstat 3 files changed, 12 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui.h
+++ b/src/gui.h
@@ -333,12 +333,6 @@ typedef struct Gui
     char	*rsrc_scroll_bg_name;	// Color of scrollbar background
     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
     Window	wid;		    // Window id of text area
     int		visibility;	    // Is shell partially/fully obscured?
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -440,11 +440,6 @@ gui_x11_create_widgets(void)
 	menuBar = XmCreateMenuBar(vimForm, "menuBar", al, ac);
 	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);
     }
 #endif
@@ -1672,12 +1667,10 @@ gui_mch_def_colors(void)
 {
     if (gui.in_use)
     {
-	// Use the values saved when starting up.  These should come from the
-	// window manager or a resources file.
-	gui.menu_fg_pixel = gui.menu_def_fg_pixel;
-	gui.menu_bg_pixel = gui.menu_def_bg_pixel;
-	gui.scroll_fg_pixel = gui.scroll_def_fg_pixel;
-	gui.scroll_bg_pixel = gui.scroll_def_bg_pixel;
+	gui.menu_fg_pixel = gui_get_color((char_u *)gui.rsrc_menu_fg_name);
+	gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
+	gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
+	gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
 #ifdef FEAT_BEVAL_GUI
 	gui.tooltip_fg_pixel =
 			gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
@@ -1860,14 +1853,6 @@ gui_mch_create_scrollbar(
     sb->id = XtCreateWidget("scrollBar",
 	    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)
     {
 	gui_mch_set_scrollbar_colors(sb);
@@ -1895,12 +1880,16 @@ gui_mch_set_scrollbar_colors(scrollbar_T
 	if (gui.scroll_bg_pixel != INVALCOLOR)
 	{
 #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);
-#else
+#endif
+
+	    // Set the through color directly, in case XmChangeColor() decided
+	    // to change it.
 	    XtVaSetValues(sb->id,
 		    XmNtroughColor, gui.scroll_bg_pixel,
 		    NULL);
-#endif
 	}
 
 	if (gui.scroll_fg_pixel != INVALCOLOR)
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4558,
+/**/
     4557,
 /**/
     4556,