Fix background color from wxControl::GetDefaultAttributes() with GTK+3

The default background is not explicitly set on each widget, but is determined
by a parent, usually the TLW. Fixes wxDC default background color for controls.
See #18325
This commit is contained in:
Paul Cornett 2019-01-14 17:45:25 -08:00
parent 9a27ea5a2d
commit b10c6ab3a8

View File

@ -267,6 +267,18 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
attr.font = wxFont(info);
gdk_rgba_free(fc);
gdk_rgba_free(bc);
// Go up the parent chain for a background color
while (attr.colBg.Alpha() == 0 && (widget = gtk_widget_get_parent(widget)))
{
sc = gtk_widget_get_style_context(widget);
gtk_style_context_save(sc);
gtk_style_context_set_state(sc, stateFlag);
gtk_style_context_get(sc, stateFlag, "background-color", &bc, NULL);
gtk_style_context_restore(sc);
attr.colBg = wxColour(*bc);
gdk_rgba_free(bc);
}
#else
GtkStyle* style;