Mercurial > dwindows
changeset 1847:ff80ad40a5d6
Initial attempt at allowing DW_CLR_DEFAULT clear color style overrides on GTK2/3.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 28 Dec 2012 01:24:39 +0000 |
parents | 905f8632005b |
children | 68f923e57542 |
files | gtk/dw.c gtk3/dw.c |
diffstat | 2 files changed, 28 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/dw.c Thu Dec 27 13:03:47 2012 +0000 +++ b/gtk/dw.c Fri Dec 28 01:24:39 2012 +0000 @@ -3358,30 +3358,24 @@ GtkStyle *style = gtk_style_copy(gtk_widget_get_style(handle)); #endif - if(fore != DW_CLR_DEFAULT) - { -#if GTK_MAJOR_VERSION > 1 - gtk_widget_modify_text(handle, 0, &forecolor); - gtk_widget_modify_text(handle, 1, &forecolor); - gtk_widget_modify_fg(handle, 0, &forecolor); - gtk_widget_modify_fg(handle, 1, &forecolor); -#else - if(style) - style->text[0] = style->text[1] = style->fg[0] = style->fg[1] = forecolor; -#endif - } - if(back != DW_CLR_DEFAULT) - { -#if GTK_MAJOR_VERSION > 1 - gtk_widget_modify_base(handle, 0, &backcolor); - gtk_widget_modify_base(handle, 1, &backcolor); - gtk_widget_modify_bg(handle, 0, &backcolor); - gtk_widget_modify_bg(handle, 1, &backcolor); -#else - if(style) - style->base[0] = style->base[1] = style->bg[0] = style->bg[1] = backcolor; -#endif - } +#if GTK_MAJOR_VERSION > 1 + gtk_widget_modify_text(handle, 0, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + gtk_widget_modify_text(handle, 1, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + gtk_widget_modify_fg(handle, 0, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + gtk_widget_modify_fg(handle, 1, fore != DW_CLR_DEFAULT ? &forecolor : NULL); +#else + if(fore != DW_CLR_DEFAULT && style) + style->text[0] = style->text[1] = style->fg[0] = style->fg[1] = forecolor; +#endif +#if GTK_MAJOR_VERSION > 1 + gtk_widget_modify_base(handle, 0, back != DW_CLR_DEFAULT ? &backcolor : NULL); + gtk_widget_modify_base(handle, 1, back != DW_CLR_DEFAULT ? &backcolor : NULL); + gtk_widget_modify_bg(handle, 0, back != DW_CLR_DEFAULT ? &backcolor : NULL); + gtk_widget_modify_bg(handle, 1, back != DW_CLR_DEFAULT ? &backcolor : NULL); +#else + if(back != DW_CLR_DEFAULT && style) + style->base[0] = style->base[1] = style->bg[0] = style->bg[1] = backcolor; +#endif _save_gdk_colors(handle, forecolor, backcolor); @@ -3391,8 +3385,8 @@ for(z=0;z<rowcount;z++) { - gtk_clist_set_foreground(GTK_CLIST(handle), z, &forecolor); - gtk_clist_set_background(GTK_CLIST(handle), z, &backcolor); + gtk_clist_set_foreground(GTK_CLIST(handle), z, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + gtk_clist_set_background(GTK_CLIST(handle), z, back != DW_CLR_DEFAULT ? &backcolor : NULL); } }
--- a/gtk3/dw.c Thu Dec 27 13:03:47 2012 +0000 +++ b/gtk3/dw.c Fri Dec 28 01:24:39 2012 +0000 @@ -2736,7 +2736,7 @@ /* Remember that each color component in X11 use 16 bit no matter * what the destination display supports. (and thus GDK) */ - GdkRGBA forecolor, backcolor; + GdkRGBA forecolor = {0}, backcolor = {0}; if(fore & DW_RGB_COLOR) { @@ -2744,34 +2744,25 @@ forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0; forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0; forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0; - - gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor); - gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor); } else if(fore != DW_CLR_DEFAULT) - { forecolor = _colors[fore]; - - gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor); - gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor); - } + + gtk_widget_override_color(handle, GTK_STATE_NORMAL, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + gtk_widget_override_color(handle, GTK_STATE_ACTIVE, fore != DW_CLR_DEFAULT ? &forecolor : NULL); + if(back & DW_RGB_COLOR) { backcolor.alpha = 1.0; backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0; backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0; backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0; - - gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor); - gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor); } else if(back != DW_CLR_DEFAULT) - { backcolor = _colors[back]; - - gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor); - gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor); - } + + gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, back != DW_CLR_DEFAULT ? &backcolor : NULL); + gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, back != DW_CLR_DEFAULT ? &backcolor : NULL); _save_gdk_colors(handle, forecolor, backcolor);