aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Wurmus2016-10-25 23:00:35 -0700
committerPaul Eggert2016-10-25 23:07:13 -0700
commite443eab6bf2b7b6e2f6a9ab06b1c5618b19ae653 (patch)
treec8062ae848fa5e031d1cf06663c86e6b7cf6ca13
parenta9785bd5c2e27e949040342e441c1a65a5b650d0 (diff)
downloademacs-e443eab6bf2b7b6e2f6a9ab06b1c5618b19ae653.tar.gz
emacs-e443eab6bf2b7b6e2f6a9ab06b1c5618b19ae653.zip
Implement zoom for WebKit widget.
* src/xwidget.c (xwidget-webkit-zoom): New procedure. * lisp/xwidget.el: Bind "+" and "-" to zoom in and out, respectively. (xwidget-webkit-zoom): Declare procedure. (xwidget-webkit-zoom-in, xwidget-webkit-zoom-out): New procedures.
-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 13e3fdf2a94..871b72978d4 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -42,6 +42,7 @@
42(declare-function xwidget-webkit-execute-script "xwidget.c" 42(declare-function xwidget-webkit-execute-script "xwidget.c"
43 (xwidget script &optional callback)) 43 (xwidget script &optional callback))
44(declare-function xwidget-webkit-goto-uri "xwidget.c" (xwidget uri)) 44(declare-function xwidget-webkit-goto-uri "xwidget.c" (xwidget uri))
45(declare-function xwidget-webkit-zoom "xwidget.c" (xwidget factor))
45(declare-function xwidget-plist "xwidget.c" (xwidget)) 46(declare-function xwidget-plist "xwidget.c" (xwidget))
46(declare-function set-xwidget-plist "xwidget.c" (xwidget plist)) 47(declare-function set-xwidget-plist "xwidget.c" (xwidget plist))
47(declare-function xwidget-view-window "xwidget.c" (xwidget-view)) 48(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."
106 (define-key map "t" (lambda () (interactive) (message "o"))) ;FIXME: ?!? 107 (define-key map "t" (lambda () (interactive) (message "o"))) ;FIXME: ?!?
107 (define-key map "\C-m" 'xwidget-webkit-insert-string) 108 (define-key map "\C-m" 'xwidget-webkit-insert-string)
108 (define-key map "w" 'xwidget-webkit-current-url) 109 (define-key map "w" 'xwidget-webkit-current-url)
110 (define-key map "+" 'xwidget-webkit-zoom-in)
111 (define-key map "-" 'xwidget-webkit-zoom-out)
109 112
110 ;;similar to image mode bindings 113 ;;similar to image mode bindings
111 (define-key map (kbd "SPC") 'xwidget-webkit-scroll-up) 114 (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."
131 map) 134 map)
132 "Keymap for `xwidget-webkit-mode'.") 135 "Keymap for `xwidget-webkit-mode'.")
133 136
137(defun xwidget-webkit-zoom-in ()
138 "Increase webkit view zoom factor."
139 (interactive)
140 (xwidget-webkit-zoom (xwidget-webkit-current-session) 0.1))
141
142(defun xwidget-webkit-zoom-out ()
143 "Decrease webkit view zoom factor."
144 (interactive)
145 (xwidget-webkit-zoom (xwidget-webkit-current-session) -0.1))
146
134(defun xwidget-webkit-scroll-up () 147(defun xwidget-webkit-scroll-up ()
135 "Scroll webkit up." 148 "Scroll webkit up."
136 (interactive) 149 (interactive)
diff --git a/src/xwidget.c b/src/xwidget.c
index dbd8fc18ad7..8105b3d825d 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -681,6 +681,25 @@ DEFUN ("xwidget-webkit-goto-uri",
681 return Qnil; 681 return Qnil;
682} 682}
683 683
684DEFUN ("xwidget-webkit-zoom",
685 Fxwidget_webkit_zoom, Sxwidget_webkit_zoom,
686 2, 2, 0,
687 doc: /* Change the zoom factor of the xwidget webkit instance
688referenced by XWIDGET. */)
689 (Lisp_Object xwidget, Lisp_Object factor)
690{
691 WEBKIT_FN_INIT ();
692 if (FLOATP (factor))
693 {
694 double zoom_change = XFLOAT_DATA (factor);
695 webkit_web_view_set_zoom_level
696 (WEBKIT_WEB_VIEW (xw->widget_osr),
697 webkit_web_view_get_zoom_level
698 (WEBKIT_WEB_VIEW (xw->widget_osr)) + zoom_change);
699 }
700 return Qnil;
701}
702
684 703
685DEFUN ("xwidget-webkit-execute-script", 704DEFUN ("xwidget-webkit-execute-script",
686 Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script, 705 Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script,
@@ -953,6 +972,7 @@ syms_of_xwidget (void)
953 defsubr (&Sset_xwidget_query_on_exit_flag); 972 defsubr (&Sset_xwidget_query_on_exit_flag);
954 973
955 defsubr (&Sxwidget_webkit_goto_uri); 974 defsubr (&Sxwidget_webkit_goto_uri);
975 defsubr (&Sxwidget_webkit_zoom);
956 defsubr (&Sxwidget_webkit_execute_script); 976 defsubr (&Sxwidget_webkit_execute_script);
957 DEFSYM (Qwebkit, "webkit"); 977 DEFSYM (Qwebkit, "webkit");
958 978