[evolution/wip-webkit2: 11/11] Port e-mail-display-get-selection to WK2
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip-webkit2: 11/11] Port e-mail-display-get-selection to WK2
- Date: Fri, 18 Oct 2013 06:32:02 +0000 (UTC)
commit 38c3096db0d3e4956063ce075d0155e2aaeb8f26
Author: Tomas Popela <tpopela redhat com>
Date: Fri Oct 18 08:29:40 2013 +0200
Port e-mail-display-get-selection to WK2
mail/e-mail-display.c | 85 ++++++++++++++----------------------------------
1 files changed, 25 insertions(+), 60 deletions(-)
---
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index d4a0277..179477b 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -1924,73 +1924,38 @@ e_mail_display_set_status (EMailDisplay *display,
g_free (str);
}
-static gchar *
-mail_display_get_frame_selection_text (WebKitDOMElement *iframe)
-{
- WebKitDOMDocument *document;
- WebKitDOMDOMWindow *window;
- WebKitDOMDOMSelection *selection;
- WebKitDOMNodeList *frames;
- gulong ii, length;
-
- document = webkit_dom_html_iframe_element_get_content_document (
- WEBKIT_DOM_HTML_IFRAME_ELEMENT (iframe));
- window = webkit_dom_document_get_default_view (document);
- selection = webkit_dom_dom_window_get_selection (window);
- if (selection && (webkit_dom_dom_selection_get_range_count (selection) > 0)) {
- WebKitDOMRange *range;
-
- range = webkit_dom_dom_selection_get_range_at (selection, 0, NULL);
- if (range != NULL)
- return webkit_dom_range_to_string (range, NULL);
- }
-
- frames = webkit_dom_document_get_elements_by_tag_name (
- document, "IFRAME");
- length = webkit_dom_node_list_get_length (frames);
- for (ii = 0; ii < length; ii++) {
- WebKitDOMNode *node;
- gchar *text;
-
- node = webkit_dom_node_list_item (frames, ii);
-
- text = mail_display_get_frame_selection_text (
- WEBKIT_DOM_ELEMENT (node));
-
- if (text != NULL)
- return text;
- }
-
- return NULL;
-}
-
gchar *
-e_mail_display_get_selection_plain_text (EMailDisplay *display)
+e_mail_display_get_selection_plain_text_sync (EMailDisplay *display)
{
- WebKitDOMDocument *document;
- WebKitDOMNodeList *frames;
- gulong ii, length;
+ GDBusProxy *web_extension;
- g_return_val_if_fail (E_IS_MAIL_DISPLAY (display), NULL);
+ g_return_if_fail (E_IS_MAIL_DISPLAY (display));
if (!webkit_web_view_has_selection (WEBKIT_WEB_VIEW (display)))
return NULL;
- document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (display));
- frames = webkit_dom_document_get_elements_by_tag_name (document, "IFRAME");
- length = webkit_dom_node_list_get_length (frames);
-
- for (ii = 0; ii < length; ii++) {
- gchar *text;
- WebKitDOMNode *node;
-
- node = webkit_dom_node_list_item (frames, ii);
-
- text = mail_display_get_frame_selection_text (
- WEBKIT_DOM_ELEMENT (node));
-
- if (text != NULL)
- return text;
+ web_extension = e_web_view_get_web_extension_proxy (E_WEB_VIEW (display));
+ if (web_extension) {
+ GVariant *result;
+ gchar *text_content = NULL;
+
+ result = g_dbus_proxy_call_sync (
+ web_extension,
+ "GetDocumentContentText",
+ g_variant_new (
+ "(t)",
+ webkit_web_view_get_page_id (
+ WEBKIT_WEB_VIEW (web_view))),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+
+ if (result) {
+ g_variant_get (result, "(s)", &text_content);
+ g_variant_unref (result);
+ return text_content;
+ }
}
return NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]