mirror of
https://github.com/rkd77/elinks.git
synced 2025-09-21 19:46:23 -04:00
[ecmascript] Move location_goto to ecmascript.c
This commit is contained in:
@@ -671,6 +671,52 @@ document_parse(struct document *document)
|
||||
return (void *)docu;
|
||||
}
|
||||
|
||||
static void
|
||||
delayed_goto(void *data)
|
||||
{
|
||||
struct delayed_goto *deg = data;
|
||||
|
||||
assert(deg);
|
||||
if (deg->vs->doc_view
|
||||
&& deg->vs->doc_view == deg->vs->doc_view->session->doc_view) {
|
||||
goto_uri_frame(deg->vs->doc_view->session, deg->uri,
|
||||
deg->vs->doc_view->name,
|
||||
CACHE_MODE_NORMAL);
|
||||
}
|
||||
done_uri(deg->uri);
|
||||
mem_free(deg);
|
||||
}
|
||||
|
||||
void
|
||||
location_goto(struct document_view *doc_view, char *url)
|
||||
{
|
||||
char *new_abs_url;
|
||||
struct uri *new_uri;
|
||||
struct delayed_goto *deg;
|
||||
|
||||
/* Workaround for bug 611. Does not crash, but may lead to infinite loop.*/
|
||||
if (!doc_view) return;
|
||||
new_abs_url = join_urls(doc_view->document->uri,
|
||||
trim_chars(url, ' ', 0));
|
||||
if (!new_abs_url)
|
||||
return;
|
||||
new_uri = get_uri(new_abs_url, 0);
|
||||
mem_free(new_abs_url);
|
||||
if (!new_uri)
|
||||
return;
|
||||
deg = mem_calloc(1, sizeof(*deg));
|
||||
if (!deg) {
|
||||
done_uri(new_uri);
|
||||
return;
|
||||
}
|
||||
assert(doc_view->vs);
|
||||
deg->vs = doc_view->vs;
|
||||
deg->uri = new_uri;
|
||||
/* It does not seem to be very safe inside of frames to
|
||||
* call goto_uri() right away. */
|
||||
register_bottom_half(delayed_goto, deg);
|
||||
}
|
||||
|
||||
struct module ecmascript_module = struct_module(
|
||||
/* name: */ N_("ECMAScript"),
|
||||
/* options: */ ecmascript_options,
|
||||
|
Reference in New Issue
Block a user