static void mex_tile_style_changed_cb (MexTile *self, MxStyleChangedFlags flags) { MexTilePrivate *priv = self->priv; MxBorderImage *image; if (priv->header_padding) { g_boxed_free (MX_TYPE_PADDING, priv->header_padding); priv->header_padding = NULL; } if (priv->header_background_color) { g_boxed_free (CLUTTER_TYPE_COLOR, priv->header_background_color); priv->header_background_color = NULL; } mx_stylable_get (MX_STYLABLE (self), "x-mex-header-background", &image, "x-mex-header-background-color", &priv->header_background_color, "x-mex-header-padding", &priv->header_padding, NULL); mx_stylable_apply_clutter_text_attributes (MX_STYLABLE (self), CLUTTER_TEXT (priv->label)); mx_stylable_apply_clutter_text_attributes (MX_STYLABLE (self), CLUTTER_TEXT (priv->secondary_label)); if (image && image->uri) { CoglObject *background; background = mx_texture_cache_get_cogl_texture (mx_texture_cache_get_default (), image->uri); cogl_material_set_layer (priv->material, 0, background); } else { if (cogl_material_get_n_layers (priv->material)) cogl_material_remove_layer (priv->material, 0); } if (image) g_boxed_free (MX_TYPE_BORDER_IMAGE, image); if (priv->icon1) mx_stylable_style_changed (MX_STYLABLE (priv->icon1), flags); if (priv->icon2) mx_stylable_style_changed (MX_STYLABLE (priv->icon2), flags); clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); }
static void mx_button_update_label_style (MxButton *button) { MxButtonPrivate *priv = button->priv; mx_stylable_apply_clutter_text_attributes (MX_STYLABLE (button), CLUTTER_TEXT (priv->label)); }
static void mx_label_style_changed (MxWidget *self, MxStyleChangedFlags flags) { MxLabelPrivate *priv = MX_LABEL (self)->priv; mx_stylable_apply_clutter_text_attributes (MX_STYLABLE (self), CLUTTER_TEXT (priv->label)); }
static void mx_expander_style_changed (MxStylable *stylable) { MxExpander *expander = MX_EXPANDER (stylable); MxExpanderPrivate *priv = expander->priv; const gchar *pseudo_class; pseudo_class = mx_stylable_get_style_pseudo_class (stylable); mx_stylable_set_style_pseudo_class (MX_STYLABLE (expander->priv->arrow), pseudo_class); mx_stylable_apply_clutter_text_attributes (stylable, CLUTTER_TEXT (priv->label)); }
static void mx_combo_box_style_changed (MxComboBox *combo, MxStyleChangedFlags flags) { MxBorderImage *marker_filename; gint spacing; MxComboBoxPrivate *priv = combo->priv; mx_stylable_get (MX_STYLABLE (combo), "x-mx-spacing", &spacing, "x-mx-marker-image", &marker_filename, NULL); if (spacing != priv->spacing) priv->spacing = spacing; if (priv->marker) { clutter_actor_destroy (priv->marker); priv->marker = NULL; } if (marker_filename) { MxTextureCache *cache = mx_texture_cache_get_default (); priv->marker = (ClutterActor *) mx_texture_cache_get_texture (cache, marker_filename->uri); if (priv->marker) clutter_actor_add_child (CLUTTER_ACTOR (combo), priv->marker); g_boxed_free (MX_TYPE_BORDER_IMAGE, marker_filename); } mx_stylable_apply_clutter_text_attributes (MX_STYLABLE (combo), CLUTTER_TEXT (combo->priv->label)); /* make sure the popup is also up-to-date */ mx_stylable_style_changed (MX_STYLABLE (mx_widget_get_menu (MX_WIDGET (combo))), flags | MX_STYLE_CHANGED_FORCE); clutter_actor_queue_relayout (CLUTTER_ACTOR (combo)); }