[Xfce4-commits] <midori:master> Use GtkFontButton with filter func with GTK+ 3.2
Christian Dywan
noreply at xfce.org
Wed Mar 27 01:28:01 CET 2013
Updating branch refs/heads/master
to 8642ec238a325d58d1341bc4b447106da5952c44 (commit)
from ef5f7e82c99bdf146c3f4fc9e567bbc2fe083817 (commit)
commit 8642ec238a325d58d1341bc4b447106da5952c44
Author: Christian Dywan <christian at twotoasts.de>
Date: Wed Mar 27 01:26:29 2013 +0100
Use GtkFontButton with filter func with GTK+ 3.2
katze/katze-utils.c | 46 ++++++++++++++++++++++++++++++++++++++--------
1 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/katze/katze-utils.c b/katze/katze-utils.c
index ebf7477..24e5ee1 100644
--- a/katze/katze-utils.c
+++ b/katze/katze-utils.c
@@ -70,6 +70,24 @@ proxy_uri_file_set_cb (GtkFileChooser* button,
g_object_set (object, property, file, NULL);
}
+#if GTK_CHECK_VERSION (3, 2, 0)
+static void
+proxy_font_chooser_font_activated_cb (GtkFontChooser* chooser,
+ const gchar* font_name,
+ GObject* object)
+{
+ gtk_font_chooser_set_font (chooser, font_name);
+}
+
+static gboolean
+proxy_font_chooser_filter_monospace_cb (PangoFontFamily* family,
+ PangoFontFace* face,
+ gpointer data)
+{
+ gboolean monospace = GPOINTER_TO_INT (data);
+ return monospace == pango_font_family_is_monospace (family);
+}
+#else
static void
proxy_combo_box_text_changed_cb (GtkComboBoxText* button,
GObject* object)
@@ -79,6 +97,7 @@ proxy_combo_box_text_changed_cb (GtkComboBoxText* button,
g_object_set (object, property, text, NULL);
g_free (text);
}
+#endif
static const gchar*
katze_app_info_get_commandline (GAppInfo* info)
@@ -498,30 +517,40 @@ katze_property_proxy (gpointer object,
else if (type == G_TYPE_PARAM_STRING && (_hint == I_("font")
|| _hint == I_("font-monospace")))
{
+ string = katze_object_get_string (object, property);
+ if (!string)
+ string = g_strdup (G_PARAM_SPEC_STRING (pspec)->default_value);
+ /* 'sans' and 'sans-serif' are presumably the same */
+ if (!g_strcmp0 (string, "sans-serif"))
+ katze_assign (string, g_strdup ("sans"));
+ gboolean monospace = _hint == I_("font-monospace");
+
+ #if GTK_CHECK_VERSION (3, 2, 0)
+ widget = gtk_font_button_new ();
+ gtk_font_button_set_show_size (GTK_FONT_BUTTON (widget), FALSE);
+ gtk_font_chooser_set_font (GTK_FONT_CHOOSER (widget), string);
+ g_signal_connect (widget, "font-activated",
+ G_CALLBACK (proxy_font_chooser_font_activated_cb), object);
+ gtk_font_chooser_set_filter_func (GTK_FONT_CHOOSER (widget),
+ (GtkFontFilterFunc)proxy_font_chooser_filter_monospace_cb, GINT_TO_POINTER (monospace), NULL);
+ #else
GtkComboBox* combo;
gint n_families, i;
PangoContext* context;
PangoFontFamily** families;
- gboolean monospace = _hint == I_("font-monospace");
- string = katze_object_get_string (object, property);
widget = gtk_combo_box_text_new ();
combo = GTK_COMBO_BOX (widget);
context = gtk_widget_get_pango_context (widget);
pango_context_list_families (context, &families, &n_families);
- if (!string)
- string = g_strdup (G_PARAM_SPEC_STRING (pspec)->default_value);
- /* 'sans' and 'sans-serif' are presumably the same */
- if (!g_strcmp0 (string, "sans-serif"))
- katze_assign (string, g_strdup ("sans"));
if (string)
{
gint j = 0;
for (i = 0; i < n_families; i++)
{
- const gchar* font = pango_font_family_get_name (families[i]);
if (monospace != pango_font_family_is_monospace (families[i]))
continue;
+ const gchar* font = pango_font_family_get_name (families[i]);
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), font);
if (!g_ascii_strcasecmp (font, string))
gtk_combo_box_set_active (combo, j);
@@ -533,6 +562,7 @@ katze_property_proxy (gpointer object,
g_signal_connect (widget, "changed",
G_CALLBACK (proxy_combo_box_text_changed_cb), object);
g_free (families);
+ #endif
}
else if (type == G_TYPE_PARAM_STRING && hint && g_str_has_prefix (hint, "application-"))
{
More information about the Xfce4-commits
mailing list