From 74f551959f777d3d8993f9fac3a0b501ab95041a Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 15 Feb 2000 22:08:27 +0000 Subject: [PATCH] added wxSYS_COLOUR_LISTBOX ; check to prevent wxSYS_COLOUR_HIGHLIGHT and HIGHLIGHT_TEXT being same git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/settings.cpp | 47 ++++++++++++++++++++++++++++++++++++++----- src/gtk1/settings.cpp | 47 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 84 insertions(+), 10 deletions(-) diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index ca5965f55d..29e3b821f9 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; } @@ -154,6 +158,31 @@ wxColour wxSystemSettings::GetSystemColour( int index ) } 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->bg[GTK_STATE_NORMAL].red; + int green = def->bg[GTK_STATE_NORMAL].green; + int blue = def->bg[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: @@ -165,7 +194,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: diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp index ca5965f55d..29e3b821f9 100644 --- a/src/gtk1/settings.cpp +++ b/src/gtk1/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; } @@ -154,6 +158,31 @@ wxColour wxSystemSettings::GetSystemColour( int index ) } 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->bg[GTK_STATE_NORMAL].red; + int green = def->bg[GTK_STATE_NORMAL].green; + int blue = def->bg[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: @@ -165,7 +194,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: -- 2.45.2