[devhelp/webkit2-for-3.4: 4/9] Port WebKitSettings to WebKit2



commit 17c2ba5c9a41fbbc9e1bf848a49623fe01a83896
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Fri Mar 2 11:33:57 2012 +0100

    Port WebKitSettings to WebKit2
    
    Convert font sizes from points to pixels for WebKit2, since
    WebKitSettings in WebKit2 expects font sizes in pixels. Also set
    zoom-text-only property to TRUE in WebKit2. That's the equivalent to
    webkit_web_view_set_full_content_zoom() in WebKit1.

 src/dh-util.c |   54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 49 insertions(+), 5 deletions(-)
---
diff --git a/src/dh-util.c b/src/dh-util.c
index 897ef9e..87de1bc 100644
--- a/src/dh-util.c
+++ b/src/dh-util.c
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <gtk/gtk.h>
+#include <math.h>
 #ifdef GDK_WINDOWING_QUARTZ
 #include <gtkosxapplication.h>
 #endif
@@ -666,19 +667,57 @@ view_destroy_cb (GtkWidget *view,
         views = g_list_remove (views, view);
 }
 
+static gdouble
+get_screen_dpi (GdkScreen *screen)
+{
+        gdouble dpi;
+        gdouble dp, di;
+
+        dpi = gdk_screen_get_resolution (screen);
+        if (dpi != -1)
+                return dpi;
+
+        dp = hypot (gdk_screen_get_width (screen), gdk_screen_get_height (screen));
+        di = hypot (gdk_screen_get_width_mm (screen), gdk_screen_get_height_mm (screen)) / 25.4;
+
+        return dp / di;
+}
+
+static guint
+dh_util_convert_font_size_to_pixels (GtkWidget *widget,
+                                     gdouble    font_size)
+{
+#ifdef HAVE_WEBKIT2
+        /* WebKit2 uses font sizes in pixels */
+        GdkScreen *screen;
+        gdouble    dpi;
+
+        screen = gtk_widget_has_screen (widget) ?
+                gtk_widget_get_screen (widget) : gdk_screen_get_default ();
+        dpi = screen ? get_screen_dpi (screen) : 96;
+
+        return font_size / 72.0 * dpi;
+#else
+        return font_size;
+#endif
+}
+
 static void
 view_setup_fonts (WebKitWebView *view)
 {
 #ifdef HAVE_WEBKIT2
-/* TODO: WebKit Settings */
+        WebKitSettings    *settings;
 #else
-        IgeConf           *conf;
         WebKitWebSettings *settings;
+#endif
+        IgeConf           *conf;
         gboolean           use_system_fonts;
 	gchar             *variable_name;
 	gdouble            variable_size;
+        guint              variable_size_px;
 	gchar             *fixed_name;
 	gdouble            fixed_size;
+        guint              fixed_size_px;
 
         conf = ige_conf_get ();
 
@@ -693,17 +732,22 @@ view_setup_fonts (WebKitWebView *view)
         dh_util_font_get_fixed (&fixed_name, &fixed_size,
                                    use_system_fonts);
 
+        variable_size_px = dh_util_convert_font_size_to_pixels (GTK_WIDGET (view), fixed_size);
+        fixed_size_px = dh_util_convert_font_size_to_pixels (GTK_WIDGET (view), variable_size);
+
         g_object_set (settings,
+#ifdef HAVE_WEBKIT2
+                      "zoom-text-only", TRUE,
+#endif
                       "monospace-font-family", fixed_name,
-                      "default-monospace-font-size", (guint) fixed_size,
+                      "default-monospace-font-size", fixed_size_px,
                       "sans-serif-font-family", variable_name,
                       "serif-font-family", variable_name,
-                      "default-font-size", (guint) variable_size,
+                      "default-font-size", variable_size_px,
                       NULL);
 
         g_free (variable_name);
         g_free (fixed_name);
-#endif /* HAVE_WEBKIT2 */
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]