[geany/geany-plugins] fb82de: Revert "Merge pull request #677 from hyperair/webkit2gtk"

Frank Lanitz git-noreply at xxxxx
Sun Jun 3 06:54:37 UTC 2018


Branch:      refs/heads/master
Author:      Frank Lanitz <frank at frank.uvena.de>
Committer:   Frank Lanitz <frank at frank.uvena.de>
Date:        Sun, 03 Jun 2018 06:54:37 UTC
Commit:      fb82de4c0e1e45dc000e47e5947796557c8efe3a
             https://github.com/geany/geany-plugins/commit/fb82de4c0e1e45dc000e47e5947796557c8efe3a

Log Message:
-----------
Revert "Merge pull request #677 from hyperair/webkit2gtk"

This reverts commit 341cab4e13c122b2b74e6f31a43be9adc653f8af, reversing
changes made to 1a575ee1b18070b9b6af4cae93d59b2f252cf5c7.


Modified Paths:
--------------
    build/markdown.m4
    build/webhelper.m4
    markdown/src/Makefile.am
    markdown/src/viewer.c
    markdown/src/viewer.h
    webhelper/src/Makefile.am
    webhelper/src/gwh-browser.c
    webhelper/src/gwh-browser.h
    webhelper/src/gwh-plugin.c

