Make selectors with no explicit state from higher priority GtkStyleProviders override lower ones with a state.
This makes overriding information from the themes more intuitive
This commit is contained in:
parent
5f43a51a83
commit
2f207ca749
@ -186,7 +186,7 @@ property_data_new (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
property_data_free (PropertyData *data)
|
property_data_remove_values (PropertyData *data)
|
||||||
{
|
{
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
@ -200,6 +200,14 @@ property_data_free (PropertyData *data)
|
|||||||
g_value_unset (&value_data->value);
|
g_value_unset (&value_data->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data->values->len > 0)
|
||||||
|
g_array_remove_range (data->values, 0, data->values->len);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
property_data_free (PropertyData *data)
|
||||||
|
{
|
||||||
|
property_data_remove_values (data);
|
||||||
g_array_free (data->values, TRUE);
|
g_array_free (data->values, TRUE);
|
||||||
g_slice_free (PropertyData, data);
|
g_slice_free (PropertyData, data);
|
||||||
}
|
}
|
||||||
@ -1203,6 +1211,16 @@ gtk_style_properties_merge (GtkStyleProperties *props,
|
|||||||
GValue *value;
|
GValue *value;
|
||||||
|
|
||||||
data = &g_array_index (prop_to_merge->values, ValueData, i);
|
data = &g_array_index (prop_to_merge->values, ValueData, i);
|
||||||
|
|
||||||
|
if (replace && data->state == GTK_STATE_FLAG_NORMAL &&
|
||||||
|
G_VALUE_TYPE (&data->value) != PANGO_TYPE_FONT_DESCRIPTION)
|
||||||
|
{
|
||||||
|
/* Let normal state override all states
|
||||||
|
* previously set in the original set
|
||||||
|
*/
|
||||||
|
property_data_remove_values (prop);
|
||||||
|
}
|
||||||
|
|
||||||
value = property_data_get_value (prop, data->state);
|
value = property_data_get_value (prop, data->state);
|
||||||
|
|
||||||
if (G_VALUE_TYPE (&data->value) == PANGO_TYPE_FONT_DESCRIPTION &&
|
if (G_VALUE_TYPE (&data->value) == PANGO_TYPE_FONT_DESCRIPTION &&
|
||||||
|
Loading…
Reference in New Issue
Block a user