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.
This commit is contained in:
Po Lu 2021-11-10 21:01:40 +08:00
parent d3ccf0895d
commit 3d253fa3aa
3 changed files with 58 additions and 0 deletions

View file

@ -6943,6 +6943,16 @@ Finish a search operation started with @code{xwidget-webkit-search} in
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}.
@end defun
@node Buttons
@section Buttons
@cindex buttons in buffers

View file

@ -735,6 +735,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

View file

@ -2278,6 +2278,44 @@ using `xwidget-webkit-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");