summaryrefslogtreecommitdiff
path: root/src/webextension
diff options
context:
space:
mode:
authorDaniel Carl <danielcarl@gmx.de>2017-04-12 00:03:03 +0200
committerDaniel Carl <danielcarl@gmx.de>2017-04-12 00:05:30 +0200
commit246fd134d3850610d4c6d49f02783ae82e1b63fa (patch)
treed5af31e22eb63f0805138f67853d766c88ce45bd /src/webextension
parentcec450c50e5f40f6ea3b72f3b65423f527f1ca80 (diff)
Use script message handler to track elements focus changes.
Use script message handler instead of dbus to track for focused editable elements to switch vimb into input mode or back to normal mode.
Diffstat (limited to 'src/webextension')
-rw-r--r--src/webextension/ext-main.c66
1 files changed, 6 insertions, 60 deletions
diff --git a/src/webextension/ext-main.c b/src/webextension/ext-main.c
index ae1fe72..97e4261 100644
--- a/src/webextension/ext-main.c
+++ b/src/webextension/ext-main.c
@@ -36,13 +36,13 @@ static void add_onload_event_observers(WebKitDOMDocument *doc,
static void emit_page_created(GDBusConnection *connection, guint64 pageid);
static void emit_page_created_pending(GDBusConnection *connection);
static void queue_page_created_signal(guint64 pageid);
+#if 0
static void dbus_emit_signal(const char *name, WebKitWebExtension* extension,
GVariant *data);
+#endif
static void dbus_handle_method_call(GDBusConnection *conn, const char *sender,
const char *object_path, const char *interface_name, const char *method,
GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data);
-static void on_editable_change_focus(WebKitDOMEventTarget *target,
- WebKitDOMEvent *event, WebKitWebExtension *extension);
static void on_page_created(WebKitWebExtension *ext, WebKitWebPage *webpage, gpointer data);
static void on_web_page_document_loaded(WebKitWebPage *webpage, gpointer extension);
static gboolean on_web_page_send_request(WebKitWebPage *webpage, WebKitURIRequest *request,
@@ -57,9 +57,6 @@ static const GDBusInterfaceVTable interface_vtable = {
static const char introspection_xml[] =
"<node>"
" <interface name='" VB_WEBEXTENSION_INTERFACE "'>"
- " <signal name='EditableChangeFocus'>"
- " <arg type='b' name='focused' direction='out'/>"
- " </signal>"
" <method name='FocusInput'>"
" </method>"
" <signal name='PageCreated'>"
@@ -180,6 +177,7 @@ static void on_dbus_connection_created(GObject *source_object,
static void add_onload_event_observers(WebKitDOMDocument *doc,
WebKitWebExtension *extension)
{
+#if 0 /* might soon be use for some events */
WebKitDOMEventTarget *target;
/* Add the document to the table of known documents or if already exists
@@ -192,15 +190,7 @@ static void add_onload_event_observers(WebKitDOMDocument *doc,
* function is called with content document of an iframe. Else the event
* observing does not work. */
target = WEBKIT_DOM_EVENT_TARGET(webkit_dom_document_get_default_view(doc));
-
- webkit_dom_event_target_add_event_listener(target, "focus",
- G_CALLBACK(on_editable_change_focus), TRUE, extension);
- webkit_dom_event_target_add_event_listener(target, "blur",
- G_CALLBACK(on_editable_change_focus), TRUE, extension);
- /* Check for focused editable elements also if they where focused before
- * the event observer where set up. */
- /* TODO this is not needed for strict-focus=on */
- on_editable_change_focus(target, NULL, extension);
+#endif
}
/**
@@ -255,6 +245,7 @@ static void queue_page_created_signal(guint64 pageid)
ext.page_created_signals = g_array_append_val(ext.page_created_signals, pageid);
}
+#if 0
/**
* Emits a signal over dbus.
*
@@ -279,6 +270,7 @@ static void dbus_emit_signal(const char *name, WebKitWebExtension* extension,
g_error_free(error);
}
}
+#endif
/**
* Handle dbus method calls.
@@ -305,52 +297,6 @@ static void dbus_handle_method_call(GDBusConnection *conn, const char *sender,
}
/**
- * Callback called if a editable element changes it focus state.
- * Event target may be a WebKitDOMDocument (in case of iframe) or a
- * WebKitDOMDOMWindow.
- */
-static void on_editable_change_focus(WebKitDOMEventTarget *target,
- WebKitDOMEvent *event, WebKitWebExtension *extension)
-{
- gboolean input_focus;
- WebKitDOMDocument *doc;
- WebKitDOMElement *active;
-
- if (WEBKIT_DOM_IS_DOM_WINDOW(target)) {
- g_object_get(target, "document", &doc, NULL);
- } else {
- /* target is a doc document */
- doc = WEBKIT_DOM_DOCUMENT(target);
- }
- active = webkit_dom_document_get_active_element(doc);
- /* Don't do anything if there is no active element or the active element
- * is the same as before. */
- if (!active || active == ext.active) {
- return;
- }
- if (WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT(active)) {
- WebKitDOMHTMLIFrameElement *iframe;
- WebKitDOMDocument *subdoc;
-
- iframe = WEBKIT_DOM_HTML_IFRAME_ELEMENT(active);
- subdoc = webkit_dom_html_iframe_element_get_content_document(iframe);
- add_onload_event_observers(subdoc, extension);
- return;
- }
-
- ext.active = active;
-
- /* Check if the active element is an editable element. */
- input_focus = ext_dom_is_editable(active);
- if (input_focus != ext.input_focus) {
- ext.input_focus = input_focus;
-
- dbus_emit_signal("EditableChangeFocus", extension,
- g_variant_new("(b)", input_focus));
- }
-}
-
-/**
* Callback for web extensions page-created signal.
*/
static void on_page_created(WebKitWebExtension *extension, WebKitWebPage *webpage, gpointer data)