[geany/geany-plugins] 6baf79: webhelper: Fix ctrl+scroll zooming in gtk3
Chow Loong Jin
git-noreply at xxxxx
Sat Jan 13 07:10:23 UTC 2018
Branch: refs/heads/master
Author: Chow Loong Jin <hyperair at debian.org>
Committer: Chow Loong Jin <hyperair at debian.org>
Date: Sat, 13 Jan 2018 07:10:23 UTC
Commit: 6baf793a523ef051ef1020dd8b2f0a4207637b7c
https://github.com/geany/geany-plugins/commit/6baf793a523ef051ef1020dd8b2f0a4207637b7c
Log Message:
-----------
webhelper: Fix ctrl+scroll zooming in gtk3
Modified Paths:
--------------
webhelper/src/Makefile.am
webhelper/src/gwh-browser.c
Modified: webhelper/src/Makefile.am
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -34,7 +34,8 @@ webhelper_la_CPPFLAGS = $(AM_CPPFLAGS) \
webhelper_la_CFLAGS = $(AM_CFLAGS) \
$(WEBHELPER_CFLAGS)
webhelper_la_LIBADD = $(COMMONLIBS) \
- $(WEBHELPER_LIBS)
+ $(WEBHELPER_LIBS) \
+ -lm
# 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
33 lines changed, 26 insertions(+), 7 deletions(-)
===================================================================
@@ -21,6 +21,7 @@
#include "config.h"
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -124,6 +125,8 @@ 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,
@@ -620,18 +623,20 @@ on_item_full_content_zoom_activate (GtkCheckMenuItem *item,
webkit_settings_set_zoom_text_only (settings, !gtk_check_menu_item_get_active (item));
}
+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)
{
- gdouble target_zoom_level = webkit_web_view_get_zoom_level (view) + 0.05;
- webkit_web_view_set_zoom_level (view, target_zoom_level);
+ web_view_zoom (view, zoom_in_factor);
}
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);
+ web_view_zoom (view, zoom_out_factor);
}
static void
@@ -705,6 +710,11 @@ 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;
@@ -716,7 +726,16 @@ on_web_view_scroll_event (GtkWidget *widget,
case GDK_SCROLL_UP:
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;
}
--------------
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