[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