[empathy] Set default font from Gnome system if not set in the style.
- From: Jonny Lamb <jonnylamb src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [empathy] Set default font from Gnome system if not set in the style.
- Date: Fri, 23 Oct 2009 12:16:25 +0000 (UTC)
commit 7c5ac57b9aafe95d159c2a96410a0afa76408678
Author: MatÄ?j Cepl <mcepl redhat com>
Date: Fri Oct 23 12:00:13 2009 +0200
Set default font from Gnome system if not set in the style.
If the font family and font size is not set in the style, we set style
based on the Gnome default settings.
Signed-off-by: MatÄ?j Cepl <mcepl redhat com>
Signed-off-by: Jonny Lamb <jonnylamb gnome org>
libempathy-gtk/empathy-theme-adium.c | 82 ++++++++++++++++++++++++++++++----
1 files changed, 73 insertions(+), 9 deletions(-)
---
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 49a76c2..35c216d 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -28,6 +28,9 @@
#include <telepathy-glib/dbus.h>
#include <telepathy-glib/util.h>
+#include <gconf/gconf-client.h>
+#include <pango/pango.h>
+#include <gdk/gdk.h>
#include <libempathy/empathy-time.h>
#include <libempathy/empathy-utils.h>
@@ -43,6 +46,10 @@
#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeAdium)
+/* GConf key containing current value of font */
+#define EMPATHY_GCONF_FONT_KEY_NAME "/desktop/gnome/interface/font_name"
+#define BORING_DPI_DEFAULT 96
+
/* "Join" consecutive messages with timestamps within five minutes */
#define MESSAGE_JOIN_PERIOD 5*60
@@ -970,6 +977,67 @@ theme_adium_inspect_web_view_cb (WebKitWebInspector *inspector,
return NULL;
}
+static PangoFontDescription *
+theme_adium_get_default_font (void)
+{
+ GConfClient *gconf_client;
+ PangoFontDescription *pango_fd;
+ gchar *gconf_font_family;
+
+ gconf_client = gconf_client_get_default ();
+ if (gconf_client == NULL) {
+ return NULL;
+ }
+ gconf_font_family = gconf_client_get_string (gconf_client,
+ EMPATHY_GCONF_FONT_KEY_NAME,
+ NULL);
+ if (gconf_font_family == NULL) {
+ g_object_unref (gconf_client);
+ return NULL;
+ }
+ pango_fd = pango_font_description_from_string (gconf_font_family);
+ g_free (gconf_font_family);
+ g_object_unref (gconf_client);
+ return pango_fd;
+}
+
+static void
+theme_adium_set_webkit_font (WebKitWebSettings *w_settings,
+ const gchar *name,
+ gint size)
+{
+ g_object_set (w_settings, "default-font-family", name, NULL);
+ g_object_set (w_settings, "default-font-size", size, NULL);
+}
+
+static void
+theme_adium_set_default_font (WebKitWebSettings *w_settings)
+{
+ PangoFontDescription *default_font_desc;
+ GdkScreen *current_screen;
+ gdouble dpi = 0;
+ gint pango_font_size = 0;
+
+ default_font_desc = theme_adium_get_default_font ();
+ if (default_font_desc == NULL)
+ return ;
+ pango_font_size = pango_font_description_get_size (default_font_desc)
+ / PANGO_SCALE ;
+ if (pango_font_description_get_size_is_absolute (default_font_desc)) {
+ current_screen = gdk_screen_get_default ();
+ if (current_screen != NULL) {
+ dpi = gdk_screen_get_resolution (current_screen);
+ } else {
+ dpi = BORING_DPI_DEFAULT;
+ }
+ pango_font_size = (gint) (pango_font_size / (dpi / 72));
+ }
+ theme_adium_set_webkit_font (w_settings,
+ pango_font_description_get_family (default_font_desc),
+ pango_font_size);
+ pango_font_description_free (default_font_desc);
+}
+
static void
theme_adium_constructed (GObject *object)
{
@@ -985,15 +1053,11 @@ theme_adium_constructed (GObject *object)
font_family = tp_asv_get_string (priv->data->info, "DefaultFontFamily");
font_size = tp_asv_get_int32 (priv->data->info, "DefaultFontSize", NULL);
webkit_settings = webkit_web_view_get_settings (webkit_view);
- if (font_family) {
- g_object_set (webkit_settings,
- "default-font-family", font_family,
- NULL);
- }
- if (font_size) {
- g_object_set (webkit_settings,
- "default-font-size", font_size,
- NULL);
+
+ if (font_family && font_size) {
+ theme_adium_set_webkit_font (webkit_settings, font_family, font_size);
+ } else {
+ theme_adium_set_default_font (webkit_settings);
}
/* Setup webkit inspector */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]