Modified: build/markdown.m4
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -49,13 +49,13 @@ AC_DEFUN([GP_CHECK_MARKDOWN],
     GTK_VERSION=2.16
     WEBKIT_VERSION=1.1.13
 
-    GP_CHECK_GTK3([webkit_package=webkit2gtk-4.0],
+    GP_CHECK_GTK3([webkit_package=webkitgtk-3.0],
                   [webkit_package=webkit-1.0])
+
     GP_CHECK_PLUGIN_DEPS([markdown], [MARKDOWN],
                          [$GP_GTK_PACKAGE >= ${GTK_VERSION}
                           $webkit_package >= ${WEBKIT_VERSION}
                           gthread-2.0])
-    AM_CONDITIONAL([MARKDOWN_WEBKIT2], [test "$webkit_package" = webkit2gtk-4.0])
 
     GP_COMMIT_PLUGIN_STATUS([Markdown])
 


Modified: build/webhelper.m4
5 lines changed, 3 insertions(+), 2 deletions(-)
===================================================================
@@ -19,13 +19,14 @@ AC_DEFUN([GP_CHECK_WEBHELPER],
         fi
     fi
 
-    GP_CHECK_PLUGIN_GTK3_ONLY([webhelper])
+    GP_CHECK_GTK3([webkit_package=webkitgtk-3.0],
+                  [webkit_package=webkit-1.0])
     GP_CHECK_PLUGIN_DEPS([WebHelper], [WEBHELPER],
                          [$GP_GTK_PACKAGE >= ${GTK_VERSION}
                           glib-2.0 >= ${GLIB_VERSION}
                           gio-2.0 >= ${GIO_VERSION}
                           gdk-pixbuf-2.0 >= ${GDK_PIXBUF_VERSION}
-                          webkit2gtk-4.0 >= ${WEBKIT_VERSION}
+                          $webkit_package >= ${WEBKIT_VERSION}
                           gthread-2.0])
 
 


Modified: markdown/src/Makefile.am
4 lines changed, 0 insertions(+), 4 deletions(-)
===================================================================
@@ -35,8 +35,4 @@ markdown_la_CFLAGS += $(LIBMARKDOWN_CFLAGS)
 markdown_la_LIBADD += $(LIBMARKDOWN_LIBS)
 endif
 
-if MARKDOWN_WEBKIT2
-markdown_la_CFLAGS += -DMARKDOWN_WEBKIT2
-endif
-
 include $(top_srcdir)/build/cppcheck.mk


Modified: markdown/src/viewer.c
29 lines changed, 1 insertions(+), 28 deletions(-)
===================================================================
@@ -22,11 +22,7 @@
 #include "config.h"
 #include <string.h>
 #include <gtk/gtk.h>
-#ifdef MARKDOWN_WEBKIT2
-# include <webkit2/webkit2.h>
-#else
-# include <webkit/webkitwebview.h>
-#endif
+#include <webkit/webkitwebview.h>
 #include <geanyplugin.h>
 #ifndef FULL_PRICE
 # include <mkdio.h>
@@ -300,18 +296,6 @@ pop_scroll_pos(MarkdownViewer *self)
   return popped;
 }
 
-#ifdef MARKDOWN_WEBKIT2
-static void
-on_webview_load_changed(MarkdownViewer  *self,
-                        WebKitLoadEvent  load_event,
-                        WebKitWebView   *web_view)
-{
-  /* When the webkit is done loading, reset the scroll position. */
-  if (load_event == WEBKIT_LOAD_FINISHED) {
-    pop_scroll_pos(self);
-  }
-}
-#else
 static void
 on_webview_load_status_notify(WebKitWebView *view, GParamSpec *pspec,
   MarkdownViewer *self)
@@ -325,7 +309,6 @@ on_webview_load_status_notify(WebKitWebView *view, GParamSpec *pspec,
     pop_scroll_pos(self);
   }
 }
-#endif
 
 gchar *
 markdown_viewer_get_html(MarkdownViewer *self)
@@ -405,23 +388,13 @@ markdown_viewer_update_view(MarkdownViewer *self)
     /* Connect a signal handler (only needed once) to restore the scroll
      * position once the webview is reloaded. */
     if (self->priv->load_handle == 0) {
-#ifdef MARKDOWN_WEBKIT2
-      self->priv->load_handle =
-        g_signal_connect_swapped(WEBKIT_WEB_VIEW(self), "load-changed",
-          G_CALLBACK(on_webview_load_changed), self);
-#else
       self->priv->load_handle =
         g_signal_connect_swapped(WEBKIT_WEB_VIEW(self), "notify::load-status",
           G_CALLBACK(on_webview_load_status_notify), self);
-#endif
     }
 
-#ifdef MARKDOWN_WEBKIT2
-    webkit_web_view_load_html(WEBKIT_WEB_VIEW(self), html, base_uri);
-#else
     webkit_web_view_load_string(WEBKIT_WEB_VIEW(self), html, "text/html",
       self->priv->enc, base_uri);
-#endif
 
     g_free(base_uri);
     g_free(html);


Modified: markdown/src/viewer.h
6 lines changed, 1 insertions(+), 5 deletions(-)
===================================================================
@@ -23,11 +23,7 @@
 #define MARKDOWN_VIEWER_H 1
 
 #include <gtk/gtk.h>
-#ifdef MARKDOWN_WEBKIT2
-# include <webkit2/webkit2.h>
-#else
-# include <webkit/webkitwebview.h>
-#endif
+#include <webkit/webkitwebview.h>
 
 G_BEGIN_DECLS
 


Modified: webhelper/src/Makefile.am
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -34,8 +34,7 @@ webhelper_la_CPPFLAGS = $(AM_CPPFLAGS) \
 webhelper_la_CFLAGS   = $(AM_CFLAGS) \
                         $(WEBHELPER_CFLAGS)
 webhelper_la_LIBADD   = $(COMMONLIBS) \
-                        $(WEBHELPER_LIBS) \
-                        -lm
+                        $(WEBHELPER_LIBS)
 
 # These are generated in $(srcdir) because they are part of the distribution,
 # and should anyway only be regenerated if the .tpl changes, which is a


Modified: webhelper/src/gwh-browser.c
490 lines changed, 286 insertions(+), 204 deletions(-)
===================================================================
@@ -21,15 +21,13 @@
 
 #include "config.h"
 
-#include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <glib.h>
 #include <glib/gi18n-lib.h>
-#include <gio/gio.h>
 #include <gtk/gtk.h>
-#include <webkit2/webkit2.h>
+#include <webkit/webkit.h>
 
 #include "gwh-utils.h"
 #include "gwh-settings.h"
@@ -126,35 +124,33 @@ enum {
 };
 
 static guint signals[LAST_SIGNAL] = {0};
-static const gdouble zoom_in_factor = 1.2;
-static const gdouble zoom_out_factor = 1.0 / 1.2;
 
 
 G_DEFINE_TYPE_WITH_CODE (GwhBrowser, gwh_browser, GTK_TYPE_VBOX,
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL))
 
 
+static void       inspector_set_detached      (GwhBrowser *self,
+                                               gboolean    detached);
+
+
 static void
 set_location_icon (GwhBrowser  *self,
-                   const cairo_surface_t *icon_surface)
+                   const gchar *icon_uri)
 {
   gboolean success = FALSE;
-
-  if (icon_surface) {
+  
+  if (icon_uri) {
     GdkPixbuf *icon;
-
-    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;
+    
+    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;
+    }
   }
-  
   if (! success) {
     if (G_UNLIKELY (self->priv->default_icon == NULL)) {
       gchar *ctype;
@@ -247,6 +243,17 @@ on_settings_inspector_window_geometry_notify (GObject    *object,
   g_free (geometry);
 }
 
+static void
+on_settings_inspector_detached_notify (GObject    *object,
+                                       GParamSpec *pspec,
+                                       GwhBrowser *self)
+{
+  gboolean detached;
+  
+  g_object_get (object, pspec->name, &detached, NULL);
+  inspector_set_detached (self, detached);
+}
+
 static void
 on_settings_wm_windows_skip_taskbar_notify (GObject    *object,
                                             GParamSpec *pspec,
@@ -283,10 +290,10 @@ on_settings_wm_windows_type_notify (GObject    *object,
 /* web inspector events handling */
 
 #define INSPECTOR_DETACHED(self) \
-  (webkit_web_inspector_is_attached ((self)->priv->inspector))
+  (gtk_bin_get_child (GTK_BIN ((self)->priv->inspector_window)) != NULL)
 
 #define INSPECTOR_VISIBLE(self) \
-  (webkit_web_inspector_get_web_view ((self)->priv->inspector) != NULL)
+  (gtk_widget_get_visible ((self)->priv->inspector_view))
 
 static void
 inspector_set_visible (GwhBrowser *self,
@@ -301,22 +308,117 @@ inspector_set_visible (GwhBrowser *self,
   }
 }
 
-static gboolean
-on_inspector_closed (WebKitWebInspector *inspector,
-                     GwhBrowser         *self)
+static void
+inspector_hide_window (GwhBrowser *self)
 {
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (self->priv->item_inspector),
-                                     FALSE);
-  return FALSE;
+  if (gtk_widget_get_visible (self->priv->inspector_window)) {
+    gtk_window_get_position (GTK_WINDOW (self->priv->inspector_window),
+                             &self->priv->inspector_window_x,
+                             &self->priv->inspector_window_y);
+    gtk_widget_hide (self->priv->inspector_window);
+  }
+}
+
+static void
+inspector_show_window (GwhBrowser *self)
+{
+  if (! gtk_widget_get_visible (self->priv->inspector_window)) {
+    gtk_widget_show (self->priv->inspector_window);
+    gtk_window_move (GTK_WINDOW (self->priv->inspector_window),
+                     self->priv->inspector_window_x,
+                     self->priv->inspector_window_y);
+  }
+}
+
+static void
+inspector_set_detached (GwhBrowser *self,
+                        gboolean    detached)
+{
+  if (detached != INSPECTOR_DETACHED (self)) {
+    if (detached) {
+      gtk_widget_reparent (self->priv->inspector_view,
+                           self->priv->inspector_window);
+      if (INSPECTOR_VISIBLE (self)) {
+        inspector_show_window (self);
+      }
+    } else {
+      gtk_widget_reparent (self->priv->inspector_view, self->priv->paned);
+      inspector_hide_window (self);
+    }
+    g_object_set (self->priv->settings, "inspector-detached", detached, NULL);
+  }
+}
+
+static WebKitWebView *
+on_inspector_inspect_web_view (WebKitWebInspector *inspector,
+                               WebKitWebView      *view,
+                               GwhBrowser         *self)
+{
+  if (self->priv->inspector_web_view) {
+    gtk_widget_destroy (self->priv->inspector_web_view);
+  }
+  
+  self->priv->inspector_web_view = webkit_web_view_new ();
+  gtk_widget_show (self->priv->inspector_web_view);
+  gtk_container_add (GTK_CONTAINER (self->priv->inspector_view),
+                     self->priv->inspector_web_view);
+  
+  return WEBKIT_WEB_VIEW (self->priv->inspector_web_view);
 }
 
 static gboolean
-on_inspector_opened (WebKitWebInspector *inspector,
+on_inspector_show_window (WebKitWebInspector *inspector,
                           GwhBrowser         *self)
 {
+  gtk_widget_show (self->priv->inspector_view);
+  if (INSPECTOR_DETACHED (self)) {
+    inspector_show_window (self);
+  }
   gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (self->priv->item_inspector),
                                      TRUE);
-  return FALSE;
+  
+  return TRUE;
+}
+
+static gboolean
+on_inspector_close_window (WebKitWebInspector *inspector,
+                           GwhBrowser         *self)
+{
+  gtk_widget_hide (self->priv->inspector_view);
+  inspector_hide_window (self);
+  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (self->priv->item_inspector),
+                                     FALSE);
+  gtk_widget_grab_focus (gtk_widget_get_toplevel (self->priv->web_view));
+  
+  return TRUE;
+}
+
+static gboolean
+on_inspector_detach_window (WebKitWebInspector *inspector,
+                            GwhBrowser         *self)
+{
+  inspector_set_detached (self, TRUE);
+  
+  return TRUE;
+}
+
+static gboolean
+on_inspector_attach_window (WebKitWebInspector *inspector,
+                            GwhBrowser         *self)
+{
+  inspector_set_detached (self, FALSE);
+  
+  return TRUE;
+}
+
+static gboolean
+on_inspector_window_delete_event (GtkWidget  *window,
+                                  GdkEvent   *event,
+                                  GwhBrowser *self)
+{
+  webkit_web_inspector_close (self->priv->inspector);
+  
+  return TRUE;
 }
 
 /* web view events hanlding */
@@ -417,9 +519,20 @@ update_load_status (GwhBrowser *self)
 {
   gboolean        loading = FALSE;
   WebKitWebView  *web_view = WEBKIT_WEB_VIEW (self->priv->web_view);
-
-  loading = webkit_web_view_is_loading (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;
+  }
+  
   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);
@@ -429,23 +542,23 @@ update_load_status (GwhBrowser *self)
 }
 
 static void
-on_web_view_load_changed (WebKitWebView   *object,
-                          WebKitLoadEvent  load_event,
-                          GwhBrowser      *self)
+on_web_view_load_status_notify (GObject    *object,
+                                GParamSpec *pspec,
+                                GwhBrowser *self)
 {
   update_load_status (self);
 }
 
 static gboolean
-on_web_view_load_failed (WebKitWebView   *web_view,
-                         WebKitLoadEvent  load_event,
-                         gchar           *failing_uri,
-                         GError          *error,
-                         GwhBrowser      *self)
+on_web_view_load_error (WebKitWebView  *web_view,
+                        WebKitWebFrame *web_frame,
+                        gchar          *uri,
+                        gpointer        web_error,
+                        GwhBrowser     *self)
 {
   update_load_status (self);
   
-  return FALSE; /* we didn't really handle the error, so return %FALSE */
+  return FALSE; /* we didn't really handled the error, so return %FALSE */
 }
 
 static void
@@ -462,14 +575,14 @@ on_web_view_uri_notify (GObject    *object,
 }
 
 static void
-on_web_view_favicon_notify (GObject    *object,
-                            GParamSpec *pspec,
-                            GwhBrowser *self)
+on_web_view_icon_uri_notify (GObject    *object,
+                             GParamSpec *pspec,
+                             GwhBrowser *self)
 {
-  const cairo_surface_t *icon_surface;
+  const gchar *icon_uri;
   
-  icon_surface = webkit_web_view_get_favicon (WEBKIT_WEB_VIEW (self->priv->web_view));
-  set_location_icon (self, icon_surface);
+  icon_uri = webkit_web_view_get_icon_uri (WEBKIT_WEB_VIEW (self->priv->web_view));
+  set_location_icon (self, icon_uri);
 }
 
 static void
@@ -479,7 +592,7 @@ on_web_view_progress_notify (GObject    *object,
 {
   gdouble value;
   
-  value = webkit_web_view_get_estimated_load_progress (WEBKIT_WEB_VIEW (self->priv->web_view));
+  value = webkit_web_view_get_progress (WEBKIT_WEB_VIEW (self->priv->web_view));
   if (value >= 1.0) {
     value = 0.0;
   }
@@ -488,9 +601,8 @@ on_web_view_progress_notify (GObject    *object,
 
 
 static void
-on_item_flip_orientation_activate (GSimpleAction *action,
-                                   GVariant *parameter,
-                                   GwhBrowser    *self)
+on_item_flip_orientation_activate (GtkMenuItem *item,
+                                   GwhBrowser  *self)
 {
   gtk_orientable_set_orientation (GTK_ORIENTABLE (self),
                                   gtk_orientable_get_orientation (GTK_ORIENTABLE (self)) == GTK_ORIENTATION_VERTICAL
@@ -499,124 +611,82 @@ on_item_flip_orientation_activate (GSimpleAction *action,
 }
 
 static void
-on_item_zoom_100_activate (WebKitWebView *view)
+on_item_zoom_100_activate (GtkMenuItem *item,
+                           GwhBrowser  *self)
 {
-  webkit_web_view_set_zoom_level (view, 1.0);
+  webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW (self->priv->web_view), 1.0);
 }
 
 static void
-on_item_full_content_zoom_activate (GSimpleAction *action,
-                                    GVariant      *dummy_parameter,
-                                    GwhBrowser    *self)
+on_item_full_content_zoom_activate (GtkCheckMenuItem *item,
+                                    GwhBrowser       *self)
 {
-  WebKitSettings *settings;
-  gboolean        zoom_text_only;
-
-  settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (self->priv->web_view));
-
-  zoom_text_only = !webkit_settings_get_zoom_text_only (settings);
-  webkit_settings_set_zoom_text_only (settings, zoom_text_only);
-  g_simple_action_set_state (action, g_variant_new_boolean (!zoom_text_only));
-}
-
-static void web_view_zoom (WebKitWebView *view, gdouble factor)
-{
-  gdouble zoom_level = webkit_web_view_get_zoom_level (view);
-  webkit_web_view_set_zoom_level (view, zoom_level * factor);
-}
-
-static void web_view_zoom_in (WebKitWebView *view)
-{
-  web_view_zoom (view, zoom_in_factor);
+  webkit_web_view_set_full_content_zoom (WEBKIT_WEB_VIEW (self->priv->web_view),
+                                         gtk_check_menu_item_get_active (item));
 }
 
-static void web_view_zoom_out (WebKitWebView *view)
-{
-  web_view_zoom (view, zoom_out_factor);
-}
-
-static gboolean
-on_web_view_context_menu (WebKitWebView       *view,
-                          WebKitContextMenu   *context_menu,
-                          GdkEvent            *event,
-                          WebKitHitTestResult *hit_test_result,
-                          GwhBrowser          *self)
+static void
+on_web_view_populate_popup (WebKitWebView *view,
+                            GtkMenu       *menu,
+                            GwhBrowser    *self)
 {
-  WebKitContextMenuItem    *item;
-  WebKitContextMenu        *submenu;
-  GAction                  *action;
-  GVariant                 *action_state;
-
-  webkit_context_menu_append (context_menu,
-                              webkit_context_menu_item_new_separator ());
-
+  GtkWidget *item;
+  GtkWidget *submenu;
+  
+  #define ADD_SEPARATOR(menu) \
+    item = gtk_separator_menu_item_new (); \
+    gtk_widget_show (item); \
+    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item)
+  
+  ADD_SEPARATOR (menu);
+  
   /* Zoom menu */
-  submenu = webkit_context_menu_new ();
-  item = webkit_context_menu_item_new_with_submenu (_("_Zoom"), submenu);
-  webkit_context_menu_append (context_menu, item);
-
+  submenu = gtk_menu_new ();
+  item = gtk_menu_item_new_with_mnemonic (_("_Zoom"));
+  gtk_widget_show (item);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
   /* zoom in */
-  action = g_simple_action_new ("zoom-in", NULL);
-  g_signal_connect_swapped (action, "activate",
-                            G_CALLBACK (web_view_zoom_in), view);
-  item = webkit_context_menu_item_new_from_gaction (action, _("Zoom _In"),
-                                                    NULL);
-  webkit_context_menu_append (submenu, item);
-
+  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);
+  gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
   /* zoom out */
-  action = g_simple_action_new ("zoom-out", NULL);
-  g_signal_connect_swapped (action, "activate",
-                            G_CALLBACK (web_view_zoom_out), view);
-  item = webkit_context_menu_item_new_from_gaction (action, _("Zoom _Out"),
-                                                    NULL);
-  webkit_context_menu_append (submenu, item);
-
+  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);
+  gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
   /* zoom 1:1 */
-  webkit_context_menu_append (submenu,
-                              webkit_context_menu_item_new_separator ());
-  action = g_simple_action_new ("zoom-reset", NULL);
-  g_signal_connect_swapped (action, "activate",
-                            G_CALLBACK (on_item_zoom_100_activate), view);
-  item = webkit_context_menu_item_new_from_gaction (action, _("_Reset Zoom"),
-                                                    NULL);
-  webkit_context_menu_append (submenu, item);
-
+  ADD_SEPARATOR (submenu);
+  item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_100, NULL);
+  g_signal_connect (item, "activate",
+                    G_CALLBACK (on_item_zoom_100_activate), self);
+  gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
   /* full content zoom */
-  webkit_context_menu_append (submenu,
-                              webkit_context_menu_item_new_separator ());
-  action_state = g_variant_new_boolean (
-    webkit_settings_get_zoom_text_only (webkit_web_view_get_settings (view)));
-
-  action = g_simple_action_new_stateful (
-    "full-content-zoom",
-    NULL,
-    action_state
-  );
-  item = webkit_context_menu_item_new_from_gaction (action,
-                                                    _("Full-_content zoom"),
-                                                    NULL);
-  g_simple_action_set_enabled (action, TRUE);
-  webkit_context_menu_append (submenu, item);
-  g_signal_connect (action, "activate",
-                    on_item_full_content_zoom_activate, self);
-
-  /* flip panes orientation */
-  webkit_context_menu_append (context_menu,
-                              webkit_context_menu_item_new_separator ());
-  action = g_simple_action_new ("flip-panes", NULL);
-  g_signal_connect_swapped (action, "activate",
-                            G_CALLBACK (on_item_flip_orientation_activate),
-                            view);
-  item = webkit_context_menu_item_new_from_gaction (
-    action, _("_Flip panes orientation"), NULL);
-  webkit_context_menu_append (context_menu, item);
+  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));
+  g_signal_connect (item, "activate",
+                    G_CALLBACK (on_item_full_content_zoom_activate), self);
+  gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
+  /* show zoom sumbenu */
+  gtk_widget_show_all (submenu);
+  
+  ADD_SEPARATOR (menu);
+  
+  item = gtk_menu_item_new_with_label (_("Flip panes orientation"));
+  g_signal_connect (item, "activate",
+                    G_CALLBACK (on_item_flip_orientation_activate), self);
+  gtk_widget_show (item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
   if (! INSPECTOR_VISIBLE (self) || INSPECTOR_DETACHED (self)) {
-    g_simple_action_set_enabled (action, FALSE);
+    gtk_widget_set_sensitive (item, FALSE);
   }
-
-  g_signal_emit (self, signals[POPULATE_POPUP], 0, context_menu);
-
-  return FALSE;
+  
+  #undef ADD_SEPARATOR
+  
+  g_signal_emit (self, signals[POPULATE_POPUP], 0, menu);
 }
 
 static gboolean
