X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/74f551959f777d3d8993f9fac3a0b501ab95041a..057b55b016d9e2076fde422f29948dc55e97f0d7:/src/gtk1/settings.cpp diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp index 29e3b821f9..4aae2448f7 100644 --- a/src/gtk1/settings.cpp +++ b/src/gtk1/settings.cpp @@ -15,9 +15,15 @@ #include "wx/settings.h" #include "wx/debug.h" +#include "wx/cmndata.h" + #include +#include #include +extern GdkFont *GtkGetDefaultGuiFont(); + + /* #define wxSYS_COLOUR_SCROLLBAR 0 #define wxSYS_COLOUR_BACKGROUND 1 @@ -63,6 +69,7 @@ wxColour *g_systemBtnHighlightColour = (wxColour *) NULL; wxColour *g_systemHighlightColour = (wxColour *) NULL; wxColour *g_systemHighlightTextColour = (wxColour *) NULL; wxColour *g_systemListBoxColour = (wxColour *) NULL; +wxColour *g_systemBtnTextColour = (wxColour *) NULL; wxFont *g_systemFont = (wxFont *) NULL; @@ -76,6 +83,7 @@ void wxSystemSettings::Done() delete g_systemHighlightTextColour; delete g_systemListBoxColour; delete g_systemFont; + delete g_systemBtnTextColour; } wxColour wxSystemSettings::GetSystemColour( int index ) @@ -91,7 +99,36 @@ wxColour wxSystemSettings::GetSystemColour( int index ) case wxSYS_COLOUR_ACTIVEBORDER: case wxSYS_COLOUR_INACTIVEBORDER: case wxSYS_COLOUR_BTNFACE: + case wxSYS_COLOUR_3DLIGHT: { + if (!g_systemBtnFaceColour) + { + GtkWidget *widget = gtk_button_new(); + GtkStyle *def = gtk_rc_get_style( widget ); + if (!def) + def = gtk_widget_get_default_style(); + if (def) + { + int red = def->bg[GTK_STATE_NORMAL].red; + int green = def->bg[GTK_STATE_NORMAL].green; + int blue = def->bg[GTK_STATE_NORMAL].blue; + g_systemBtnFaceColour = + new wxColour( red >> SHIFT, + green >> SHIFT, + blue >> SHIFT ); + } + else + { + g_systemBtnFaceColour = + new wxColour( 0 >> SHIFT, + 0 >> SHIFT, + 0x9c40 >> SHIFT ); + } + gtk_widget_destroy( widget ); + + } + return *g_systemBtnFaceColour; + /* if (!g_systemBtnFaceColour) { g_systemBtnFaceColour = @@ -100,14 +137,29 @@ wxColour wxSystemSettings::GetSystemColour( int index ) 0xd6d6 >> SHIFT ); } return *g_systemBtnFaceColour; + */ } case wxSYS_COLOUR_WINDOW: { return *wxWHITE; } + case wxSYS_COLOUR_3DDKSHADOW: + { + return *wxBLACK; + } case wxSYS_COLOUR_GRAYTEXT: case wxSYS_COLOUR_BTNSHADOW: + //case wxSYS_COLOUR_3DSHADOW: { + if (!g_systemBtnShadowColour) + { + wxColour faceColour(GetSystemColour(wxSYS_COLOUR_3DFACE)); + g_systemBtnShadowColour = + new wxColour((unsigned char) (faceColour.Red() * 0.666), + (unsigned char) (faceColour.Green() * 0.666), + (unsigned char) (faceColour.Blue() * 0.666)); + } + /* if (!g_systemBtnShadowColour) { g_systemBtnShadowColour = @@ -115,10 +167,14 @@ wxColour wxSystemSettings::GetSystemColour( int index ) 0x7530 >> SHIFT, 0x7530 >> SHIFT ); } + */ return *g_systemBtnShadowColour; } - case wxSYS_COLOUR_BTNHIGHLIGHT: + case wxSYS_COLOUR_3DHIGHLIGHT: + //case wxSYS_COLOUR_BTNHIGHLIGHT: { + return * wxWHITE; +/* I think this should normally be white (JACS 8/2000) if (!g_systemBtnHighlightColour) { g_systemBtnHighlightColour = @@ -127,6 +183,7 @@ wxColour wxSystemSettings::GetSystemColour( int index ) 0xea60 >> SHIFT ); } return *g_systemBtnHighlightColour; +*/ } case wxSYS_COLOUR_HIGHLIGHT: { @@ -164,13 +221,13 @@ wxColour wxSystemSettings::GetSystemColour( int index ) { GtkWidget *widget = gtk_list_new(); GtkStyle *def = gtk_rc_get_style( widget ); - if (!def) + if (!def) def = gtk_widget_get_default_style(); if (def) { - int red = def->bg[GTK_STATE_NORMAL].red; - int green = def->bg[GTK_STATE_NORMAL].green; - int blue = def->bg[GTK_STATE_NORMAL].blue; + int red = def->base[GTK_STATE_NORMAL].red; + int green = def->base[GTK_STATE_NORMAL].green; + int blue = def->base[GTK_STATE_NORMAL].blue; g_systemListBoxColour = new wxColour( red >> SHIFT, green >> SHIFT, @@ -179,7 +236,6 @@ wxColour wxSystemSettings::GetSystemColour( int index ) else g_systemListBoxColour = new wxColour(*wxWHITE); gtk_widget_destroy( widget ); - } return *g_systemListBoxColour; } @@ -190,7 +246,30 @@ wxColour wxSystemSettings::GetSystemColour( int index ) case wxSYS_COLOUR_BTNTEXT: case wxSYS_COLOUR_INFOTEXT: { - return *wxBLACK; + if (!g_systemBtnTextColour) + { + GtkWidget *widget = gtk_button_new(); + GtkStyle *def = gtk_rc_get_style( widget ); + if (!def) + def = gtk_widget_get_default_style(); + if (def) + { + int red = def->fg[GTK_STATE_NORMAL].red; + int green = def->fg[GTK_STATE_NORMAL].green; + int blue = def->fg[GTK_STATE_NORMAL].blue; + g_systemBtnTextColour = + new wxColour( red >> SHIFT, + green >> SHIFT, + blue >> SHIFT ); + } + else + { + g_systemBtnTextColour = + new wxColour(0, 0, 0); + } + gtk_widget_destroy( widget ); + } + return *g_systemBtnTextColour; } case wxSYS_COLOUR_HIGHLIGHTTEXT: { @@ -229,7 +308,23 @@ wxFont wxSystemSettings::GetSystemFont( int index ) case wxSYS_DEFAULT_GUI_FONT: { if (!g_systemFont) + { +#if 0 + GdkFont *gdk_font = GtkGetDefaultGuiFont(); + if (gdk_font) + { + GSList *font_list = ((GdkFontPrivate*)gdk_font)->names; + char *name = (char*)font_list->data; + wxString font_string( name ); + wxFontData font_data; + g_systemFont = new wxFont( font_string, font_data ); + } + gtk_widget_destroy( widget ); +#endif + g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); + + } return *g_systemFont; } }