diff options
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 77 |
1 files changed, 15 insertions, 62 deletions
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 874f5592f..e5227f506 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -65,7 +65,10 @@ typedef struct { * marker for when we lose focus. */ GQueue acked_messages; GtkWidget *inspector_window; + GSettings *gsettings_chat; + GSettings *gsettings_desktop; + gboolean has_focus; gboolean has_unread_message; gboolean allow_scrolling; @@ -1463,7 +1466,9 @@ theme_adium_finalize (GObject *object) EmpathyThemeAdiumPriv *priv = GET_PRIV (object); empathy_adium_data_unref (priv->data); + g_object_unref (priv->gsettings_chat); + g_object_unref (priv->gsettings_desktop); G_OBJECT_CLASS (empathy_theme_adium_parent_class)->finalize (object); } @@ -1560,64 +1565,6 @@ theme_adium_inspect_web_view_cb (WebKitWebInspector *inspector, return NULL; } -static PangoFontDescription * -theme_adium_get_default_font (void) -{ - GSettings *gsettings; - PangoFontDescription *pango_fd; - gchar *font_family; - - gsettings = g_settings_new (EMPATHY_PREFS_DESKTOP_INTERFACE_SCHEMA); - - font_family = g_settings_get_string (gsettings, - EMPATHY_PREFS_DESKTOP_INTERFACE_DOCUMENT_FONT_NAME); - - if (font_family == NULL) - return NULL; - - pango_fd = pango_font_description_from_string (font_family); - g_free (font_family); - g_object_unref (gsettings); - 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) { @@ -1625,18 +1572,21 @@ theme_adium_constructed (GObject *object) const gchar *font_family = NULL; gint font_size = 0; WebKitWebView *webkit_view = WEBKIT_WEB_VIEW (object); - WebKitWebSettings *webkit_settings; WebKitWebInspector *webkit_inspector; /* Set default settings */ 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 && font_size) { - theme_adium_set_webkit_font (webkit_settings, font_family, font_size); + g_object_set (webkit_web_view_get_settings (webkit_view), + "default-font-family", font_family, + "default-font-size", font_size, + NULL); } else { - theme_adium_set_default_font (webkit_settings); + empathy_webkit_bind_font_setting (webkit_view, + priv->gsettings_desktop, + EMPATHY_PREFS_DESKTOP_INTERFACE_DOCUMENT_FONT_NAME); } /* Setup webkit inspector */ @@ -1758,6 +1708,9 @@ empathy_theme_adium_init (EmpathyThemeAdium *theme) NULL); priv->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA); + priv->gsettings_desktop = g_settings_new ( + EMPATHY_PREFS_DESKTOP_INTERFACE_SCHEMA); + g_signal_connect (priv->gsettings_chat, "changed::" EMPATHY_PREFS_CHAT_WEBKIT_DEVELOPER_TOOLS, G_CALLBACK (theme_adium_notify_enable_webkit_developer_tools_cb), |