diff mbox series

gconfig: avoid use of hard coded colors for rows

Message ID 20201123213314.GA25149@gnu.org (mailing list archive)
State New
Headers show
Series gconfig: avoid use of hard coded colors for rows | expand

Commit Message

Ebrahim Byagowi Nov. 23, 2020, 9:33 p.m. UTC
This makes the tool to avoids use of hard coded colors for
options rows by using theme provided theme provided colors
to fix issue of rows being not readable when system theme
is set to a dark theme.

Signed-off-by: Ebrahim Byagowi <ebrahim@gnu.org>
---
 scripts/kconfig/gconf.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

Comments

Ebrahim Byagowi Nov. 23, 2020, 9:51 p.m. UTC | #1
Not an important thing of course just that I was unable to
use gconfig on my system with a theme dark is set like [1]
and this turns it into [2] without noticable change to the
light theme.

I had hit this minor issue also in the past but decided to
fix it this time.

This isn't the best possible approach as now we have we have
a GdkColor -> gchar * -> GdkColor round trip, yet wanted to
keep the change small and maybe go for a larger change later
if it worths it.

Hope you find it useful also.

  [1]: https://i.imgur.com/MJfIkup.png
  [2]: https://i.imgur.com/lgvod9V.png
Randy Dunlap Dec. 2, 2020, 1:02 a.m. UTC | #2
On 11/23/20 1:51 PM, Ebrahim Byagowi wrote:
> Not an important thing of course just that I was unable to
> use gconfig on my system with a theme dark is set like [1]
> and this turns it into [2] without noticable change to the
> light theme.
> 
> I had hit this minor issue also in the past but decided to
> fix it this time.
> 
> This isn't the best possible approach as now we have we have
> a GdkColor -> gchar * -> GdkColor round trip, yet wanted to
> keep the change small and maybe go for a larger change later
> if it worths it.
> 
> Hope you find it useful also.
> 
>   [1]: https://i.imgur.com/MJfIkup.png
>   [2]: https://i.imgur.com/lgvod9V.png

Hi,

AFAIK, this makes one known gconfig user.
I was hoping that we could remove it...
diff mbox series

Patch

diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
index 5527482c3..b96570c28 100644
--- a/scripts/kconfig/gconf.c
+++ b/scripts/kconfig/gconf.c
@@ -49,6 +49,8 @@  GtkWidget *back_btn = NULL;
 GtkWidget *save_btn = NULL;
 GtkWidget *save_menu_item = NULL;
 
+GtkStyle *style;
+
 GtkTextTag *tag1, *tag2;
 GdkColor color;
 
@@ -109,7 +111,7 @@  static const char *dbg_sym_flags(int val)
 #endif
 
 static void replace_button_icon(GladeXML *xml, GdkDrawable *window,
-				GtkStyle *style, gchar *btn_name, gchar **xpm)
+				gchar *btn_name, gchar **xpm)
 {
 	GdkPixmap *pixmap;
 	GdkBitmap *mask;
@@ -132,7 +134,6 @@  static void init_main_window(const gchar *glade_file)
 	GladeXML *xml;
 	GtkWidget *widget;
 	GtkTextBuffer *txtbuf;
-	GtkStyle *style;
 
 	xml = glade_xml_new(glade_file, "window1", NULL);
 	if (!xml)
@@ -168,11 +169,11 @@  static void init_main_window(const gchar *glade_file)
 	style = gtk_widget_get_style(main_wnd);
 	widget = glade_xml_get_widget(xml, "toolbar1");
 
-	replace_button_icon(xml, main_wnd->window, style,
+	replace_button_icon(xml, main_wnd->window,
 			    "button4", (gchar **) xpm_single_view);
-	replace_button_icon(xml, main_wnd->window, style,
+	replace_button_icon(xml, main_wnd->window,
 			    "button5", (gchar **) xpm_split_view);
-	replace_button_icon(xml, main_wnd->window, style,
+	replace_button_icon(xml, main_wnd->window,
 			    "button6", (gchar **) xpm_tree_view);
 
 	txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
@@ -1052,13 +1053,15 @@  static gchar **fill_row(struct menu *menu)
 	    g_strdup_printf("%s %s", menu_get_prompt(menu),
 			    sym && !sym_has_value(sym) ? "(NEW)" : "");
 
+	GdkColor *color;
 	if (opt_mode == OPT_ALL && !menu_is_visible(menu))
-		row[COL_COLOR] = g_strdup("DarkGray");
+		color = &style->text[GTK_STATE_INSENSITIVE];
 	else if (opt_mode == OPT_PROMPT &&
 			menu_has_prompt(menu) && !menu_is_visible(menu))
-		row[COL_COLOR] = g_strdup("DarkGray");
+		color = &style->text[GTK_STATE_INSENSITIVE];
 	else
-		row[COL_COLOR] = g_strdup("Black");
+		color = &style->text[GTK_STATE_NORMAL];
+	row[COL_COLOR] = gdk_color_to_string(color);
 
 	ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
 	switch (ptype) {