fix for (re)setting a control to the system default colours
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7647 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -3259,6 +3259,21 @@ void wxWindow::SetWidgetStyle()
|
|||||||
style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor();
|
style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor();
|
||||||
style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor();
|
style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Try to restore the gtk default style. This is still a little
|
||||||
|
// oversimplified for what is probably really needed here for controls
|
||||||
|
// other than buttons, but is better than not being able to (re)set a
|
||||||
|
// control's foreground colour to *wxBLACK -- RL
|
||||||
|
GtkStyle *def = gtk_rc_get_style( m_widget );
|
||||||
|
|
||||||
|
if (!def)
|
||||||
|
def = gtk_widget_get_default_style();
|
||||||
|
|
||||||
|
style->fg[GTK_STATE_NORMAL] = def->fg[GTK_STATE_NORMAL];
|
||||||
|
style->fg[GTK_STATE_PRELIGHT] = def->fg[GTK_STATE_PRELIGHT];
|
||||||
|
style->fg[GTK_STATE_ACTIVE] = def->fg[GTK_STATE_ACTIVE];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_backgroundColour.Ok())
|
if (m_backgroundColour.Ok())
|
||||||
@@ -3275,6 +3290,28 @@ void wxWindow::SetWidgetStyle()
|
|||||||
style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
||||||
style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Try to restore the gtk default style. This is still a little
|
||||||
|
// oversimplified for what is probably really needed here for controls
|
||||||
|
// other than buttons, but is better than not being able to (re)set a
|
||||||
|
// control's background colour to default grey and means resetting a
|
||||||
|
// button to wxSYS_COLOUR_BTNFACE will restore its usual highlighting
|
||||||
|
// behavior -- RL
|
||||||
|
GtkStyle *def = gtk_rc_get_style( m_widget );
|
||||||
|
|
||||||
|
if (!def)
|
||||||
|
def = gtk_widget_get_default_style();
|
||||||
|
|
||||||
|
style->bg[GTK_STATE_NORMAL] = def->bg[GTK_STATE_NORMAL];
|
||||||
|
style->base[GTK_STATE_NORMAL] = def->base[GTK_STATE_NORMAL];
|
||||||
|
style->bg[GTK_STATE_PRELIGHT] = def->bg[GTK_STATE_PRELIGHT];
|
||||||
|
style->base[GTK_STATE_PRELIGHT] = def->base[GTK_STATE_PRELIGHT];
|
||||||
|
style->bg[GTK_STATE_ACTIVE] = def->bg[GTK_STATE_ACTIVE];
|
||||||
|
style->base[GTK_STATE_ACTIVE] = def->base[GTK_STATE_ACTIVE];
|
||||||
|
style->bg[GTK_STATE_INSENSITIVE] = def->bg[GTK_STATE_INSENSITIVE];
|
||||||
|
style->base[GTK_STATE_INSENSITIVE] = def->base[GTK_STATE_INSENSITIVE];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3259,6 +3259,21 @@ void wxWindow::SetWidgetStyle()
|
|||||||
style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor();
|
style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor();
|
||||||
style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor();
|
style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Try to restore the gtk default style. This is still a little
|
||||||
|
// oversimplified for what is probably really needed here for controls
|
||||||
|
// other than buttons, but is better than not being able to (re)set a
|
||||||
|
// control's foreground colour to *wxBLACK -- RL
|
||||||
|
GtkStyle *def = gtk_rc_get_style( m_widget );
|
||||||
|
|
||||||
|
if (!def)
|
||||||
|
def = gtk_widget_get_default_style();
|
||||||
|
|
||||||
|
style->fg[GTK_STATE_NORMAL] = def->fg[GTK_STATE_NORMAL];
|
||||||
|
style->fg[GTK_STATE_PRELIGHT] = def->fg[GTK_STATE_PRELIGHT];
|
||||||
|
style->fg[GTK_STATE_ACTIVE] = def->fg[GTK_STATE_ACTIVE];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_backgroundColour.Ok())
|
if (m_backgroundColour.Ok())
|
||||||
@@ -3275,6 +3290,28 @@ void wxWindow::SetWidgetStyle()
|
|||||||
style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
||||||
style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Try to restore the gtk default style. This is still a little
|
||||||
|
// oversimplified for what is probably really needed here for controls
|
||||||
|
// other than buttons, but is better than not being able to (re)set a
|
||||||
|
// control's background colour to default grey and means resetting a
|
||||||
|
// button to wxSYS_COLOUR_BTNFACE will restore its usual highlighting
|
||||||
|
// behavior -- RL
|
||||||
|
GtkStyle *def = gtk_rc_get_style( m_widget );
|
||||||
|
|
||||||
|
if (!def)
|
||||||
|
def = gtk_widget_get_default_style();
|
||||||
|
|
||||||
|
style->bg[GTK_STATE_NORMAL] = def->bg[GTK_STATE_NORMAL];
|
||||||
|
style->base[GTK_STATE_NORMAL] = def->base[GTK_STATE_NORMAL];
|
||||||
|
style->bg[GTK_STATE_PRELIGHT] = def->bg[GTK_STATE_PRELIGHT];
|
||||||
|
style->base[GTK_STATE_PRELIGHT] = def->base[GTK_STATE_PRELIGHT];
|
||||||
|
style->bg[GTK_STATE_ACTIVE] = def->bg[GTK_STATE_ACTIVE];
|
||||||
|
style->base[GTK_STATE_ACTIVE] = def->base[GTK_STATE_ACTIVE];
|
||||||
|
style->bg[GTK_STATE_INSENSITIVE] = def->bg[GTK_STATE_INSENSITIVE];
|
||||||
|
style->base[GTK_STATE_INSENSITIVE] = def->base[GTK_STATE_INSENSITIVE];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user