comparison 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
comparison
equal deleted inserted replaced
1846:905f8632005b 1847:ff80ad40a5d6
2734 static int _set_color(HWND handle, unsigned long fore, unsigned long back) 2734 static int _set_color(HWND handle, unsigned long fore, unsigned long back)
2735 { 2735 {
2736 /* Remember that each color component in X11 use 16 bit no matter 2736 /* Remember that each color component in X11 use 16 bit no matter
2737 * what the destination display supports. (and thus GDK) 2737 * what the destination display supports. (and thus GDK)
2738 */ 2738 */
2739 GdkRGBA forecolor, backcolor; 2739 GdkRGBA forecolor = {0}, backcolor = {0};
2740 2740
2741 if(fore & DW_RGB_COLOR) 2741 if(fore & DW_RGB_COLOR)
2742 { 2742 {
2743 forecolor.alpha = 1.0; 2743 forecolor.alpha = 1.0;
2744 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0; 2744 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0;
2745 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0; 2745 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0;
2746 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0; 2746 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0;
2747
2748 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor);
2749 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor);
2750 } 2747 }
2751 else if(fore != DW_CLR_DEFAULT) 2748 else if(fore != DW_CLR_DEFAULT)
2752 {
2753 forecolor = _colors[fore]; 2749 forecolor = _colors[fore];
2754 2750
2755 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor); 2751 gtk_widget_override_color(handle, GTK_STATE_NORMAL, fore != DW_CLR_DEFAULT ? &forecolor : NULL);
2756 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor); 2752 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, fore != DW_CLR_DEFAULT ? &forecolor : NULL);
2757 } 2753
2758 if(back & DW_RGB_COLOR) 2754 if(back & DW_RGB_COLOR)
2759 { 2755 {
2760 backcolor.alpha = 1.0; 2756 backcolor.alpha = 1.0;
2761 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0; 2757 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0;
2762 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0; 2758 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0;
2763 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0; 2759 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0;
2764
2765 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor);
2766 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor);
2767 } 2760 }
2768 else if(back != DW_CLR_DEFAULT) 2761 else if(back != DW_CLR_DEFAULT)
2769 {
2770 backcolor = _colors[back]; 2762 backcolor = _colors[back];
2771 2763
2772 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor); 2764 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, back != DW_CLR_DEFAULT ? &backcolor : NULL);
2773 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor); 2765 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, back != DW_CLR_DEFAULT ? &backcolor : NULL);
2774 }
2775 2766
2776 _save_gdk_colors(handle, forecolor, backcolor); 2767 _save_gdk_colors(handle, forecolor, backcolor);
2777 2768
2778 return TRUE; 2769 return TRUE;
2779 } 2770 }