From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Ricardo Wurmus Newsgroups: gmane.emacs.devel Subject: [PATCH 3/6] Implement zoom for WebKit widget Date: Wed, 21 Sep 2016 13:50:15 +0200 Message-ID: <20160921115018.29576-4-rekado@elephly.net> References: <20160921115018.29576-1-rekado@elephly.net> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1474458830 11324 195.159.176.226 (21 Sep 2016 11:53:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 21 Sep 2016 11:53:50 +0000 (UTC) Cc: Ricardo Wurmus To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Sep 21 13:53:42 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bmg5Y-00005u-O5 for ged-emacs-devel@m.gmane.org; Wed, 21 Sep 2016 13:53:20 +0200 Original-Received: from localhost ([::1]:41755 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmg5W-0003wz-QO for ged-emacs-devel@m.gmane.org; Wed, 21 Sep 2016 07:53:18 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmg3E-0002BO-EG for emacs-devel@gnu.org; Wed, 21 Sep 2016 07:50:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bmg3A-0008JV-A4 for emacs-devel@gnu.org; Wed, 21 Sep 2016 07:50:55 -0400 Original-Received: from sender163-mail.zoho.com ([74.201.84.163]:21417) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmg3A-0008J9-0e for emacs-devel@gnu.org; Wed, 21 Sep 2016 07:50:52 -0400 Original-Received: from localhost (x2f76e23.dyn.telefonica.de [2.247.110.35]) by mx.zohomail.com with SMTPS id 1474458648138128.40841061033666; Wed, 21 Sep 2016 04:50:48 -0700 (PDT) X-Mailer: git-send-email 2.10.0 In-Reply-To: <20160921115018.29576-1-rekado@elephly.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 74.201.84.163 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:207652 Archived-At: * 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. --- lisp/xwidget.el | 13 +++++++++++++ src/xwidget.c | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lisp/xwidget.el b/lisp/xwidget.el index ba05a16..0892030 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 8e6b475..a098150 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"); -- 2.10.0