[geany/geany-plugins] 1fd266: webhelper: Initial port to webkit2gtk

Chow Loong Jin git-noreply at xxxxx
Wed Jan 10 18:02:27 UTC 2018


Branch:      refs/heads/master
Author:      Chow Loong Jin <hyperair at debian.org>
Committer:   Chow Loong Jin <hyperair at debian.org>
Date:        Wed, 10 Jan 2018 18:02:27 UTC
Commit:      1fd266a97b9fedb0ae463a2cf9a409af27bb0ae6
             https://github.com/geany/geany-plugins/commit/1fd266a97b9fedb0ae463a2cf9a409af27bb0ae6

Log Message:
-----------
webhelper: Initial port to webkit2gtk


Modified Paths:
--------------
    build/webhelper.m4
    webhelper/src/gwh-browser.c
    webhelper/src/gwh-browser.h

Modified: build/webhelper.m4
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -19,7 +19,7 @@ AC_DEFUN([GP_CHECK_WEBHELPER],
         fi
     fi
 
-    GP_CHECK_GTK3([webkit_package=webkitgtk-3.0],
+    GP_CHECK_GTK3([webkit_package=webkit2gtk-4.0],
                   [webkit_package=webkit-1.0])
     GP_CHECK_PLUGIN_DEPS([WebHelper], [WEBHELPER],
                          [$GP_GTK_PACKAGE >= ${GTK_VERSION}


Modified: webhelper/src/gwh-browser.c
123 lines changed, 66 insertions(+), 57 deletions(-)
===================================================================
@@ -27,7 +27,7 @@
 #include <glib.h>
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
-#include <webkit/webkit.h>
+#include <webkit2/webkit2.h>
 
 #include "gwh-utils.h"
 #include "gwh-settings.h"
@@ -136,21 +136,25 @@ static void       inspector_set_detached      (GwhBrowser *self,
 
 static void
 set_location_icon (GwhBrowser  *self,
-                   const gchar *icon_uri)
+                   const cairo_surface_t *icon_surface)
 {
   gboolean success = FALSE;
-  
-  if (icon_uri) {
+
+  if (icon_surface) {
     GdkPixbuf *icon;
-    
-    icon = gwh_pixbuf_new_from_uri (icon_uri, NULL);
-    if (icon) {
-      gtk_entry_set_icon_from_pixbuf (GTK_ENTRY (self->priv->url_entry),
-                                      GTK_ENTRY_ICON_PRIMARY, icon);
-      g_object_unref (icon);
-      success = TRUE;
-    }
+
+    icon = gdk_pixbuf_get_from_surface (
+      icon_surface, 0, 0,
+      cairo_image_surface_get_width (icon_surface),
+      cairo_image_surface_get_height (icon_surface)
+    );
+
+    gtk_entry_set_icon_from_pixbuf (GTK_ENTRY (self->priv->url_entry),
+                                    GTK_ENTRY_ICON_PRIMARY, icon);
+    g_object_unref (icon);
+    success = TRUE;
   }
+  
   if (! success) {
     if (G_UNLIKELY (self->priv->default_icon == NULL)) {
       gchar *ctype;
@@ -519,20 +523,9 @@ update_load_status (GwhBrowser *self)
 {
   gboolean        loading = FALSE;
   WebKitWebView  *web_view = WEBKIT_WEB_VIEW (self->priv->web_view);
-  
-  switch (webkit_web_view_get_load_status (web_view)) {
-    case WEBKIT_LOAD_PROVISIONAL:
-    case WEBKIT_LOAD_COMMITTED:
-    case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
-      loading = TRUE;
-      break;
-    
-    case WEBKIT_LOAD_FINISHED:
-    case WEBKIT_LOAD_FAILED:
-      loading = FALSE;
-      break;
-  }
-  
+
+  loading = webkit_web_view_is_loading (web_view);
+
   gtk_widget_set_sensitive (GTK_WIDGET (self->priv->item_reload), ! loading);
   gtk_widget_set_visible   (GTK_WIDGET (self->priv->item_reload), ! loading);
   gtk_widget_set_sensitive (GTK_WIDGET (self->priv->item_cancel), loading);
@@ -542,23 +535,23 @@ update_load_status (GwhBrowser *self)
 }
 
 static void
-on_web_view_load_status_notify (GObject    *object,
-                                GParamSpec *pspec,
-                                GwhBrowser *self)
+on_web_view_load_changed (WebKitWebView   *object,
+                          WebKitLoadEvent  load_event,
+                          GwhBrowser      *self)
 {
   update_load_status (self);
 }
 
 static gboolean
-on_web_view_load_error (WebKitWebView  *web_view,
-                        WebKitWebFrame *web_frame,
-                        gchar          *uri,
-                        gpointer        web_error,
-                        GwhBrowser     *self)
+on_web_view_load_failed (WebKitWebView   *web_view,
+                         WebKitLoadEvent  load_event,
+                         gchar           *failing_uri,
+                         GError          *error,
+                         GwhBrowser      *self)
 {
   update_load_status (self);
   
-  return FALSE; /* we didn't really handled the error, so return %FALSE */
+  return FALSE; /* we didn't really handle the error, so return %FALSE */
 }
 
 static void
@@ -575,14 +568,14 @@ on_web_view_uri_notify (GObject    *object,
 }
 
 static void
-on_web_view_icon_uri_notify (GObject    *object,
-                             GParamSpec *pspec,
-                             GwhBrowser *self)
+on_web_view_favicon_notify (GObject    *object,
+                            GParamSpec *pspec,
+                            GwhBrowser *self)
 {
-  const gchar *icon_uri;
+  const cairo_surface_t *icon_surface;
   
-  icon_uri = webkit_web_view_get_icon_uri (WEBKIT_WEB_VIEW (self->priv->web_view));
-  set_location_icon (self, icon_uri);
+  icon_surface = webkit_web_view_get_favicon (WEBKIT_WEB_VIEW (self->priv->web_view));
+  set_location_icon (self, icon_surface);
 }
 
 static void
@@ -592,7 +585,7 @@ on_web_view_progress_notify (GObject    *object,
 {
   gdouble value;
   
-  value = webkit_web_view_get_progress (WEBKIT_WEB_VIEW (self->priv->web_view));
+  value = webkit_web_view_get_estimated_load_progress (WEBKIT_WEB_VIEW (self->priv->web_view));
   if (value >= 1.0) {
     value = 0.0;
   }
@@ -621,8 +614,24 @@ static void
 on_item_full_content_zoom_activate (GtkCheckMenuItem *item,
                                     GwhBrowser       *self)
 {
-  webkit_web_view_set_full_content_zoom (WEBKIT_WEB_VIEW (self->priv->web_view),
-                                         gtk_check_menu_item_get_active (item));
+  WebKitSettings *settings;
+  settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (self->priv->web_view));
+
+  webkit_settings_set_zoom_text_only (settings, !gtk_check_menu_item_get_active (item));
+}
+
+static void web_view_zoom_in (WebKitWebView *view)
+{
+  gdouble target_zoom_level = webkit_web_view_get_zoom_level (view) + 0.05;
+  webkit_web_view_set_zoom_level (view, target_zoom_level);
+}
+
+static void web_view_zoom_out (WebKitWebView *view)
+{
+  gdouble target_zoom_level = webkit_web_view_get_zoom_level (view) - 0.05;
+  target_zoom_level = MIN(target_zoom_level, 0.05);
+
+  webkit_web_view_set_zoom_level (view, target_zoom_level);
 }
 
 static void
@@ -649,12 +658,12 @@ on_web_view_populate_popup (WebKitWebView *view,
   /* zoom in */
   item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_IN, NULL);
   g_signal_connect_swapped (item, "activate",
-                            G_CALLBACK (webkit_web_view_zoom_in), view);
+                            G_CALLBACK (web_view_zoom_in), view);
   gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
   /* zoom out */
   item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_OUT, NULL);
   g_signal_connect_swapped (item, "activate",
-                            G_CALLBACK (webkit_web_view_zoom_out), view);
+                            G_CALLBACK (web_view_zoom_out), view);
   gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
   /* zoom 1:1 */
   ADD_SEPARATOR (submenu);
@@ -666,7 +675,7 @@ on_web_view_populate_popup (WebKitWebView *view,
   ADD_SEPARATOR (submenu);
   item = gtk_check_menu_item_new_with_mnemonic (_("Full-_content zoom"));
   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
-                                  webkit_web_view_get_full_content_zoom (view));
+                                  !webkit_settings_get_zoom_text_only (webkit_web_view_get_settings(view)));
   g_signal_connect (item, "activate",
                     G_CALLBACK (on_item_full_content_zoom_activate), self);
   gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
@@ -701,11 +710,11 @@ on_web_view_scroll_event (GtkWidget      *widget,
     handled = TRUE;
     switch (event->direction) {
       case GDK_SCROLL_DOWN:
-        webkit_web_view_zoom_out (WEBKIT_WEB_VIEW (self->priv->web_view));
+        web_view_zoom_out (WEBKIT_WEB_VIEW (self->priv->web_view));
         break;
       
       case GDK_SCROLL_UP:
-        webkit_web_view_zoom_in (WEBKIT_WEB_VIEW (self->priv->web_view));
+        web_view_zoom_in (WEBKIT_WEB_VIEW (self->priv->web_view));
         break;
       
       default:
@@ -1114,7 +1123,7 @@ static void
 gwh_browser_init (GwhBrowser *self)
 {
   GtkWidget          *scrolled;
-  WebKitWebSettings  *wkws;
+  WebKitSettings     *wkws;
   gboolean            inspector_detached;
   
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GWH_TYPE_BROWSER,
@@ -1183,12 +1192,12 @@ gwh_browser_init (GwhBrowser *self)
                     G_CALLBACK (on_web_view_progress_notify), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "notify::uri",
                     G_CALLBACK (on_web_view_uri_notify), self);
-  g_signal_connect (G_OBJECT (self->priv->web_view), "notify::load-status",
-                    G_CALLBACK (on_web_view_load_status_notify), self);
-  g_signal_connect (G_OBJECT (self->priv->web_view), "notify::load-error",
-                    G_CALLBACK (on_web_view_load_error), self);
-  g_signal_connect (G_OBJECT (self->priv->web_view), "notify::icon-uri",
-                    G_CALLBACK (on_web_view_icon_uri_notify), self);
+  g_signal_connect (G_OBJECT (self->priv->web_view), "load-changed",
+                    G_CALLBACK (on_web_view_load_changed), self);
+  g_signal_connect (G_OBJECT (self->priv->web_view), "load-failed",
+                    G_CALLBACK (on_web_view_load_failed), self);
+  g_signal_connect (G_OBJECT (self->priv->web_view), "notify::favicon",
+                    G_CALLBACK (on_web_view_favicon_notify), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "populate-popup",
                     G_CALLBACK (on_web_view_populate_popup), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "scroll-event",
@@ -1251,7 +1260,7 @@ gwh_browser_set_uri (GwhBrowser  *self,
   }
   g_free (scheme);
   if (g_strcmp0 (real_uri, gwh_browser_get_uri (self)) != 0) {
-    webkit_web_view_open (WEBKIT_WEB_VIEW (self->priv->web_view), real_uri);
+    webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->web_view), real_uri);
     g_object_notify (G_OBJECT (self), "uri");
   }
   g_free (real_uri);


Modified: webhelper/src/gwh-browser.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -22,7 +22,7 @@
 
 #include <glib.h>
 #include <gtk/gtk.h>
-#include <webkit/webkit.h>
+#include <webkit2/webkit2.h>
 
 G_BEGIN_DECLS
 



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list