<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -28,8 +28,8 @@
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;&amp;quot;${workspace_loc:/chmsee/src}&amp;quot;&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/libglade-2.0&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/gtk-2.0&quot;/&gt;
-&lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/xulrunner-1.9.0.8/unstable&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/libxml2&quot;/&gt;
+&lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/webkit-1.0&quot;/&gt;
 &lt;/option&gt;
 &lt;inputType id=&quot;cdt.managedbuild.tool.gnu.c.compiler.input.1566535710&quot; superClass=&quot;cdt.managedbuild.tool.gnu.c.compiler.input&quot;/&gt;
 &lt;/tool&gt;
@@ -46,8 +46,8 @@
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;&amp;quot;${workspace_loc:/chmsee/src}&amp;quot;&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/libglade-2.0&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/gtk-2.0&quot;/&gt;
-&lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/xulrunner-1.9.0.8/unstable&quot;/&gt;
 &lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/libxml2&quot;/&gt;
+&lt;listOptionValue builtIn=&quot;false&quot; value=&quot;/usr/include/webkit-1.0&quot;/&gt;
 &lt;/option&gt;
 &lt;inputType id=&quot;cdt.managedbuild.tool.gnu.assembler.input.2060702548&quot; superClass=&quot;cdt.managedbuild.tool.gnu.assembler.input&quot;/&gt;
 &lt;/tool&gt;</diff>
      <filename>.cproject</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
 set(PACKAGE_VERSION &quot;1.0.7&quot; )
 find_package(PkgConfig)
 
-pkg_check_modules (CHMSEE REQUIRED gthread-2.0 glib-2.0 libxml-2.0 gtk+-2.0 libglade-2.0 nspr)
-pkg_search_module(XULRUNNER REQUIRED libxul-embedding-unstable&gt;=1.9 xulrunner-gtkmozembed&gt;=1.8)
+pkg_check_modules (CHMSEE REQUIRED gthread-2.0 glib-2.0 libxml-2.0 gtk+-2.0
+libglade-2.0 webkit-1.0)
 set(CHMSEE_INCLUDE_DIRS ${CHMSEE_INCLUDE_DIRS} ${XULRUNNER_INCLUDE_DIRS})
 set(CHMSEE_CFLAGS_OTHER ${CHMSEE_CFLAGS_OTHER} ${XULRUNNER_CFLAGS_OTHER} -Wall)
 set(CHMSEE_LIBRARY_DIRS ${CHMSEE_LIBRARY_DIRS} ${XULRUNNER_LIBRARY_DIRS})</diff>
      <filename>CMakeLists.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,11 @@
+ChmSee 1.1.0 XXXX-XX-XX
+-----------------------
+
+Features
+~~~~~~~~
+
+* issue 50: switch from xulrunner to webkit. (thanks patches from cjacker)
+
 ChmSee 1.0.7 2009-09-14
 -----------------------
 </diff>
      <filename>NEWS</filename>
    </modified>
    <modified>
      <diff>@@ -23,9 +23,9 @@ link_directories(
   )
 
 set(CHMSEE_SRCS
-  booktree.c chmsee.c gecko_utils.cpp html.c
+  booktree.c chmsee.c html.c
   setup.c startup.c ui_bookmarks.c booktree.h chmsee.h
-  gecko_utils.h html.h setup.h startup.h ui_bookmarks.h
+  html.h setup.h startup.h ui_bookmarks.h
   marshal.h marshal.c
   ihtml.h ihtml.c
   html-factory.h html-factory.c</diff>
      <filename>src/CMakeLists.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1172,6 +1172,7 @@ const gchar* chmsee_get_variable_font(ChmSee* self) {
 
 void chmsee_set_variable_font(ChmSee* self, const gchar* font_name) {
 	g_return_if_fail(selfp-&gt;book);
+    chmsee_ihtml_set_variable_font(get_active_html(self),font_name);
     chmsee_ichmfile_set_variable_font(selfp-&gt;book, font_name);
 }
 
@@ -1182,6 +1183,7 @@ const gchar* chmsee_get_fixed_font(ChmSee* self) {
 
 void chmsee_set_fixed_font(ChmSee* self, const gchar* font_name) {
 	g_return_if_fail(selfp-&gt;book);
+    chmsee_ihtml_set_fixed_font(get_active_html(self),font_name);
     chmsee_ichmfile_set_fixed_font(selfp-&gt;book, font_name);
 }
 </diff>
      <filename>src/chmsee.c</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 /*
  *  Copyright (c) 2006           Ji YongGang &lt;jungle@soforge-studio.com&gt;
+ *  Copyright (c) 2009           Cjacker &lt;jzhuang@redflag-linux.com&gt;
  *
  *  ChmSee is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -24,19 +25,15 @@
 #include &quot;ihtml.h&quot;
 #include &quot;marshal.h&quot;
 #include &quot;utils/utils.h&quot;
-#include &quot;gecko_utils.h&quot;
 
 static void html_class_init(HtmlClass *);
 static void html_init(Html *);
 
-static void html_title_cb(GtkMozEmbed *, Html *);
-static void html_location_cb(GtkMozEmbed *, Html *);
-static gboolean html_open_uri_cb(GtkMozEmbed *, const gchar *, Html *);
-static gboolean html_mouse_click_cb(GtkMozEmbed *, gpointer, Html *);
-static gboolean html_link_message_cb(GtkMozEmbed *, Html *);
-static void html_child_add_cb(GtkMozEmbed *, GtkWidget *, Html *);
-static void html_child_remove_cb(GtkMozEmbed *, GtkWidget *, Html *);
-static void html_child_grab_focus_cb(GtkWidget *, Html *);
+static gboolean webkit_web_view_mouse_click_cb(WebKitWebView *, gpointer, Html *);
+
+static void webkit_web_view_hovering_over_link_cb (WebKitWebView*, const gchar*, const gchar*, Html*);
+static void webkit_web_view_load_committed_cb (WebKitWebView*, WebKitWebFrame*, Html*);
+static void webkit_web_view_title_changed_cb (WebKitWebView*, WebKitWebFrame*, const gchar*, Html*);
 
 /* Signals */
 enum {
@@ -140,89 +137,75 @@ html_class_init(HtmlClass *klass)
 static void
 html_init(Html *html)
 {
-        html-&gt;gecko = GTK_MOZ_EMBED(gtk_moz_embed_new());
-        gtk_drag_dest_unset(GTK_WIDGET(html-&gt;gecko));
-
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;title&quot;,
-                         G_CALLBACK (html_title_cb),
-                         html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;location&quot;,
-                         G_CALLBACK (html_location_cb),
-                         html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;open-uri&quot;,
-                         G_CALLBACK (html_open_uri_cb),
-                         html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;dom_mouse_click&quot;,
-                         G_CALLBACK (html_mouse_click_cb),
+        html-&gt;webview = WEBKIT_WEB_VIEW(webkit_web_view_new());
+        html-&gt;scrolled = gtk_scrolled_window_new(0,0);
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (html-&gt;scrolled),
+                                    GTK_POLICY_AUTOMATIC,
+                                    GTK_POLICY_AUTOMATIC);
+        GTK_WIDGET_SET_FLAGS (html-&gt;scrolled, GTK_CAN_FOCUS);
+        gtk_container_add(GTK_CONTAINER (html-&gt;scrolled), GTK_WIDGET(html-&gt;webview));
+
+        g_signal_connect(G_OBJECT (html-&gt;webview),
+                         &quot;title-changed&quot;,
+                         G_CALLBACK (webkit_web_view_title_changed_cb),
                          html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;link_message&quot;,
-                         G_CALLBACK (html_link_message_cb),
+        g_signal_connect(G_OBJECT (html-&gt;webview),
+                         &quot;button-press-event&quot;,
+                         G_CALLBACK (webkit_web_view_mouse_click_cb),
                          html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;add&quot;,
-                         G_CALLBACK (html_child_add_cb),
+        g_signal_connect(G_OBJECT (html-&gt;webview),
+                         &quot;hovering-over-link&quot;,
+                         G_CALLBACK (webkit_web_view_hovering_over_link_cb),
                          html);
-        g_signal_connect(G_OBJECT (html-&gt;gecko),
-                         &quot;remove&quot;,
-                         G_CALLBACK (html_child_remove_cb),
+        g_signal_connect(G_OBJECT (html-&gt;webview),
+                         &quot;load-committed&quot;,
+                         G_CALLBACK (webkit_web_view_load_committed_cb),
                          html);
+        gtk_drag_dest_unset(GTK_WIDGET(html-&gt;webview));
 }
 
 /* callbacks */
 
-static void
-html_title_cb(GtkMozEmbed *embed, Html *html)
+static void 
+webkit_web_view_title_changed_cb (WebKitWebView*  web_view,
+                                  WebKitWebFrame* web_frame,
+                                  const gchar*    title,
+                                  Html*     html)
 {
-        char *new_title;
-
-        new_title = gtk_moz_embed_get_title(embed);
-        g_signal_emit(html, signals[TITLE_CHANGED], 0, new_title);
-        g_free(new_title);
+	const gchar *uri;
+	uri = webkit_web_frame_get_uri(web_frame);
+	g_signal_emit(html, signals[TITLE_CHANGED], 0, g_strdup(title));
+	g_signal_emit(html, signals[LOCATION_CHANGED], 0,g_strdup(uri) );
 }
 
 static void
-html_location_cb(GtkMozEmbed *embed, Html *html)
-{
-        char *location;
-
-        location = gtk_moz_embed_get_location(embed);
-        g_signal_emit(html, signals[LOCATION_CHANGED], 0, location);
-        g_free(location);
-}
-
-static gboolean
-html_open_uri_cb(GtkMozEmbed *embed, const gchar *uri, Html *html)
+webkit_web_view_load_committed_cb (WebKitWebView*  web_view,
+                                 WebKitWebFrame* web_frame,
+                                 Html*     html)
 {
-        gboolean ret_val;
-
-        ret_val = TRUE;
-
-        g_signal_emit(html, signals[OPEN_URI], 0, uri, &amp;ret_val);
-
-        /* Reset current url */
+		g_object_freeze_notify (G_OBJECT (html));
+		const gchar *uri =  webkit_web_frame_get_uri(web_frame);
+		g_return_if_fail (uri != NULL);
+        g_signal_emit(html, signals[OPEN_URI], 0, g_strdup(uri));
         if (current_url != NULL) {
                 g_free(current_url);
                 current_url = NULL;
-
                 g_signal_emit(html, signals[LINK_MESSAGE], 0, &quot;&quot;);
         }
+		g_object_thaw_notify (G_OBJECT (html));
 
-        return ret_val;
 }
 
+#define KEYS_MODIFIER_MASK (GDK_SHIFT_MASK | GDK_CONTROL_MASK \
+    | GDK_MOD1_MASK | GDK_META_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK )
+
 static gboolean
-html_mouse_click_cb(GtkMozEmbed *widget, gpointer dom_event, Html *html)
+webkit_web_view_mouse_click_cb(WebKitWebView *widget, gpointer dom_event, Html *html)
 {
-        gint button;
-        gint mask;
+		GdkEventButton* event = dom_event;
 
-        button = gecko_utils_get_mouse_event_button(dom_event);
-        mask = gecko_utils_get_mouse_event_modifiers(dom_event);
+        gint button=event-&gt;button;
+        gint mask = event-&gt;state &amp; KEYS_MODIFIER_MASK;
 
         if (button == 2 || (button == 1 &amp;&amp; mask &amp; GDK_CONTROL_MASK)) {
                 if (current_url) {
@@ -238,53 +221,32 @@ html_mouse_click_cb(GtkMozEmbed *widget, gpointer dom_event, Html *html)
 
                 return TRUE;
         }
-
+		
         return FALSE;
 }
 
-static gboolean
-html_link_message_cb(GtkMozEmbed *widget, Html *html)
-{
-        g_free(current_url);
-
-        current_url = gtk_moz_embed_get_link_message(widget);
-        g_signal_emit(html, signals[LINK_MESSAGE], 0, current_url);
-
-        if (current_url[0] == '\0') {
-                g_free(current_url);
-                current_url = NULL;
-        }
-
-        return FALSE;
-}
 
 static void
-html_child_add_cb(GtkMozEmbed *embed, GtkWidget *child, Html *html)
+webkit_web_view_hovering_over_link_cb (WebKitWebView* web_view,
+                                       const gchar*   tooltip,
+                                       const gchar*   link_uri,
+                                       Html* html)
 {
-        g_signal_connect(G_OBJECT (child),
-                         &quot;grab-focus&quot;,
-                         G_CALLBACK (html_child_grab_focus_cb),
-                         html);
-}
+	g_free(current_url);
+	current_url = g_strdup(link_uri);
+
+	if(current_url==NULL)
+		return;
+	
+	g_signal_emit(html, signals[LINK_MESSAGE], 0, current_url);
+	if (current_url[0] == '\0') {
+		g_free(current_url);
+		current_url = NULL;
+	}
+	return ;
 
-static void
-html_child_remove_cb(GtkMozEmbed *embed, GtkWidget *child, Html *html)
-{
-        g_signal_handlers_disconnect_by_func(child, html_child_grab_focus_cb, html);
 }
 
-static void
-html_child_grab_focus_cb(GtkWidget *widget, Html *html)
-{
-        GdkEvent *event;
-
-        event = gtk_get_current_event();
-
-        if (event == NULL)
-                g_signal_stop_emission_by_name(widget, &quot;grab-focus&quot;);
-        else
-                gdk_event_free(event);
-}
 
 /* external functions */
 
@@ -304,8 +266,7 @@ html_clear(Html *html)
         static const char *data = &quot;&lt;html&gt;&lt;body bgcolor=\&quot;white\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
 
         g_return_if_fail(IS_HTML (html));
-
-        gtk_moz_embed_render_data(html-&gt;gecko, data, strlen(data), &quot;file:///&quot;, &quot;text/html&quot;);
+		webkit_web_view_load_html_string(html-&gt;webview,data,&quot;file:///&quot;);
 }
 
 void
@@ -323,7 +284,7 @@ html_open_uri(Html *self, const gchar *str_uri)
 
 	if(g_strcmp0(full_uri, html_get_location(self)) != 0) {
 		g_debug(&quot;Open uri %s&quot;, full_uri);
-		gtk_moz_embed_load_url(self-&gt;gecko, full_uri);
+		webkit_web_view_open (self-&gt;webview, full_uri);
 	}
 	g_free(full_uri);
 }
@@ -333,71 +294,89 @@ html_get_widget(Html *html)
 {
         g_return_val_if_fail(IS_HTML (html), NULL);
 
-        return GTK_WIDGET (html-&gt;gecko);
+        return GTK_WIDGET (html-&gt;scrolled);
 }
 
 gboolean
 html_can_go_forward(Html *html)
 {
         g_return_val_if_fail(IS_HTML (html), FALSE);
-
-        return gtk_moz_embed_can_go_forward(html-&gt;gecko);
+        return webkit_web_view_can_go_forward(html-&gt;webview);
 }
 
 gboolean
 html_can_go_back(Html *html)
 {
         g_return_val_if_fail(IS_HTML (html), FALSE);
-
-        return gtk_moz_embed_can_go_back(html-&gt;gecko);
+        return webkit_web_view_can_go_back(html-&gt;webview);
 }
 
 void
 html_go_forward(Html *html)
 {
         g_return_if_fail(IS_HTML (html));
-
-        gtk_moz_embed_go_forward(html-&gt;gecko);
+        webkit_web_view_go_forward(html-&gt;webview);
 }
 
 void
 html_go_back(Html *html)
 {
         g_return_if_fail(IS_HTML (html));
-
-        gtk_moz_embed_go_back(html-&gt;gecko);
+        webkit_web_view_go_back(html-&gt;webview);
 }
 
 gchar *
 html_get_title(Html *html)
 {
         g_return_val_if_fail(IS_HTML (html), NULL);
+        WebKitWebFrame *web_frame;
+        web_frame = webkit_web_view_get_main_frame (html-&gt;webview);
+        gchar *web_view_title=NULL;
+		if(web_frame)
+        	web_view_title = g_strdup(webkit_web_frame_get_title (web_frame));
 
-        return gtk_moz_embed_get_title(html-&gt;gecko);
+        return web_view_title; 
 }
 
 gchar *
 html_get_location(Html *html)
 {
         g_return_val_if_fail(IS_HTML (html), NULL);
-
-        return gtk_moz_embed_get_location(html-&gt;gecko);
+ 		WebKitWebFrame *web_frame;
+        web_frame = webkit_web_view_get_main_frame (html-&gt;webview);
+		gchar *uri = g_strdup(webkit_web_frame_get_uri(web_frame));
+		return uri;
 }
 
 void
 html_copy_selection(Html *html)
 {
-        g_return_if_fail(IS_HTML (html));
-
-        gecko_utils_copy_selection(html-&gt;gecko);
+	g_return_if_fail(IS_HTML (html));
+	GtkWidget *widget = GTK_WIDGET(html-&gt;webview);
+	if (G_LIKELY (widget) &amp;&amp; g_signal_lookup (&quot;copy-clipboard&quot;, G_OBJECT_TYPE (widget)))
+		g_signal_emit_by_name (widget, &quot;copy-clipboard&quot;);
 }
 
 void
 html_select_all(Html *html)
 {
-        g_return_if_fail(IS_HTML (html));
+	g_return_if_fail(IS_HTML (html));
+	GtkWidget *widget = GTK_WIDGET(html-&gt;webview);
+	if (GTK_IS_EDITABLE (widget))
+		gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
+	else if (g_signal_lookup (&quot;select-all&quot;, G_OBJECT_TYPE (widget)))
+	{
+		if (GTK_IS_TEXT_VIEW (widget))
+			g_signal_emit_by_name (widget, &quot;select-all&quot;, TRUE);
+		else if (GTK_IS_TREE_VIEW (widget))
+		{
+			gboolean dummy;
+			g_signal_emit_by_name (widget, &quot;select-all&quot;, &amp;dummy);
+		}
+		else
+			g_signal_emit_by_name (widget, &quot;select-all&quot;);
+	}
 
-        gecko_utils_select_all(html-&gt;gecko);
 }
 
 void
@@ -407,18 +386,16 @@ html_increase_size(Html *html)
 
         g_return_if_fail(IS_HTML (html));
 
-        zoom = gecko_utils_get_zoom(html-&gt;gecko);
+        zoom = webkit_web_view_get_zoom_level(html-&gt;webview);
         zoom *= 1.2;
-
-        gecko_utils_set_zoom(html-&gt;gecko, zoom);
+		webkit_web_view_set_zoom_level(html-&gt;webview,zoom);	
 }
 
 void
 html_reset_size(Html *html)
 {
         g_return_if_fail(IS_HTML (html));
-
-        gecko_utils_set_zoom(html-&gt;gecko, 1.0);
+		webkit_web_view_set_zoom_level(html-&gt;webview,1.0);
 }
 
 void
@@ -428,50 +405,107 @@ html_decrease_size(Html *html)
 
         g_return_if_fail(IS_HTML (html));
 
-        zoom = gecko_utils_get_zoom(html-&gt;gecko);
+        zoom = webkit_web_view_get_zoom_level(html-&gt;webview);
         zoom /= 1.2;
-
-        gecko_utils_set_zoom(html-&gt;gecko, zoom);
+		webkit_web_view_set_zoom_level(html-&gt;webview,zoom);	
 }
 
 void html_shutdown(Html* html) {
-  gecko_utils_shutdown();
+  //Need it?
 }
 
 void html_init_system(void) {
-  gecko_utils_init();
+  //Need it?
 }
 
-void html_set_default_lang(gint lang) {
-  gecko_utils_set_default_lang(lang);
+static const gchar *encoding_list[] = {
+        &quot;UTF-8&quot;,
+        &quot;GBK&quot;,
+        &quot;Big5&quot;,
+        &quot;EUC-JP&quot;,
+        &quot;EUC-KR&quot;,
+        &quot;KOI8-R&quot;,
+        &quot;ISO-8859-5&quot;
+};
+
+void html_set_default_lang(gint lang_index) {
+    /*WebKitWebSettings *settings;
+    settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (html-&gt;webview));
+    g_object_set (settings,
+            &quot;default-encoding&quot;, encoding_list[lang_index],
+            NULL);*/
+}
+
+
+static gboolean
+split_font_string(const gchar *font_name, gchar **name, gint *size)
+{
+    PangoFontDescription *desc;
+    PangoFontMask         mask;
+    gboolean              retval = FALSE;
+
+    if (font_name == NULL) {
+        return FALSE;
+    }
+
+    mask = (PangoFontMask) (PANGO_FONT_MASK_FAMILY | PANGO_FONT_MASK_SIZE);
+
+    desc = pango_font_description_from_string(font_name);    if (!desc) {
+        return FALSE;
+    }
+
+    if ((pango_font_description_get_set_fields(desc) &amp; mask) == mask) {
+        *size = PANGO_PIXELS(pango_font_description_get_size (desc));
+        *name = g_strdup(pango_font_description_get_family (desc));
+        retval = TRUE;
+    }
+
+    pango_font_description_free(desc);
+
+    return retval;
 }
 
 void html_set_variable_font(Html* html, const gchar* font) {
-  gecko_utils_set_font(GECKO_PREF_FONT_VARIABLE, font);
+    gint size;
+    gchar *name;
+    split_font_string(font,&amp;name,&amp;size);
+    WebKitWebSettings *settings;
+    settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (html-&gt;webview));
+    g_object_set (settings,
+            &quot;default-font-family&quot;, name,
+            &quot;default-font-size&quot;, (guint) size,
+            NULL);
 }
 
 void html_set_fixed_font(Html* html, const gchar* font) {
-  gecko_utils_set_font(GECKO_PREF_FONT_FIXED, font);
+    gint size;
+    gchar *name;
+    split_font_string(font,&amp;name,&amp;size);
+    WebKitWebSettings *settings;
+    settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (html-&gt;webview));
+    g_object_set (settings,
+            &quot;monospace-font-family&quot;, name,
+            &quot;default-monospace-font-size&quot;, (guint) size,
+            NULL);
 }
 
 
 void chmsee_ihtml_interface_init (ChmseeIhtmlInterface *iface) {
-  iface-&gt;get_title = html_get_title;
-  iface-&gt;get_location = html_get_location;
   iface-&gt;can_go_back = html_can_go_back;
   iface-&gt;can_go_forward = html_can_go_forward;
-
   iface-&gt;open_uri = html_open_uri;
-  iface-&gt;copy_selection = html_copy_selection;
-  iface-&gt;select_all = html_select_all;
   iface-&gt;go_back = html_go_back;
   iface-&gt;go_forward = html_go_forward;
+  iface-&gt;get_widget = html_get_widget;
+  iface-&gt;get_title = html_get_title;
+  iface-&gt;get_location = html_get_location;
   iface-&gt;increase_size = html_increase_size;
   iface-&gt;decrease_size = html_decrease_size;
   iface-&gt;reset_size = html_reset_size;
+  iface-&gt;copy_selection = html_copy_selection;
+  iface-&gt;select_all = html_select_all;
   iface-&gt;set_variable_font = html_set_variable_font;
   iface-&gt;set_fixed_font = html_set_fixed_font;
   iface-&gt;clear = html_clear;
   iface-&gt;shutdown = html_shutdown;
-  iface-&gt;get_widget = html_get_widget;
 }</diff>
      <filename>src/html.c</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@
 
 #include &lt;glib-object.h&gt;
 #include &lt;gtk/gtk.h&gt;
-#include &lt;gtkmozembed.h&gt;
+#include &lt;webkit/webkit.h&gt;
 
 #define TYPE_HTML \
         (html_get_type())
@@ -40,7 +40,8 @@ typedef struct _HtmlClass   HtmlClass;
 
 struct _Html {
         GObject parent;
-        GtkMozEmbed *gecko;
+        WebKitWebView *webview;
+		GtkWidget *scrolled;
 };
 
 struct _HtmlClass {</diff>
      <filename>src/html.h</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,7 @@
 #include &lt;glade/glade.h&gt;
 
 #include &quot;utils/utils.h&quot;
-#include &quot;gecko_utils.h&quot;
+//#include &quot;gecko_utils.h&quot;
 
 static void on_cache_clear(GtkWidget *, ChmSee *);
 static void on_window_close(GtkButton *, ChmSee *);
@@ -60,7 +60,7 @@ variable_font_set_cb(GtkFontButton *button, ChmSee *chmsee)
 
 	g_debug(&quot;variable font set: %s&quot;, font_name);
 
-	gecko_utils_set_font(GECKO_PREF_FONT_VARIABLE, font_name);
+	//gecko_utils_set_font(GECKO_PREF_FONT_VARIABLE, font_name);
 
 	chmsee_set_variable_font(chmsee, font_name);
 }
@@ -74,7 +74,7 @@ fixed_font_set_cb(GtkFontButton *button, ChmSee *chmsee)
 
 	g_debug(&quot;fixed font set: %s&quot;, font_name);
 
-	gecko_utils_set_font(GECKO_PREF_FONT_FIXED, font_name);
+	//gecko_utils_set_font(GECKO_PREF_FONT_FIXED, font_name);
 
 	chmsee_set_fixed_font(chmsee, font_name);
 }
@@ -90,7 +90,7 @@ cmb_lang_changed_cb(GtkWidget *widget, ChmSee *chmsee)
 
 	if (index &gt;= 0) {
 		g_debug(&quot;select lang: %d&quot;, index);
-		gecko_utils_set_default_lang(index);
+		//gecko_utils_set_default_lang(index);
 		chmsee_set_lang(chmsee, index);
 	}
 }</diff>
      <filename>src/setup.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8881c39a7bd0434523df3fe77b033865a038d99c</id>
    </parent>
  </parents>
  <author>
    <name>cjacker</name>
    <email>cjacker@gmail.com</email>
  </author>
  <url>http://github.com/lidaobing/chmsee/commit/efd89b6f217e1cdeb81f138bae3d725030662812</url>
  <id>efd89b6f217e1cdeb81f138bae3d725030662812</id>
  <committed-date>2009-09-19T20:19:56-07:00</committed-date>
  <authored-date>2009-09-19T20:19:56-07:00</authored-date>
  <message>switch from xulrunner to webkit</message>
  <tree>5d2a98cfa497ca2f19f62a88280f2f43496935ae</tree>
  <committer>
    <name>LI Daobing</name>
    <email>lidaobing@gmail.com</email>
  </committer>
</commit>
