unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, 51712@debbugs.gnu.org
Subject: bug#51712: 29.0.50; [PATCH] New function `xwidget-webkit-load-html'
Date: Wed, 10 Nov 2021 21:03:26 +0800	[thread overview]
Message-ID: <87fss440yp.fsf@yahoo.com> (raw)
In-Reply-To: <83bl2s41kb.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 10 Nov 2021 14:50:28 +0200")

[-- Attachment #1: Type: text/plain, Size: 103 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

> Thanks.

Thank you!  How does the attached patch look to you?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-xwidget-webkit-load-html.patch --]
[-- Type: text/x-patch, Size: 3614 bytes --]

From ae73e4478a3fd7de2fc279122dc61e02ea66b217 Mon Sep 17 00:00:00 2001
From: Po Lu <luangruo@yahoo.com>
Date: Wed, 10 Nov 2021 21:01:40 +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 |  9 +++++++++
 etc/NEWS                 |  7 +++++++
 src/xwidget.c            | 41 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)

diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index b6bd14f887..b7d12269ae 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -6943,6 +6943,15 @@ Xwidgets
 signals an error.
 @end defun
 
+@defun xwidget-webkit-load-html xwidget text &optional base-uri
+Load @var{text}, a string, into @var{xwidget}, which should be a
+WebKit xwidget.  Any HTML markup in @var{text} will be processed
+by @var{xwidget} while rendering the text.
+
+Optional argument @var{base-uri}, which should be a string, specifies
+the absolute location of the web resources referenced by @var{text},
+to be used for resolving relative links in @var{text}.
+
 @node Buttons
 @section Buttons
 @cindex buttons in buffers
diff --git a/etc/NEWS b/etc/NEWS
index 3cad0995ac..bc693b3205 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -796,6 +796,13 @@ 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
+directly, in contrast to creating a temporary file to hold the
+markup, and passing the URI of the file as an argument to
+'xwidget-webkit-goto-uri'.
+
 +++
 *** 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 2ae635092d..fc05f4f570 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -2278,6 +2278,44 @@ DEFUN ("xwidget-webkit-finish-search", Fxwidget_webkit_finish_search,
   return Qnil;
 }
 
+#ifdef USE_GTK
+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 HTML markup.
+BASE_URI should be a string containing a URI that is used to locate
+resources with relative URLs, and if not specified, defaults
+to "about:blank".  */)
+  (Lisp_Object xwidget, Lisp_Object text, Lisp_Object base_uri)
+{
+  struct xwidget *xw;
+  WebKitWebView *webview;
+  char *data, *uri;
+
+  CHECK_XWIDGET (xwidget);
+  CHECK_STRING (text);
+  if (NILP (base_uri))
+    base_uri = build_string ("about:blank");
+  else
+    CHECK_STRING (base_uri);
+
+  base_uri = ENCODE_UTF_8 (base_uri);
+  text = ENCODE_UTF_8 (text);
+  xw = XXWIDGET (xwidget);
+
+  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 ();
+
+  return Qnil;
+}
+#endif
+
 void
 syms_of_xwidget (void)
 {
@@ -2316,6 +2354,9 @@ syms_of_xwidget (void)
   defsubr (&Sxwidget_webkit_next_result);
   defsubr (&Sxwidget_webkit_previous_result);
   defsubr (&Sset_xwidget_buffer);
+#ifdef USE_GTK
+  defsubr (&Sxwidget_webkit_load_html);
+#endif
 
   DEFSYM (QCxwidget, ":xwidget");
   DEFSYM (QCtitle, ":title");
-- 
2.31.1


  reply	other threads:[~2021-11-10 13:03 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <878rxx8w1i.fsf.ref@yahoo.com>
2021-11-09 10:26 ` bug#51712: 29.0.50; [PATCH] New function `xwidget-webkit-load-html' Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-09 13:21   ` Eli Zaretskii
2021-11-09 13:42     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-09 14:07       ` Eli Zaretskii
2021-11-09 23:56         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-10  0:02           ` Lars Ingebrigtsen
2021-11-10  0:14             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-10  0:22               ` Lars Ingebrigtsen
2021-11-10  2:44                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-10  5:59                   ` Lars Ingebrigtsen
2021-11-10  6:08                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-10 12:50                       ` Eli Zaretskii
2021-11-10 13:03                         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2021-11-10 14:25                           ` Eli Zaretskii
2021-11-11  0:31                             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-10  4:34   ` Richard Stallman
2021-11-10  4:37     ` Lars Ingebrigtsen
2021-11-11  3:37       ` Richard Stallman
2021-11-10  4:47     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-09 18:26   ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fss440yp.fsf@yahoo.com \
    --to=bug-gnu-emacs@gnu.org \
    --cc=51712@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=larsi@gnus.org \
    --cc=luangruo@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).