X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c79853685d09ba1d7eaef604395c40b731ed2f34..2b33b72819002e038a2a0cb2b3aa9b2cde880c7a:/src/gtk/settings.cpp diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index db8fbc1bb6..658c74ab4e 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -57,10 +57,12 @@ #define SHIFT (8*(sizeof(short int)-sizeof(char))) //wxColour *g_systemWinColour = (wxColour *) NULL; -wxColour *g_systemBtnFaceColour = (wxColour *) NULL; -wxColour *g_systemBtnShadowColour = (wxColour *) NULL; -wxColour *g_systemBtnHighlightColour = (wxColour *) NULL; -wxColour *g_systemHighlightColour = (wxColour *) NULL; +wxColour *g_systemBtnFaceColour = (wxColour *) NULL; +wxColour *g_systemBtnShadowColour = (wxColour *) NULL; +wxColour *g_systemBtnHighlightColour = (wxColour *) NULL; +wxColour *g_systemHighlightColour = (wxColour *) NULL; +wxColour *g_systemHighlightTextColour = (wxColour *) NULL; +wxColour *g_systemListBoxColour = (wxColour *) NULL; wxFont *g_systemFont = (wxFont *) NULL; @@ -71,6 +73,8 @@ void wxSystemSettings::Done() delete g_systemBtnShadowColour; delete g_systemBtnHighlightColour; delete g_systemHighlightColour; + delete g_systemHighlightTextColour; + delete g_systemListBoxColour; delete g_systemFont; } @@ -128,26 +132,56 @@ wxColour wxSystemSettings::GetSystemColour( int index ) { if (!g_systemHighlightColour) { -/* - g_systemHighlightColour = - new wxColour( 0 >> SHIFT, - 0 >> SHIFT, - 0x9c40 >> SHIFT ); -*/ GtkWidget *widget = gtk_button_new(); GtkStyle *def = gtk_rc_get_style( widget ); - int red = def->bg[GTK_STATE_SELECTED].red; - int green = def->bg[GTK_STATE_SELECTED].green; - int blue = def->bg[GTK_STATE_SELECTED].blue; + if (!def) + def = gtk_widget_get_default_style(); + if (def) + { + int red = def->bg[GTK_STATE_SELECTED].red; + int green = def->bg[GTK_STATE_SELECTED].green; + int blue = def->bg[GTK_STATE_SELECTED].blue; + g_systemHighlightColour = + new wxColour( red >> SHIFT, + green >> SHIFT, + blue >> SHIFT ); + } + else + { + g_systemHighlightColour = + new wxColour( 0 >> SHIFT, + 0 >> SHIFT, + 0x9c40 >> SHIFT ); + } gtk_widget_destroy( widget ); - g_systemHighlightColour = - new wxColour( red >> SHIFT, - green >> SHIFT, - blue >> SHIFT ); } return *g_systemHighlightColour; } + case wxSYS_COLOUR_LISTBOX: + { + if (!g_systemListBoxColour) + { + GtkWidget *widget = gtk_list_new(); + GtkStyle *def = gtk_rc_get_style( widget ); + if (!def) + def = gtk_widget_get_default_style(); + if (def) + { + 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, + blue >> SHIFT ); + } + else + g_systemListBoxColour = new wxColour(*wxWHITE); + gtk_widget_destroy( widget ); + } + return *g_systemListBoxColour; + } case wxSYS_COLOUR_MENUTEXT: case wxSYS_COLOUR_WINDOWTEXT: case wxSYS_COLOUR_CAPTIONTEXT: @@ -159,7 +193,15 @@ wxColour wxSystemSettings::GetSystemColour( int index ) } case wxSYS_COLOUR_HIGHLIGHTTEXT: { - return *wxWHITE; + if (!g_systemHighlightTextColour) + { + wxColour hclr = GetSystemColour(wxSYS_COLOUR_HIGHLIGHT); + if (hclr.Red() > 200 && hclr.Green() > 200 && hclr.Blue() > 200) + g_systemHighlightTextColour = new wxColour(*wxBLACK); + else + g_systemHighlightTextColour = new wxColour(*wxWHITE); + } + return *g_systemHighlightTextColour; } case wxSYS_COLOUR_INFOBK: case wxSYS_COLOUR_APPWORKSPACE: