From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#51712: 29.0.50; [PATCH] New function `xwidget-webkit-load-html' Date: Tue, 09 Nov 2021 18:26:17 +0800 Message-ID: <878rxx8w1i.fsf@yahoo.com> References: <878rxx8w1i.fsf.ref@yahoo.com> Reply-To: Po Lu Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="539"; mail-complaints-to="usenet@ciao.gmane.io" To: 51712@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 09 11:27:12 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mkOLQ-000AU4-6w for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 09 Nov 2021 11:27:12 +0100 Original-Received: from localhost ([::1]:54612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mkOLO-0006Pt-8T for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 09 Nov 2021 05:27:10 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:60628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mkOLG-0006Pg-RH for bug-gnu-emacs@gnu.org; Tue, 09 Nov 2021 05:27:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49402) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mkOLG-0000hZ-Iv for bug-gnu-emacs@gnu.org; Tue, 09 Nov 2021 05:27:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mkOLG-0000zg-EY for bug-gnu-emacs@gnu.org; Tue, 09 Nov 2021 05:27:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Po Lu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 09 Nov 2021 10:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 51712 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16364535963776 (code B ref -1); Tue, 09 Nov 2021 10:27:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 9 Nov 2021 10:26:36 +0000 Original-Received: from localhost ([127.0.0.1]:60946 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mkOKq-0000yq-FY for submit@debbugs.gnu.org; Tue, 09 Nov 2021 05:26:36 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:56268) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mkOKl-0000ye-1t for submit@debbugs.gnu.org; Tue, 09 Nov 2021 05:26:35 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:60554) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mkOKk-0006PH-U3 for bug-gnu-emacs@gnu.org; Tue, 09 Nov 2021 05:26:30 -0500 Original-Received: from sonic308-56.consmr.mail.ne1.yahoo.com ([66.163.187.31]:41310) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mkOKh-0000ZI-Rh for bug-gnu-emacs@gnu.org; Tue, 09 Nov 2021 05:26:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1636453584; bh=t81I97hmPfYiB0cDKpmPbWbXdkRprhWDPyeIuBz9c1g=; h=From:To:Subject:Date:References:From:Subject:Reply-To; b=gx0vAMRbJemDZzRzxLAuA0P1gOV0XQBTbLzaV+oc4moIu5scq6lTWclUmhQHFo3mCGShb79tLKzHjDz7LmYJcdi5mdKd4buECUFvBoyQtWEo5ydW60b1WPr3pshdxBj2B30eU0JZyBOzGUNXshnUKDgOHjUL0R6ThiwLA+ZKea3ztIff6rL7Ui8feOjyZv7dWn9Bfs8bGHI6hbEHgfMUJ/t2XdhRGjkm4ktQg3ley1OrSkrJzX+RlYEqOexFVG3gCxLLTY/HqVQJkM/hLCSR5itUMVSr2JtwCL+IUWG45hO9rVTUhc2gEo6mFLQr3uDDD8EMjZqKPoj50685GDC4Fg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1636453584; bh=fRMCVXLi9tPufqEtF4/5Csbw/SEXUuuMzJINtiVE6BC=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=EIjVdjYeiY/ToUKFNQzcgjzFyJuCRyGCZEK8GfgpY2gxGYxmBCycNhDWMhhJzZfn2Lja7KJvSQwI3/5SVF6z3XaHXz5vEpTPB4GG7CEwGedh//cntgeaQP2hepW6JTOCjhSqlutObTdrVkoQ94bXN0pzZ6XRM4F9gHl+jf5geLGcKkKEpWDpITbWGD9S1r9+6xGmMACu+4oUc7tvIZZesPnAHQu6WYXndsAAjg4x8KwyTwwdM54Pvky5yE2LvZk1R1z+LBYYamkdliq2RHlsp54tA93E/shxEaPJUw3urjEkCUl8aR2G/rHxKNkCjwVwKCcGcnOks2UcVK2lqbmhiQ== X-YMail-OSG: vcNH58wVM1nbwzmipLZGpjFcxs4DLxTtp4dLxRqJQtbHxnDTW52oEDobC9OXGzF r1LR.q.HmX_u0IVF93EJARacQT7gNVZv1LrpRSNn5.IR.kgZaAxTdG7k14l.kve6Ysrs6HZdZbqW pmaGU_qb8vOP798gq_EiJmq6izYC9i7GoUseaioez1lZOtn65r2kpxEdi_Ba6UAmeUr9MPnUOPdR UbQgFfqP5Uzd6utl_TPLkHtQYbVwRj61_0_dd8N8_LjGR1o8nyBgHM6QZA7VzB8TEmxwU9NY6eqi nJWuZ7QiPhvOSKt2ZupdLyVwO55zSR9AvdCsgkqoDpIoR6rxoG4SpVIaDH9DT6IBkPUWA4YqPuZJ Y785w4nhciCnWKelMHb2qerYaW7GD.p9y.CtvimUeP_ld6D.QxEvqXlFDtHUpxws..wK66CMQrAy qusOROEp6FsAZFTUpQ.VEpeVeTShLHVm.VYygupqB.jnbFxDV33TCtxj6AnogFFtgjbvgmPhL2nR IGqlJ2aa3GpiQHgliSIKBWJJOlTqlkrEvGWQIzzVEgP1lsDwBnuv7jEkIPyF3c1WNdI_sT8Wn7Qh LEx6Y4IsFENdQch7cXXUIOblEmOPWGb1W42aFQJSdLSfxwZHiqGaoOO6d8yIWpZbeknX2emrrFeE K1SyGtbwt9OoORRabpNg1xeFKdkXheLRDZBxPDoj4E5BpMcAueOgZpZdi8SgPaIA1cxRJtblC8JF i4MrKBjhHA.qwbdWkkYuQkKdBi0FJmneC5Wl9SNrDE30f3p82rA42dGRI5U3bPGobmaH7P2aQPwj hOMF7wxvx_VbqSUZbFuDEV6Oeh7e.nZSa70MrsfOow X-Sonic-MF: Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ne1.yahoo.com with HTTP; Tue, 9 Nov 2021 10:26:24 +0000 Original-Received: by kubenode504.mail-prod1.omega.sg3.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 98241121cd4db3e1cdf3cfa7e3a0da97; Tue, 09 Nov 2021 10:26:22 +0000 (UTC) X-Mailer: WebService/1.1.19266 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Received-SPF: pass client-ip=66.163.187.31; envelope-from=luangruo@yahoo.com; helo=sonic308-56.consmr.mail.ne1.yahoo.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:219435 Archived-At: --=-=-= Content-Type: text/plain Hopefully this allows to reduce the amount of JavaScript hacks needed to load HTML into a widget. It also lets you customize the base URI WebKit uses to find web resources, which you can't do from JavaScript. Thanks. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Add-xwidget-webkit-load-html.patch >From f368cd47dd5a2d232024ef1fb0f95f4b0c15e566 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 9 Nov 2021 18:24:03 +0800 Subject: [PATCH] Add `xwidget-webkit-load-html' * doc/lispref/display.texi (Xwidgets): Document new function. * etc/NEWS: Announce new function. * src/xwidget.c (Fxwidget_webkit_load_html): New function. (syms_of_xwidget): Define new subr. --- doc/lispref/display.texi | 10 ++++++++++ etc/NEWS | 5 +++++ src/xwidget.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b6bd14f887..3ccc755391 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -6943,6 +6943,16 @@ Xwidgets signals an error. @end defun +@defun xwidget-webkit-load-html xwidget text base-uri +Load @var{text} into @var{xwidget}, which should be a WebKit xwidget. +@var{text} will be treated as HTML markup, and rendered by +@var{xwidget}. + +For the purpose of controlling the location where web resources will +be found, you can optionally specify a base URI as a string in +@var{base-uri}, which defaults to @samp{about:blank}. +@end defun + @node Buttons @section Buttons @cindex buttons in buffers diff --git a/etc/NEWS b/etc/NEWS index 807f31fa33..93c161025b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -792,6 +792,11 @@ what the widget will actually receive. On GTK+, only key and function key events are implemented. ++++ +*** New function 'xwidget-webkit-load-html'. +This function is used to load HTML text into WebKit xwidgets, without +having to create a temporary file or URL. + +++ *** New functions for performing searches on WebKit xwidgets. Some new functions, such as 'xwidget-webkit-search', have been added diff --git a/src/xwidget.c b/src/xwidget.c index fc76ce307e..22893bfe2e 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -2139,6 +2139,43 @@ DEFUN ("xwidget-webkit-finish-search", Fxwidget_webkit_finish_search, return Qnil; } +DEFUN ("xwidget-webkit-load-html", Fxwidget_webkit_load_html, + Sxwidget_webkit_load_html, 2, 3, 0, + doc: /* Make XWIDGET's WebKit widget render text. +XWIDGET should be a WebKit xwidget, that will receive TEXT. TEXT +should be a string that will be displayed by XWIDGET as plain text. +BASE_URI will be a URI that is used to fetch resources, and if not +specified, is treated as equivalent to `about:blank'. */) + (Lisp_Object xwidget, Lisp_Object text, Lisp_Object base_uri) +{ + struct xwidget *xw; +#ifdef USE_GTK + WebKitWebView *webview; + char *data, *uri; +#endif + + CHECK_XWIDGET (xwidget); + CHECK_STRING (text); + if (NILP (base_uri)) + base_uri = build_string ("about:blank"); + CHECK_STRING (base_uri); + base_uri = ENCODE_UTF_8 (base_uri); + text = ENCODE_UTF_8 (text); + xw = XXWIDGET (xwidget); + +#ifdef USE_GTK + data = SSDATA (text); + uri = SSDATA (base_uri); + webview = WEBKIT_WEB_VIEW (xw->widget_osr); + + block_input (); + webkit_web_view_load_html (webview, data, uri); + unblock_input (); +#endif + + return Qnil; +} + void syms_of_xwidget (void) { @@ -2177,6 +2214,7 @@ syms_of_xwidget (void) defsubr (&Sxwidget_webkit_next_result); defsubr (&Sxwidget_webkit_previous_result); defsubr (&Sset_xwidget_buffer); + defsubr (&Sxwidget_webkit_load_html); DEFSYM (QCxwidget, ":xwidget"); DEFSYM (QCtitle, ":title"); -- 2.31.1 --=-=-=--