summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrekado <rekado@elephly.net>2016-09-20 21:53:08 +0200
committerrekado <rekado@elephly.net>2016-09-20 22:11:46 +0200
commitaf660e60fc8160cace416e144fb6f817ee74b7d4 (patch)
treea412d4f5e2c97ff958d8ea55889e68a39f8642f3
parent9261c64e6830cb9a661f83b59be986d2eab41765 (diff)
WIP: Webkit add zoom.
-rw-r--r--lisp/xwidget.el13
-rw-r--r--src/xwidget.c20
2 files changed, 33 insertions, 0 deletions
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index ba05a161ae..0892030246 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -42,6 +42,7 @@
(declare-function xwidget-resize "xwidget.c" (xwidget new-width new-height))
(declare-function xwidget-webkit-execute-script "xwidget.c" (xwidget script))
(declare-function xwidget-webkit-goto-uri "xwidget.c" (xwidget uri))
+(declare-function xwidget-webkit-zoom "xwidget.c" (xwidget factor))
(declare-function xwidget-plist "xwidget.c" (xwidget))
(declare-function set-xwidget-plist "xwidget.c" (xwidget plist))
(declare-function xwidget-view-window "xwidget.c" (xwidget-view))
@@ -106,6 +107,8 @@ Interactively, URL defaults to the string looking like a url around point."
(define-key map "t" (lambda () (interactive) (message "o"))) ;FIXME: ?!?
(define-key map "\C-m" 'xwidget-webkit-insert-string)
(define-key map "w" 'xwidget-webkit-current-url)
+ (define-key map "+" 'xwidget-webkit-zoom-in)
+ (define-key map "-" 'xwidget-webkit-zoom-out)
;;similar to image mode bindings
(define-key map (kbd "SPC") 'xwidget-webkit-scroll-up)
@@ -131,6 +134,16 @@ Interactively, URL defaults to the string looking like a url around point."
map)
"Keymap for `xwidget-webkit-mode'.")
+(defun xwidget-webkit-zoom-in ()
+ "Increase webkit view zoom factor."
+ (interactive)
+ (xwidget-webkit-zoom (xwidget-webkit-current-session) 0.1))
+
+(defun xwidget-webkit-zoom-out ()
+ "Decrease webkit view zoom factor."
+ (interactive)
+ (xwidget-webkit-zoom (xwidget-webkit-current-session) -0.1))
+
(defun xwidget-webkit-scroll-up ()
"Scroll webkit up."
(interactive)
diff --git a/src/xwidget.c b/src/xwidget.c
index 8e6b47507b..a098150b40 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -539,6 +539,25 @@ DEFUN ("xwidget-webkit-goto-uri",
return Qnil;
}
+DEFUN ("xwidget-webkit-zoom",
+ Fxwidget_webkit_zoom, Sxwidget_webkit_zoom,
+ 2, 2, 0,
+ doc: /* Change the zoom factor of the xwidget webkit instance
+referenced by XWIDGET. */)
+ (Lisp_Object xwidget, Lisp_Object factor)
+{
+ WEBKIT_FN_INIT ();
+ if (FLOATP (factor))
+ {
+ double zoom_change = XFLOAT_DATA (factor);
+ webkit_web_view_set_zoom_level
+ (WEBKIT_WEB_VIEW (xw->widget_osr),
+ webkit_web_view_get_zoom_level
+ (WEBKIT_WEB_VIEW (xw->widget_osr)) + zoom_change);
+ }
+ return Qnil;
+}
+
DEFUN ("xwidget-webkit-execute-script",
Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script,
@@ -823,6 +842,7 @@ syms_of_xwidget (void)
defsubr (&Sset_xwidget_query_on_exit_flag);
defsubr (&Sxwidget_webkit_goto_uri);
+ defsubr (&Sxwidget_webkit_zoom);
defsubr (&Sxwidget_webkit_execute_script);
defsubr (&Sxwidget_webkit_get_title);
DEFSYM (Qwebkit, "webkit");