mirror of
https://github.com/rkd77/elinks.git
synced 2024-09-30 03:26:23 -04:00
ecamscript: Delayed submit_given_form.
This probably fixes many bugs.
This commit is contained in:
parent
8c30a2a6c7
commit
426e5f2b3b
@ -947,9 +947,16 @@ js_form_submit(struct SEE_interpreter *interp, struct SEE_object *self,
|
||||
(struct js_form *)thisobj);
|
||||
struct form_view *fv = js_form->fv;
|
||||
struct form *form = find_form_by_form_view(doc_view->document, fv);
|
||||
struct delayed_submit_form *dsf;
|
||||
|
||||
assert(form);
|
||||
submit_given_form(ses, doc_view, form, 0);
|
||||
dsf = mem_calloc(1, sizeof(*dsf));
|
||||
if (dsf) {
|
||||
dsf->ses = ses;
|
||||
dsf->vs = vs;
|
||||
dsf->form = form;
|
||||
register_bottom_half(delayed_submit_given_form, dsf);
|
||||
}
|
||||
SEE_SET_BOOLEAN(res, 0);
|
||||
}
|
||||
|
||||
|
@ -1065,6 +1065,7 @@ form_submit(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||
struct session *ses;
|
||||
struct form_view *fv;
|
||||
struct form *form;
|
||||
struct delayed_submit_form *dsf;
|
||||
|
||||
if (!JS_InstanceOf(ctx, obj, (JSClass *) &form_class, argv)) return JS_FALSE;
|
||||
parent_doc = JS_GetParent(ctx, obj);
|
||||
@ -1081,7 +1082,13 @@ form_submit(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||
form = find_form_by_form_view(doc_view->document, fv);
|
||||
|
||||
assert(form);
|
||||
submit_given_form(ses, doc_view, form, 0);
|
||||
dsf = mem_calloc(1, sizeof(*dsf));
|
||||
if (dsf) {
|
||||
dsf->ses = ses;
|
||||
dsf->vs = vs;
|
||||
dsf->form = form;
|
||||
register_bottom_half(delayed_submit_given_form, dsf);
|
||||
}
|
||||
|
||||
boolean_to_jsval(ctx, rval, 0);
|
||||
|
||||
|
@ -1363,6 +1363,13 @@ submit_given_form(struct session *ses, struct document_view *doc_view,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
delayed_submit_given_form(struct delayed_submit_form *dsf)
|
||||
{
|
||||
submit_given_form(dsf->ses, dsf->vs->doc_view, dsf->form, 0);
|
||||
mem_free(dsf);
|
||||
}
|
||||
|
||||
void
|
||||
auto_submit_form(struct session *ses)
|
||||
{
|
||||
|
@ -89,6 +89,12 @@ struct submitted_value {
|
||||
int position;
|
||||
};
|
||||
|
||||
struct delayed_submit_form {
|
||||
struct session *ses;
|
||||
struct view_state *vs;
|
||||
struct form *form;
|
||||
};
|
||||
|
||||
struct submitted_value *init_submitted_value(unsigned char *name, unsigned char *value, enum form_type type, struct form_control *fc, int position);
|
||||
void done_submitted_value(struct submitted_value *sv);
|
||||
void done_submitted_value_list(struct list_head *list);
|
||||
@ -114,6 +120,7 @@ void draw_forms(struct terminal *term, struct document_view *doc_view);
|
||||
enum frame_event_status reset_form(struct session *ses, struct document_view *doc_view, int a);
|
||||
enum frame_event_status submit_form(struct session *ses, struct document_view *doc_view, int do_reload);
|
||||
void submit_given_form(struct session *ses, struct document_view *doc_view, struct form *form, int do_reload);
|
||||
void delayed_submit_given_form(struct delayed_submit_form *dsf);
|
||||
void auto_submit_form(struct session *ses);
|
||||
void do_reset_form(struct document_view *doc_view, struct form *form);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user