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:
		@ -186,7 +186,7 @@ property_data_new (void)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
property_data_free (PropertyData *data)
 | 
			
		||||
property_data_remove_values (PropertyData *data)
 | 
			
		||||
{
 | 
			
		||||
  guint i;
 | 
			
		||||
 | 
			
		||||
@ -200,6 +200,14 @@ property_data_free (PropertyData *data)
 | 
			
		||||
        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_slice_free (PropertyData, data);
 | 
			
		||||
}
 | 
			
		||||
@ -1203,6 +1211,16 @@ gtk_style_properties_merge (GtkStyleProperties       *props,
 | 
			
		||||
          GValue *value;
 | 
			
		||||
 | 
			
		||||
          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);
 | 
			
		||||
 | 
			
		||||
          if (G_VALUE_TYPE (&data->value) == PANGO_TYPE_FONT_DESCRIPTION &&
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user