summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2010-03-16 10:51:39 -0500
committerShaun McCance <shaunm@gnome.org>2010-03-16 10:56:01 -0500
commit94f1bc39ca2daf3e4f7e5ea5ea100a238ef8625d (patch)
tree5b60779b4c02caaa1053cad81bd21f7210f69960
parent07646814d6b2e84896f578a3e9723e827a3ff70b (diff)
downloadyelp-94f1bc39ca2daf3e4f7e5ea5ea100a238ef8625d.tar.gz
[libyelp/yelp-settings] Adding font-adjustment property
-rw-r--r--libyelp/yelp-settings.c49
-rw-r--r--libyelp/yelp-settings.h3
2 files changed, 48 insertions, 4 deletions
diff --git a/libyelp/yelp-settings.c b/libyelp/yelp-settings.c
index 69f10895..c15599e8 100644
--- a/libyelp/yelp-settings.c
+++ b/libyelp/yelp-settings.c
@@ -39,6 +39,8 @@ struct _YelpSettingsPriv {
GtkSettings *gtk_settings;
GtkIconTheme *gtk_icon_theme;
+ gint font_adjustment;
+
gulong gtk_theme_changed;
gulong gtk_font_changed;
gulong icon_theme_changed;
@@ -55,7 +57,8 @@ static guint settings_signals[LAST_SIGNAL] = {0,};
enum {
PROP_0,
PROP_GTK_SETTINGS,
- PROP_GTK_ICON_THEME
+ PROP_GTK_ICON_THEME,
+ PROP_FONT_ADJUSTMENT
};
gchar *icon_names[YELP_SETTINGS_NUM_ICONS];
@@ -149,6 +152,16 @@ yelp_settings_class_init (YelpSettingsClass *klass)
G_PARAM_READWRITE | G_PARAM_STATIC_NAME |
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class,
+ PROP_FONT_ADJUSTMENT,
+ g_param_spec_int ("font-adjustment",
+ _("Font Adjustment"),
+ _("A size adjustment to add to font sizes"),
+ -G_MAXINT, G_MAXINT,
+ 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
settings_signals[COLORS_CHANGED] =
g_signal_new ("colors-changed",
G_OBJECT_CLASS_TYPE (klass),
@@ -187,6 +200,10 @@ yelp_settings_init (YelpSettings *settings)
for (i = 0; i < YELP_SETTINGS_NUM_ICONS; i++)
settings->priv->icons[i] = NULL;
+ for (i = 0; i < YELP_SETTINGS_NUM_FONTS; i++) {
+ settings->priv->setfonts[i] = NULL;
+ settings->priv->fonts[i] = NULL;
+ }
}
static void
@@ -222,6 +239,9 @@ yelp_settings_get_property (GObject *object,
case PROP_GTK_ICON_THEME:
g_value_set_object (value, settings->priv->gtk_icon_theme);
break;
+ case PROP_FONT_ADJUSTMENT:
+ g_value_set_int (value, settings->priv->font_adjustment);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -300,6 +320,10 @@ yelp_settings_set_property (GObject *object,
settings->priv->icon_theme_changed = 0;
}
break;
+ case PROP_FONT_ADJUSTMENT:
+ settings->priv->font_adjustment = g_value_get_int (value);
+ gtk_font_changed (settings->priv->gtk_settings, NULL, settings);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -443,7 +467,7 @@ yelp_settings_get_font_family (YelpSettings *settings,
c = strrchr (desc, ' ');
if (c == NULL) {
- g_warning ("Cannot parse font %s", desc);
+ g_warning ("Cannot parse font: %s", desc);
ret = g_strdup (def);
goto done;
}
@@ -486,7 +510,7 @@ yelp_settings_get_font_size (YelpSettings *settings,
done:
g_mutex_unlock (settings->priv->mutex);
- return ret;
+ return ret + settings->priv->font_adjustment;
}
void
@@ -515,6 +539,19 @@ yelp_settings_set_fonts (YelpSettings *settings,
g_signal_emit (settings, settings_signals[FONTS_CHANGED], 0);
}
+gint
+yelp_settings_get_font_adjustment (YelpSettings *settings)
+{
+ return settings->priv->font_adjustment;
+}
+
+void
+yelp_settings_set_font_adjustment (YelpSettings *settings,
+ gint adjustment)
+{
+ g_object_set (settings, "font-adjustment", adjustment, NULL);
+}
+
/******************************************************************************/
gint
@@ -766,13 +803,17 @@ gtk_font_changed (GtkSettings *gtk_settings,
{
gchar *font, *c;
+ /* This happens when font_adjustment is set during init */
+ if (gtk_settings == NULL)
+ return;
+
g_free (settings->priv->fonts[YELP_SETTINGS_FONT_VARIABLE]);
g_object_get (gtk_settings, "gtk-font-name", &font, NULL);
settings->priv->fonts[YELP_SETTINGS_FONT_VARIABLE] = font;
c = strrchr (font, ' ');
if (c == NULL) {
- g_warning ("Cannot parse font %s", font);
+ g_warning ("Cannot parse font: %s", font);
font = g_strdup ("Monospace 10");
}
else {
diff --git a/libyelp/yelp-settings.h b/libyelp/yelp-settings.h
index e894ab51..18cd816f 100644
--- a/libyelp/yelp-settings.h
+++ b/libyelp/yelp-settings.h
@@ -100,6 +100,9 @@ gint yelp_settings_get_font_size (YelpSettings *sett
void yelp_settings_set_fonts (YelpSettings *settings,
YelpSettingsFont first_font,
...);
+gint yelp_settings_get_font_adjustment (YelpSettings *settings);
+void yelp_settings_set_font_adjustment (YelpSettings *settings,
+ gint adjustment);
gint yelp_settings_get_icon_size (YelpSettings *settings);
void yelp_settings_set_icon_size (YelpSettings *settings,