make setting the foreground colour of wxTextCtrl in wxGTK work [backport of 1.685 from HEAD]

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-06-20 21:30:16 +00:00
parent 065ada7625
commit 1cf8287602
2 changed files with 28 additions and 18 deletions

View File

@@ -111,6 +111,7 @@ wxMSW:
wxGTK: wxGTK:
- Setting foreground colour of single line wxTextCtrl now works
- More work on setting defaults in GNOME print dialogs. - More work on setting defaults in GNOME print dialogs.
- Also made landscape printing work as per wxMSW. - Also made landscape printing work as per wxMSW.
- Add support for clipping in GNOME print backend. - Add support for clipping in GNOME print backend.

View File

@@ -3874,45 +3874,54 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle)
pango_font_description_copy( m_font.GetNativeFontInfo()->description ); pango_font_description_copy( m_font.GetNativeFontInfo()->description );
} }
int flagsNormal = 0,
flagsPrelight = 0,
flagsActive = 0,
flagsInsensitive = 0;
if ( m_foregroundColour.Ok() ) if ( m_foregroundColour.Ok() )
{ {
const GdkColor *fg = m_foregroundColour.GetColor(); const GdkColor *fg = m_foregroundColour.GetColor();
style->fg[GTK_STATE_NORMAL] = *fg; style->fg[GTK_STATE_NORMAL] =
style->color_flags[GTK_STATE_NORMAL] = GTK_RC_FG; style->text[GTK_STATE_NORMAL] = *fg;
flagsNormal |= GTK_RC_FG | GTK_RC_TEXT;
style->fg[GTK_STATE_PRELIGHT] = *fg; style->fg[GTK_STATE_PRELIGHT] =
style->color_flags[GTK_STATE_PRELIGHT] = GTK_RC_FG; style->text[GTK_STATE_PRELIGHT] = *fg;
flagsPrelight |= GTK_RC_FG | GTK_RC_TEXT;
style->fg[GTK_STATE_ACTIVE] = *fg; style->fg[GTK_STATE_ACTIVE] =
style->color_flags[GTK_STATE_ACTIVE] = GTK_RC_FG; style->text[GTK_STATE_ACTIVE] = *fg;
flagsActive |= GTK_RC_FG | GTK_RC_TEXT;
} }
if ( m_backgroundColour.Ok() ) if ( m_backgroundColour.Ok() )
{ {
const GdkColor *bg = m_backgroundColour.GetColor(); const GdkColor *bg = m_backgroundColour.GetColor();
style->bg[GTK_STATE_NORMAL] = *bg; style->bg[GTK_STATE_NORMAL] =
style->base[GTK_STATE_NORMAL] = *bg; style->base[GTK_STATE_NORMAL] = *bg;
style->color_flags[GTK_STATE_NORMAL] = (GtkRcFlags) flagsNormal |= GTK_RC_BG | GTK_RC_BASE;
(style->color_flags[GTK_STATE_NORMAL] | GTK_RC_BG | GTK_RC_BASE);
style->bg[GTK_STATE_PRELIGHT] = *bg; style->bg[GTK_STATE_PRELIGHT] =
style->base[GTK_STATE_PRELIGHT] = *bg; style->base[GTK_STATE_PRELIGHT] = *bg;
style->color_flags[GTK_STATE_PRELIGHT] = (GtkRcFlags) flagsPrelight |= GTK_RC_BG | GTK_RC_BASE;
(style->color_flags[GTK_STATE_PRELIGHT] | GTK_RC_BG | GTK_RC_BASE);
style->bg[GTK_STATE_ACTIVE] = *bg; style->bg[GTK_STATE_ACTIVE] =
style->base[GTK_STATE_ACTIVE] = *bg; style->base[GTK_STATE_ACTIVE] = *bg;
style->color_flags[GTK_STATE_ACTIVE] = (GtkRcFlags) flagsActive |= GTK_RC_BG | GTK_RC_BASE;
(style->color_flags[GTK_STATE_ACTIVE] | GTK_RC_BG | GTK_RC_BASE);
style->bg[GTK_STATE_INSENSITIVE] = *bg; style->bg[GTK_STATE_INSENSITIVE] =
style->base[GTK_STATE_INSENSITIVE] = *bg; style->base[GTK_STATE_INSENSITIVE] = *bg;
style->color_flags[GTK_STATE_INSENSITIVE] = (GtkRcFlags) flagsInsensitive |= GTK_RC_BG | GTK_RC_BASE;
(style->color_flags[GTK_STATE_INSENSITIVE] | GTK_RC_BG | GTK_RC_BASE);
} }
style->color_flags[GTK_STATE_NORMAL] = (GtkRcFlags)flagsNormal;
style->color_flags[GTK_STATE_PRELIGHT] = (GtkRcFlags)flagsPrelight;
style->color_flags[GTK_STATE_ACTIVE] = (GtkRcFlags)flagsActive;
style->color_flags[GTK_STATE_INSENSITIVE] = (GtkRcFlags)flagsInsensitive;
return style; return style;
} }