diff options
Diffstat (limited to 'gtk/gtkfontchooser.c')
-rw-r--r-- | gtk/gtkfontchooser.c | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/gtk/gtkfontchooser.c b/gtk/gtkfontchooser.c index 733758fb7f..db9b469ece 100644 --- a/gtk/gtkfontchooser.c +++ b/gtk/gtkfontchooser.c @@ -29,23 +29,20 @@ #include "gtkcellrenderertext.h" #include "gtkentry.h" #include "gtkframe.h" -#include "gtkhbbox.h" -#include "gtkhbox.h" +#include "gtkbbox.h" +#include "gtkbox.h" #include "gtklabel.h" #include "gtkliststore.h" #include "gtkstock.h" #include "gtktextview.h" #include "gtktreeselection.h" #include "gtktreeview.h" -#include "gtkbox.h" #include "gtkscrolledwindow.h" #include "gtkintl.h" #include "gtkaccessible.h" #include "gtkbuildable.h" #include "gtkprivate.h" -#include "gtkalignment.h" #include "gtkscale.h" -#include "gtkbox.h" #include "gtkspinbutton.h" #include "gtknotebook.h" #include "gtkwidget.h" @@ -141,6 +138,13 @@ enum { PREVIEW_TITLE_COLUMN }; +enum { + SIGNAL_FONT_ACTIVATED, + N_SIGNALS +}; + +static guint signals[N_SIGNALS] = { 0, }; + static void gtk_font_chooser_set_property (GObject *object, guint prop_id, const GValue *value, @@ -199,6 +203,26 @@ gtk_font_chooser_class_init (GtkFontChooserClass *klass) TRUE, GTK_PARAM_READWRITE)); + /** + * GtkFontChooserWidget::font-activated: + * @self: the object which received the signal + * @fontname: the font name + * + * Emitted when a font is activated from the widget's list. + * This usually happens when the user double clicks an item, + * or an item is selected and the user presses one of the keys + * Space, Shift+Space, Return or Enter. + */ + signals[SIGNAL_FONT_ACTIVATED] = + g_signal_new ("font-activated", + GTK_TYPE_FONT_CHOOSER, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkFontChooserClass, font_activated), + NULL, NULL, + NULL, + G_TYPE_NONE, + 1, G_TYPE_STRING); + g_type_class_add_private (klass, sizeof (GtkFontChooserPrivate)); } @@ -396,6 +420,21 @@ set_range_marks (GtkFontChooserPrivate *priv, } static void +row_activated_cb (GtkTreeView *view, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer user_data) +{ + GtkFontChooser *self = user_data; + gchar *fontname; + + fontname = gtk_font_chooser_get_font_name (self); + + g_signal_emit (self, signals[SIGNAL_FONT_ACTIVATED], 0, fontname); + g_free (fontname); +} + +static void cursor_changed_cb (GtkTreeView *treeview, gpointer user_data) { @@ -642,7 +681,10 @@ gtk_font_chooser_init (GtkFontChooser *fontchooser) g_signal_connect (priv->family_face_list, "cursor-changed", G_CALLBACK (cursor_changed_cb), fontchooser); - /* Zoom on preview scroll*/ + g_signal_connect (priv->family_face_list, "row-activated", + G_CALLBACK (row_activated_cb), fontchooser); + + /* Zoom on preview scroll */ g_signal_connect (priv->preview, "scroll-event", G_CALLBACK (zoom_preview_cb), fontchooser); @@ -1070,6 +1112,7 @@ gtk_font_chooser_get_font_name (GtkFontChooser *fontchooser) font_name = g_strdup_printf ("%s %d", font_desc_name, fontchooser->priv->size / PANGO_SCALE); g_free (font_desc_name); + return font_name; } |