@@ -626,32 +696,18 @@ on_web_view_scroll_event (GtkWidget      *widget,
 {
   guint     mods = event->state & gtk_accelerator_get_default_mod_mask ();
   gboolean  handled = FALSE;
-
-#if GTK_CHECK_VERSION(3, 0, 0)
-  gdouble   delta;
-  gdouble   factor;
-#endif
   
   if (mods == GDK_CONTROL_MASK) {
     handled = TRUE;
     switch (event->direction) {
       case GDK_SCROLL_DOWN:
-        web_view_zoom_out (WEBKIT_WEB_VIEW (self->priv->web_view));
+        webkit_web_view_zoom_out (WEBKIT_WEB_VIEW (self->priv->web_view));
         break;
       
       case GDK_SCROLL_UP:
-        web_view_zoom_in (WEBKIT_WEB_VIEW (self->priv->web_view));
+        webkit_web_view_zoom_in (WEBKIT_WEB_VIEW (self->priv->web_view));
         break;
-
-#if GTK_CHECK_VERSION(3, 0, 0)
-      case GDK_SCROLL_SMOOTH:
-        delta = event->delta_x + event->delta_y;
-        factor = pow (delta < 0 ? zoom_in_factor : zoom_out_factor,
-                      fabs (delta));
-        web_view_zoom (WEBKIT_WEB_VIEW (self->priv->web_view), factor);
-        break;
-#endif
-
+      
       default:
         handled = FALSE;
     }
@@ -821,7 +877,7 @@ gwh_browser_class_init (GwhBrowserClass *klass)
                                           G_STRUCT_OFFSET (GwhBrowserClass, populate_popup),
                                           NULL, NULL,
                                           g_cclosure_marshal_VOID__OBJECT,
-                                          G_TYPE_NONE, 1, WEBKIT_TYPE_CONTEXT_MENU);
+                                          G_TYPE_NONE, 1, GTK_TYPE_MENU);
   
   g_object_class_override_property (object_class,
                                     PROP_ORIENTATION,
@@ -963,6 +1019,33 @@ create_toolbar (GwhBrowser *self)
   return toolbar;
 }
 
+static GtkWidget *
+create_inspector_window (GwhBrowser *self)
+{
+  gboolean skips_taskbar;
+  gboolean window_type;
+  
+  g_object_get (self->priv->settings,
+                "wm-secondary-windows-skip-taskbar", &skips_taskbar,
+                "wm-secondary-windows-type", &window_type,
+                NULL);
+  self->priv->inspector_window_x = self->priv->inspector_window_y = 0;
+  self->priv->inspector_window = g_object_new (GTK_TYPE_WINDOW,
+                                               "type", GTK_WINDOW_TOPLEVEL,
+                                               "skip-taskbar-hint", skips_taskbar,
+                                               "type-hint", window_type,
+                                               "title", _("Web inspector"),
+                                               NULL);
+  g_signal_connect (self->priv->inspector_window, "delete-event",
+                    G_CALLBACK (on_inspector_window_delete_event), self);
+  g_signal_connect (self->priv->settings, "notify::wm-secondary-windows-skip-taskbar",
+                    G_CALLBACK (on_settings_wm_windows_skip_taskbar_notify), self);
+  g_signal_connect (self->priv->settings, "notify::wm-secondary-windows-type",
+                    G_CALLBACK (on_settings_wm_windows_type_notify), self);
+  
+  return self->priv->inspector_window;
+}
+
 static guint
 get_statusbar_context_id (GtkStatusbar *statusbar)
 {
@@ -976,24 +1059,18 @@ get_statusbar_context_id (GtkStatusbar *statusbar)
 }
 
 static void
-on_web_view_mouse_target_changed (WebKitWebView       *view,
-                                  WebKitHitTestResult *hit_test_result,
-                                  guint                modifiers,
-                                  GwhBrowser          *self)
+on_web_view_hovering_over_link (WebKitWebView *view,
+                                gchar         *title,
+                                gchar         *uri,
+                                GwhBrowser    *self)
 {
   GtkStatusbar *statusbar = GTK_STATUSBAR (self->priv->statusbar);
-  const gchar *uri;
-
+  
   if (self->priv->hovered_link) {
     gtk_statusbar_pop (statusbar, get_statusbar_context_id (statusbar));
     g_free (self->priv->hovered_link);
     self->priv->hovered_link = NULL;
   }
-
-  if (!webkit_hit_test_result_context_is_link (hit_test_result))
-    return;
-
-  uri = webkit_hit_test_result_get_link_uri (hit_test_result);
   if (uri && *uri) {
     self->priv->hovered_link = g_strdup (uri);
     gtk_statusbar_push (statusbar, get_statusbar_context_id (statusbar),
@@ -1037,8 +1114,7 @@ static void
 gwh_browser_init (GwhBrowser *self)
 {
   GtkWidget          *scrolled;
-  WebKitSettings     *wkws;
-  WebKitWebContext   *wkcontext;
+  WebKitWebSettings  *wkws;
   gboolean            inspector_detached;
   
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GWH_TYPE_BROWSER,
@@ -1049,9 +1125,6 @@ gwh_browser_init (GwhBrowser *self)
   self->priv->web_view = webkit_web_view_new ();
   wkws = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (self->priv->web_view));
   g_object_set (wkws, "enable-developer-extras", TRUE, NULL);
-
-  wkcontext = webkit_web_view_get_context (WEBKIT_WEB_VIEW (self->priv->web_view));
-  webkit_web_context_set_favicon_database_directory (wkcontext, NULL);
   
   self->priv->settings = gwh_settings_get_default ();
   g_object_get (self->priv->settings,
@@ -1076,6 +1149,7 @@ gwh_browser_init (GwhBrowser *self)
                                   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   self->priv->inspector_web_view = NULL;
   
+  self->priv->inspector_window = create_inspector_window (self);
   gtk_container_add (GTK_CONTAINER (inspector_detached
                                     ? self->priv->inspector_window
                                     : self->priv->paned),
@@ -1094,27 +1168,33 @@ gwh_browser_init (GwhBrowser *self)
                     G_CALLBACK (on_orientation_notify), self);
   
   self->priv->inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW (self->priv->web_view));
-  g_signal_connect (self->priv->inspector, "bring-to-front",
-                    G_CALLBACK (on_inspector_opened), self);
-  g_signal_connect (self->priv->inspector, "closed",
-                    G_CALLBACK (on_inspector_closed), self);
+  g_signal_connect (self->priv->inspector, "inspect-web-view",
+                    G_CALLBACK (on_inspector_inspect_web_view), self);
+  g_signal_connect (self->priv->inspector, "show-window",
+                    G_CALLBACK (on_inspector_show_window), self);
+  g_signal_connect (self->priv->inspector, "close-window",
+                    G_CALLBACK (on_inspector_close_window), self);
+  g_signal_connect (self->priv->inspector, "detach-window",
+                    G_CALLBACK (on_inspector_detach_window), self);
+  g_signal_connect (self->priv->inspector, "attach-window",
+                    G_CALLBACK (on_inspector_attach_window), self);
   
   g_signal_connect (G_OBJECT (self->priv->web_view), "notify::progress",
                     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), "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), "context-menu",
-                    G_CALLBACK (on_web_view_context_menu), 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), "populate-popup",
+                    G_CALLBACK (on_web_view_populate_popup), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "scroll-event",
                     G_CALLBACK (on_web_view_scroll_event), self);
-  g_signal_connect (G_OBJECT (self->priv->web_view), "mouse-target-changed",
-                    G_CALLBACK (on_web_view_mouse_target_changed), self);
+  g_signal_connect (G_OBJECT (self->priv->web_view), "hovering-over-link",
+                    G_CALLBACK (on_web_view_hovering_over_link), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "leave-notify-event",
                     G_CALLBACK (on_web_view_leave_notify_event), self);
   g_signal_connect (G_OBJECT (self->priv->web_view), "enter-notify-event",
@@ -1135,6 +1215,8 @@ gwh_browser_init (GwhBrowser *self)
                     G_CALLBACK (on_settings_browser_bookmarks_notify), self);
   g_signal_connect (self->priv->settings, "notify::browser-orientation",
                     G_CALLBACK (on_settings_browser_orientation_notify), self);
+  g_signal_connect (self->priv->settings, "notify::inspector-detached",
+                    G_CALLBACK (on_settings_inspector_detached_notify), self);
   g_signal_connect (self->priv->settings, "notify::inspector-window-geometry",
                     G_CALLBACK (on_settings_inspector_window_geometry_notify), self);
 }
@@ -1169,7 +1251,7 @@ gwh_browser_set_uri (GwhBrowser  *self,
   }
   g_free (scheme);
   if (g_strcmp0 (real_uri, gwh_browser_get_uri (self)) != 0) {
-    webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->web_view), real_uri);
+    webkit_web_view_open (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
6 lines changed, 3 insertions(+), 3 deletions(-)
===================================================================
@@ -22,7 +22,7 @@
 
 #include <glib.h>
 #include <gtk/gtk.h>
-#include <webkit2/webkit2.h>
+#include <webkit/webkit.h>
 
 G_BEGIN_DECLS
 
@@ -56,8 +56,8 @@ struct _GwhBrowserClass
 {
   GtkVBoxClass parent_class;
   
-  void        (*populate_popup)       (GwhBrowser        *browser,
-                                       WebKitContextMenu *menu);
+  void        (*populate_popup)       (GwhBrowser *browser,
+                                       GtkMenu    *menu);
 };
 
 


Modified: webhelper/src/gwh-plugin.c
50 lines changed, 19 insertions(+), 31 deletions(-)
===================================================================
@@ -240,45 +240,33 @@ on_document_save (GObject        *obj,
 }
 
 static void
-on_item_auto_reload_toggled (GAction  *action,
-                             GVariant *parameter,
-                             gpointer  dummy)
+on_item_auto_reload_toggled (GtkCheckMenuItem *item,
+                             gpointer          dummy)
 {
-  gboolean browser_auto_reload;
-
-  g_object_get (G_OBJECT (G_settings),
-                "browser-auto-reload", &browser_auto_reload, NULL);
   g_object_set (G_OBJECT (G_settings), "browser-auto-reload",
-                !browser_auto_reload, NULL);
-  g_simple_action_set_state (action, g_variant_new_boolean (browser_auto_reload));
+                gtk_check_menu_item_get_active (item), NULL);
 }
 
 static void
