X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aed8ac3f8954c07fb2dee3e2ba9ae02fa8890428..f5ba273ecd799f652736ce2bc830283787302a56:/src/gtk/settings.cpp diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 99894b71a2..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,70 +73,115 @@ void wxSystemSettings::Done() delete g_systemBtnShadowColour; delete g_systemBtnHighlightColour; delete g_systemHighlightColour; + delete g_systemHighlightTextColour; + delete g_systemListBoxColour; delete g_systemFont; } wxColour wxSystemSettings::GetSystemColour( int index ) { - switch (index) - { - case wxSYS_COLOUR_SCROLLBAR: - case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: - case wxSYS_COLOUR_INACTIVECAPTION: - case wxSYS_COLOUR_MENU: - case wxSYS_COLOUR_WINDOWFRAME: - case wxSYS_COLOUR_ACTIVEBORDER: - case wxSYS_COLOUR_INACTIVEBORDER: - case wxSYS_COLOUR_BTNFACE: - { - if (!g_systemBtnFaceColour) - { - g_systemBtnFaceColour = - new wxColour( 0xd6d6 >> SHIFT, - 0xd6d6 >> SHIFT, - 0xd6d6 >> SHIFT ); - } - return *g_systemBtnFaceColour; - } - case wxSYS_COLOUR_WINDOW: - { - return *wxWHITE; - } - case wxSYS_COLOUR_GRAYTEXT: - case wxSYS_COLOUR_BTNSHADOW: - { - if (!g_systemBtnShadowColour) - { - g_systemBtnShadowColour = - new wxColour( 0x7530 >> SHIFT, - 0x7530 >> SHIFT, - 0x7530 >> SHIFT ); - } - return *g_systemBtnShadowColour; - } - case wxSYS_COLOUR_BTNHIGHLIGHT: - { - if (!g_systemBtnHighlightColour) - { - g_systemBtnHighlightColour = - new wxColour( 0xea60 >> SHIFT, - 0xea60 >> SHIFT, - 0xea60 >> SHIFT ); - } - return *g_systemBtnHighlightColour; - } - case wxSYS_COLOUR_HIGHLIGHT: + switch (index) { - if (!g_systemHighlightColour) - { - g_systemHighlightColour = - new wxColour( 0 >> SHIFT, - 0 >> SHIFT, - 0x9c40 >> SHIFT ); - } - return *g_systemHighlightColour; - } + case wxSYS_COLOUR_SCROLLBAR: + case wxSYS_COLOUR_BACKGROUND: + case wxSYS_COLOUR_ACTIVECAPTION: + case wxSYS_COLOUR_INACTIVECAPTION: + case wxSYS_COLOUR_MENU: + case wxSYS_COLOUR_WINDOWFRAME: + case wxSYS_COLOUR_ACTIVEBORDER: + case wxSYS_COLOUR_INACTIVEBORDER: + case wxSYS_COLOUR_BTNFACE: + { + if (!g_systemBtnFaceColour) + { + g_systemBtnFaceColour = + new wxColour( 0xd6d6 >> SHIFT, + 0xd6d6 >> SHIFT, + 0xd6d6 >> SHIFT ); + } + return *g_systemBtnFaceColour; + } + case wxSYS_COLOUR_WINDOW: + { + return *wxWHITE; + } + case wxSYS_COLOUR_GRAYTEXT: + case wxSYS_COLOUR_BTNSHADOW: + { + if (!g_systemBtnShadowColour) + { + g_systemBtnShadowColour = + new wxColour( 0x7530 >> SHIFT, + 0x7530 >> SHIFT, + 0x7530 >> SHIFT ); + } + return *g_systemBtnShadowColour; + } + case wxSYS_COLOUR_BTNHIGHLIGHT: + { + if (!g_systemBtnHighlightColour) + { + g_systemBtnHighlightColour = + new wxColour( 0xea60 >> SHIFT, + 0xea60 >> SHIFT, + 0xea60 >> SHIFT ); + } + return *g_systemBtnHighlightColour; + } + case wxSYS_COLOUR_HIGHLIGHT: + { + if (!g_systemHighlightColour) + { + 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_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 ); + + } + 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: @@ -146,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: