diff --git a/src/ecmascript/ecmascript-c.cpp b/src/ecmascript/ecmascript-c.cpp index 361dd547..68691051 100644 --- a/src/ecmascript/ecmascript-c.cpp +++ b/src/ecmascript/ecmascript-c.cpp @@ -13,17 +13,21 @@ #include "ecmascript/ecmascript-c.h" #ifdef CONFIG_MUJS #include "ecmascript/mujs.h" +#include "ecmascript/mujs/element.h" #endif #ifdef CONFIG_QUICKJS #include "ecmascript/quickjs.h" +#include "ecmascript/quickjs/element.h" #endif #ifdef CONFIG_ECMASCRIPT_SMJS #include "ecmascript/spidermonkey.h" +#include "ecmascript/spidermonkey/element.h" #endif #include "intl/libintl.h" #include "protocol/uri.h" #include "session/session.h" #include "session/task.h" +#include "terminal/event.h" #include "util/conv.h" #include "util/memory.h" #include "util/string.h" @@ -332,3 +336,15 @@ ecmascript_put_interpreter(struct ecmascript_interpreter *interpreter) mem_free(interpreter); --interpreter_count; } + +void +check_events_for_element(struct ecmascript_interpreter *ecmascript, dom_node *element, struct term_event *ev) +{ + const char *event_name = script_event_hook_name[SEVHOOK_ONKEYDOWN]; + + check_element_event(ecmascript, element, event_name, ev); + event_name = script_event_hook_name[SEVHOOK_ONKEYUP]; + check_element_event(ecmascript, element, event_name, ev); + event_name = script_event_hook_name[SEVHOOK_ONKEYPRESS]; + check_element_event(ecmascript, element, event_name, ev); +} diff --git a/src/ecmascript/ecmascript-c.h b/src/ecmascript/ecmascript-c.h index 9313df57..1c851ed8 100644 --- a/src/ecmascript/ecmascript-c.h +++ b/src/ecmascript/ecmascript-c.h @@ -1,6 +1,7 @@ #ifndef EL__ECMASCRIPT_ECMASCRIPT_C_H #define EL__ECMASCRIPT_ECMASCRIPT_C_H +#include "ecmascript/libdom/dom.h" #include "main/module.h" #ifdef __cplusplus @@ -11,6 +12,7 @@ struct document_options; struct document; struct ecmascript_interpreter; struct session; +struct term_event; struct uri; struct view_state; @@ -24,6 +26,8 @@ void ecmascript_protocol_handler(struct session *ses, struct uri *uri); void check_for_snippets(struct view_state *vs, struct document_options *options, struct document *document); void kill_ecmascript_timeouts(struct document *document); +void check_events_for_element(struct ecmascript_interpreter *interpreter, dom_node *element, struct term_event *ev); + extern struct module ecmascript_module; #ifdef __cplusplus diff --git a/src/viewer/text/Makefile b/src/viewer/text/Makefile index 37b6e3eb..bd8d8040 100644 --- a/src/viewer/text/Makefile +++ b/src/viewer/text/Makefile @@ -5,6 +5,6 @@ INCLUDES += $(TRE_CFLAGS) OBJS-$(CONFIG_MARKS) += marks.o -OBJS = draw.o form.obj link.obj search.o textarea.o view.obj vs.o +OBJS = draw.o form.obj link.obj search.o textarea.o view.o vs.o include $(top_srcdir)/Makefile.lib diff --git a/src/viewer/text/meson.build b/src/viewer/text/meson.build index 29c14b10..281aef41 100644 --- a/src/viewer/text/meson.build +++ b/src/viewer/text/meson.build @@ -4,4 +4,4 @@ if conf_data.get('CONFIG_MARKS') srcs += files('marks.c') endif -srcs += files('draw.c', 'form.cpp', 'link.cpp', 'search.c', 'textarea.c', 'view.cpp', 'vs.c') +srcs += files('draw.c', 'form.cpp', 'link.cpp', 'search.c', 'textarea.c', 'view.c', 'vs.c') diff --git a/src/viewer/text/view.cpp b/src/viewer/text/view.c similarity index 98% rename from src/viewer/text/view.cpp rename to src/viewer/text/view.c index 22d4fcf1..f5c1fe9e 100644 --- a/src/viewer/text/view.cpp +++ b/src/viewer/text/view.c @@ -35,16 +35,8 @@ #include "document/renderer.h" #include "document/view.h" -#ifdef CONFIG_ECMASCRIPT_SMJS -#include "ecmascript/spidermonkey/element.h" -#endif - -#ifdef CONFIG_QUICKJS -#include "ecmascript/quickjs/element.h" -#endif - -#ifdef CONFIG_MUJS -#include "ecmascript/mujs/element.h" +#if defined(CONFIG_ECMASCRIPT_SMJS) || defined(CONFIG_QUICKJS) || defined(CONFIG_MUJS) +#include "ecmascript/ecmascript-c.h" #endif #include "intl/charsets.h" @@ -1329,13 +1321,7 @@ try_form_action(struct session *ses, struct document_view *doc_view, dom_node *element = (dom_node *)find_in_map(mapa, link->element_offset); if (element) { - const char *event_name = script_event_hook_name[SEVHOOK_ONKEYDOWN]; - - check_element_event(doc_view->vs->ecmascript, element, event_name, ev); - event_name = script_event_hook_name[SEVHOOK_ONKEYUP]; - check_element_event(doc_view->vs->ecmascript, element, event_name, ev); - event_name = script_event_hook_name[SEVHOOK_ONKEYPRESS]; - check_element_event(doc_view->vs->ecmascript, element, event_name, ev); + check_events_for_element(doc_view->vs->ecmascript, element, ev); } }