static void response_cb (GtkDialog *dialog, gint response_id, gpointer data) { GnmFontButton *font_button = GNM_FONT_BUTTON (data); GnmFontButtonPrivate *priv = font_button->priv; GtkFontChooser *font_chooser; GObject *object; gtk_widget_hide (font_button->priv->font_dialog); if (response_id != GTK_RESPONSE_OK) return; font_chooser = GTK_FONT_CHOOSER (priv->font_dialog); object = G_OBJECT (font_chooser); g_object_freeze_notify (object); clear_font_data (font_button); priv->font_desc = gtk_font_chooser_get_font_desc (font_chooser); if (priv->font_desc) priv->fontname = pango_font_description_to_string (priv->font_desc); priv->font_family = gtk_font_chooser_get_font_family (font_chooser); if (priv->font_family) g_object_ref (priv->font_family); priv->font_face = gtk_font_chooser_get_font_face (font_chooser); if (priv->font_face) g_object_ref (priv->font_face); priv->font_size = gtk_font_chooser_get_font_size (font_chooser); /* Set label font */ gnm_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "font"); g_object_notify (G_OBJECT (font_button), "font-desc"); g_object_notify (G_OBJECT (font_button), "font-name"); g_object_thaw_notify (object); /* Emit font_set signal */ g_signal_emit (font_button, font_button_signals[FONT_SET], 0); }
static void gnm_font_button_finalize (GObject *object) { GnmFontButton *font_button = GNM_FONT_BUTTON (object); if (font_button->priv->font_dialog != NULL) gtk_widget_destroy (font_button->priv->font_dialog); font_button->priv->font_dialog = NULL; g_free (font_button->priv->title); font_button->priv->title = NULL; clear_font_data (font_button); clear_font_filter_data (font_button); g_free (font_button->priv->preview_text); font_button->priv->preview_text = NULL; G_OBJECT_CLASS (gnm_font_button_parent_class)->finalize (object); }
static void gtk_font_button_finalize (GObject *object) { GtkFontButton *font_button = GTK_FONT_BUTTON (object); GtkFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog != NULL) gtk_widget_destroy (priv->font_dialog); g_free (priv->title); clear_font_data (font_button); clear_font_filter_data (font_button); g_free (priv->preview_text); g_clear_object (&priv->provider); G_OBJECT_CLASS (gtk_font_button_parent_class)->finalize (object); }
static void gnm_font_button_take_font_desc (GnmFontButton *font_button, PangoFontDescription *font_desc) { GnmFontButtonPrivate *priv = font_button->priv; GObject *object = G_OBJECT (font_button); if (priv->font_desc && font_desc && pango_font_description_equal (priv->font_desc, font_desc)) { pango_font_description_free (font_desc); return; } g_object_freeze_notify (object); clear_font_data (font_button); if (font_desc) priv->font_desc = font_desc; /* adopted */ else priv->font_desc = pango_font_description_from_string (_("Sans 12")); if (pango_font_description_get_size_is_absolute (priv->font_desc)) priv->font_size = pango_font_description_get_size (priv->font_desc); else priv->font_size = pango_font_description_get_size (priv->font_desc) / PANGO_SCALE; gnm_font_button_update_font_data (font_button); gnm_font_button_update_font_info (font_button); if (priv->font_dialog) gtk_font_chooser_set_font_desc (GTK_FONT_CHOOSER (priv->font_dialog), priv->font_desc); g_object_notify (G_OBJECT (font_button), "font"); g_object_notify (G_OBJECT (font_button), "font-desc"); g_object_notify (G_OBJECT (font_button), "font-name"); g_object_thaw_notify (object); }