[evolution/wip-webkit2] Move EMailReader to WK2
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip-webkit2] Move EMailReader to WK2
- Date: Tue, 29 Oct 2013 15:10:22 +0000 (UTC)
commit da0ee8b32ecd30cfd523b0dea36d34caade5884c
Author: Tomas Popela <tpopela redhat com>
Date: Tue Oct 29 14:22:02 2013 +0100
Move EMailReader to WK2
e-util/e-dom-utils.c | 14 ++++++++
e-util/e-dom-utils.h | 3 +-
mail/e-mail-reader.c | 54 ++++++++++++++++-------------
web-extensions/evolution-web-extension.c | 19 ++++++++++
4 files changed, 65 insertions(+), 25 deletions(-)
---
diff --git a/e-util/e-dom-utils.c b/e-util/e-dom-utils.c
index 3847488..475e934 100644
--- a/e-util/e-dom-utils.c
+++ b/e-util/e-dom-utils.c
@@ -469,3 +469,17 @@ e_dom_utils_eab_contact_formatter_bind_dom (WebKitDOMDocument *document)
}
}
+gchar *
+e_dom_utils_get_active_element_name (WebKitDOMDocument *document)
+{
+ WebKitDOMElement *element;
+ /* FIXME XXX Do version that checks underlying documents */
+
+ element = webkit_dom_html_document_get_active_element (
+ WEBKIT_DOM_HTML_DOCUMENT (document));
+ if (!element)
+ return NULL;
+
+ return webkit_dom_node_get_local_name (WEBKIT_DOM_NODE (element));
+}
+
diff --git a/e-util/e-dom-utils.h b/e-util/e-dom-utils.h
index 960b677..b8a6989 100644
--- a/e-util/e-dom-utils.h
+++ b/e-util/e-dom-utils.h
@@ -48,7 +48,8 @@ void e_dom_utils_add_css_rule_into_style_sheet
const gchar *style);
void e_dom_utils_eab_contact_formatter_bind_dom
(WebKitDOMDocument *document);
-
+gchar * e_dom_utils_get_active_element_name
+ (WebKitDOMDocument *document);
G_END_DECLS
#endif /* E_DOM_UTILS_H */
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index a0e24ab..984f687 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -1777,11 +1777,11 @@ action_mail_zoom_out_cb (GtkAction *action,
display = e_mail_reader_get_mail_display (reader);
/* There is no webkit_web_view_zoom_out function in WK2, so emulate it */
- zoom_level = webkit_web_view_get_zoom_level (WEBKIT_WEB_VIEW (web_view));
+ zoom_level = webkit_web_view_get_zoom_level (WEBKIT_WEB_VIEW (display));
/* zoom-step in WK1 was 0.1 */
zoom_level -= 0.1;
if (zoom_level >= 0)
- webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW (web_view), zoom_level);
+ webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW (display), zoom_level);
/* FIXME XXX
webkit_web_view_zoom_out (WEBKIT_WEB_VIEW (web_view));*/
}
@@ -2462,32 +2462,38 @@ mail_reader_key_press_event_cb (EMailReader *reader,
const gchar *action_name;
if (!gtk_widget_has_focus (GTK_WIDGET (reader))) {
- WebKitWebFrame *frame;
- WebKitDOMDocument *dom;
- WebKitDOMElement *element;
EMailDisplay *display;
- gchar *name = NULL;
+ GDBusProxy *web_extension;
display = e_mail_reader_get_mail_display (reader);
- frame = webkit_web_view_get_focused_frame (WEBKIT_WEB_VIEW (display));
-
- if (frame != NULL) {
- dom = webkit_web_frame_get_dom_document (frame);
- /* intentionally used "static_cast" */
- element = webkit_dom_html_document_get_active_element ((WebKitDOMHTMLDocument *) dom);
-
- if (element != NULL)
- name = webkit_dom_node_get_node_name (WEBKIT_DOM_NODE (element));
-
- /* If INPUT or TEXTAREA has focus,
- * then any key press should go there. */
- if (name != NULL &&
- (g_ascii_strcasecmp (name, "INPUT") == 0 ||
- g_ascii_strcasecmp (name, "TEXTAREA") == 0)) {
- g_free (name);
- return FALSE;
+ web_extension = e_web_view_get_web_extension_proxy (E_WEB_VIEW (display));
+ if (web_extension) {
+ GVariant *result;
+ const gchar *element_name = NULL;
+
+ result = g_dbus_proxy_call_sync (
+ web_extension,
+ "GetActiveElementName",
+ g_variant_new (
+ "(t)",
+ webkit_web_view_get_page_id (
+ WEBKIT_WEB_VIEW (display))),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ NULL);
+
+ if (result) {
+ element_name = g_variant_get_string (result, NULL);
+ g_variant_unref (result);
+
+ if (element_name && *element_name) {
+ if (g_strcmp0 (element_name, "input") == 0 ||
+ g_strcmp0 (element_name, "textarea") == 0) {
+ return FALSE;
+ }
+ }
}
- g_free (name);
}
}
diff --git a/web-extensions/evolution-web-extension.c b/web-extensions/evolution-web-extension.c
index 733e119..9b9de91 100644
--- a/web-extensions/evolution-web-extension.c
+++ b/web-extensions/evolution-web-extension.c
@@ -58,6 +58,10 @@ static const char introspection_xml[] =
" <method name='EABContactFormatterBindDOM'>"
" <arg type='t' name='page_id' direction='in'/>"
" </method>"
+" <method name='GetActiveElementName'>"
+" <arg type='t' name='page_id' direction='in'/>"
+" <arg type='s' name='element_name' direction='out'/>"
+" </method>"
" </interface>"
"</node>";
@@ -206,6 +210,21 @@ handle_method_call (GDBusConnection *connection,
e_dom_utils_eab_contact_formatter_bind_dom (document);
g_dbus_method_invocation_return_value (invocation, NULL);
+ } else if (g_strcmp0 (method_name, "GetActiveElementName") == 0) {
+ gchar *element_name;
+
+ g_variant_get (parameters, "(t)", &page_id);
+ web_page = get_webkit_web_page_or_return_dbus_error (invocation, web_extension, page_id);
+ if (!web_page)
+ return;
+
+ document = webkit_web_page_get_dom_document (web_page);
+ element_name = e_dom_utils_get_active_element_name (document);
+
+ g_dbus_method_invocation_return_value (
+ invocation, g_variant_new ("(s)", element_name));
+
+ g_free (element_name);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]