-on_browser_populate_popup (GwhBrowser        *browser,
-                           WebKitContextMenu *menu,
-                           gpointer           dummy)
+on_browser_populate_popup (GwhBrowser *browser,
+                           GtkMenu    *menu,
+                           gpointer    dummy)
 {
-  GAction               *action;
-  gboolean               auto_reload = FALSE;
-  GVariant              *action_state;
-  WebKitContextMenuItem *item;
-
-  webkit_context_menu_append (menu,
-                              webkit_context_menu_item_new_separator ());
-
+  GtkWidget  *item;
+  gboolean    auto_reload = FALSE;
+  
+  item = gtk_separator_menu_item_new ();
+  gtk_widget_show (item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+  
   g_object_get (G_OBJECT (G_settings), "browser-auto-reload", &auto_reload,
                 NULL);
-  action_state = g_variant_new_boolean (auto_reload);
-  action = g_simple_action_new_stateful (
-    "browser-auto-reload",
-    NULL,
-    action_state
-  );
-  item = webkit_context_menu_item_new_from_gaction (
-    action, _("Reload upon document saving"), NULL);
-  webkit_context_menu_append (menu, item);
-  g_signal_connect (action, "activate",
-                    on_item_auto_reload_toggled, NULL);
+  item = gtk_check_menu_item_new_with_mnemonic (_("Reload upon document saving"));
+  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), auto_reload);
+  gtk_widget_show (item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+  g_signal_connect (item, "toggled", G_CALLBACK (on_item_auto_reload_toggled),
+                    NULL);
 }
 
 static void



--------------
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