aboutsummaryrefslogtreecommitdiffstats
path: root/embed/mozilla/mozilla-notifiers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'embed/mozilla/mozilla-notifiers.cpp')
-rw-r--r--embed/mozilla/mozilla-notifiers.cpp54
1 files changed, 23 insertions, 31 deletions
diff --git a/embed/mozilla/mozilla-notifiers.cpp b/embed/mozilla/mozilla-notifiers.cpp
index 0166bd980..12484bc3e 100644
--- a/embed/mozilla/mozilla-notifiers.cpp
+++ b/embed/mozilla/mozilla-notifiers.cpp
@@ -50,6 +50,8 @@
/* define to migrate epiphany 1.0 font preferences */
#define MIGRATE_PIXEL_SIZE
+#define MAX_FONT_SIZE 128
+
/* Keeps the list of the notifiers we installed for mozilla prefs */
/* to be able to remove them when exiting */
static GList *notifiers = NULL;
@@ -497,7 +499,7 @@ mozilla_pref_set (const char *pref,
rv = gPrefBranch->GetIntPref (pref, &old_value);
if (NS_FAILED (rv) || old_value != new_value)
{
- rv = gPrefBranch->SetIntPref (pref, g_value_get_int (value));
+ rv = gPrefBranch->SetIntPref (pref, new_value);
}
break;
}
@@ -565,13 +567,11 @@ notify_cb (GConfClient *client,
}
}
-static guint
-mozilla_notifier_add_internal (const char *gconf_key,
- GConfClientNotifyFunc notify_func,
- const char *mozilla_pref,
- PrefValueTransformFunc func,
- gpointer user_data,
- GFreeFunc free_data_func)
+extern "C" guint
+mozilla_notifier_add (const char *gconf_key,
+ const char *mozilla_pref,
+ PrefValueTransformFunc func,
+ gpointer user_data)
{
GConfClient *client;
PrefData *data;
@@ -593,8 +593,8 @@ mozilla_notifier_add_internal (const char *gconf_key,
data->user_data = user_data;
cnxn_id = gconf_client_notify_add (client, gconf_key,
- notify_func,
- data, free_data_func,
+ (GConfClientNotifyFunc) notify_cb,
+ data, (GFreeFunc) free_pref_data,
&error);
if (eel_gconf_handle_error (&error))
{
@@ -614,20 +614,6 @@ mozilla_notifier_add_internal (const char *gconf_key,
return cnxn_id;
}
-extern "C" guint
-mozilla_notifier_add (const char *gconf_key,
- const char *mozilla_pref,
- PrefValueTransformFunc func,
- gpointer user_data)
-{
- return mozilla_notifier_add_internal (gconf_key,
- (GConfClientNotifyFunc) notify_cb,
- mozilla_pref,
- func,
- user_data,
- (GFreeFunc) free_pref_data);
-}
-
static int
find_data (const PrefData *a,
gconstpointer idptr)
@@ -715,15 +701,22 @@ parse_pango_font (const char *font,
PangoFontMask mask = (PangoFontMask) (PANGO_FONT_MASK_FAMILY | PANGO_FONT_MASK_SIZE);
PangoFontDescription *desc = pango_font_description_from_string (font);
- if (desc == NULL ||
- (pango_font_description_get_set_fields (desc) & mask) != mask)
+ if (desc == NULL) return FALSE;
+
+ if ((pango_font_description_get_set_fields (desc) & mask) != mask)
{
+ pango_font_description_free (desc);
return FALSE;
}
-
+
*size = PANGO_PIXELS (pango_font_description_get_size (desc));
*name = g_strdup (pango_font_description_get_family (desc));
+ pango_font_description_free (desc);
+
+ LOG ("Parsed pango font description '%s' -> name:%s, size:%d",
+ font, *name ? *name : "-", *size);
+
return *name != NULL && *size > 0;
}
@@ -734,7 +727,6 @@ typedef struct
char **font_size_prefs;
char *font_name;
int font_size;
- guint is_set : 1;
} DesktopFontData;
static gboolean
@@ -798,7 +790,7 @@ transform_font_size (GConfEntry *gcentry,
size = gconf_value_get_int (gcvalue);
}
- if (size <= 0) return FALSE;
+ if (size <= 0 || size > MAX_FONT_SIZE) return FALSE;
g_value_init (value, G_TYPE_INT);
g_value_set_int (value, size);
@@ -824,17 +816,17 @@ notify_desktop_font_cb (GConfClient *client,
LOG ("Desktop font %s -> name=%s, size=%d",
gconf_entry_get_key (gcentry), name, size);
+ g_free (data->font_name);
data->font_name = name;
data->font_size = size;
- data->is_set = TRUE;
}
else
{
g_free (name);
+
g_free (data->font_name);
data->font_name = NULL;
data->font_size = 0;
- data->is_set = FALSE;
}
for (i = 0; data->font_name_prefs[i] != NULL; ++i)