diff gtk3/dw.c @ 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 cd4ff1eb34a3
children 4790589f52a9
line wrap: on
line diff
--- 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);