[evolution/wip/webkit2] WebKitEditor - Fix handling of the inline images
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] WebKitEditor - Fix handling of the inline images
- Date: Thu, 7 Jul 2016 13:42:53 +0000 (UTC)
commit db2f9567353eff806182b8730a67f422ca619212
Author: Tomas Popela <tpopela redhat com>
Date: Thu Jul 7 15:42:00 2016 +0200
WebKitEditor - Fix handling of the inline images
modules/webkit-editor/e-webkit-editor.c | 20 +++++++------
.../web-extension/e-editor-dom-functions.c | 30 +++++++++++--------
.../web-extension/e-editor-dom-functions.h | 4 +-
.../web-extension/e-editor-web-extension.c | 4 +--
4 files changed, 31 insertions(+), 27 deletions(-)
---
diff --git a/modules/webkit-editor/e-webkit-editor.c b/modules/webkit-editor/e-webkit-editor.c
index 8b39a81..8058cef 100644
--- a/modules/webkit-editor/e-webkit-editor.c
+++ b/modules/webkit-editor/e-webkit-editor.c
@@ -1523,17 +1523,19 @@ webkit_editor_get_parts_for_inline_images (GVariant *images)
GVariantIter *iter;
GSList *parts = NULL;
- g_variant_get (images, "asss", &iter);
- while (g_variant_iter_loop (iter, "&s&s&s", &element_src, &name, &id)) {
- CamelMimePart *part;
-
- part = create_part_for_inline_image_from_element_data (
- element_src, name, id);
- parts = g_slist_prepend (parts, part);
+ if (g_variant_check_format_string (images, "a(sss)", FALSE)) {
+ g_variant_get (images, "a(sss)", &iter);
+ while (g_variant_iter_loop (iter, "(&s&s&s)", &element_src, &name, &id)) {
+ CamelMimePart *part;
+
+ part = create_part_for_inline_image_from_element_data (
+ element_src, name, id);
+ parts = g_slist_prepend (parts, part);
+ }
+ g_variant_iter_free (iter);
}
- g_variant_iter_free (iter);
- return g_slist_reverse (parts);
+ return parts ? g_slist_reverse (parts) : NULL;
}
static gchar *
diff --git a/modules/webkit-editor/web-extension/e-editor-dom-functions.c
b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
index bd31d75..c4f346f 100644
--- a/modules/webkit-editor/web-extension/e-editor-dom-functions.c
+++ b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
@@ -8266,9 +8266,11 @@ e_editor_dom_restore_images (EEditorPage *editor_page,
document = e_editor_page_get_document (editor_page);
- g_variant_get (inline_images_to_restore, "asss", &iter);
- while (g_variant_iter_loop (iter, "&s&s&s", &element_src, &name, &id))
+ g_variant_get (inline_images_to_restore, "a(sss)", &iter);
+ while (g_variant_iter_loop (iter, "(&s&s&s)", &element_src, &name, &id))
restore_image (document, id, element_src);
+
+ g_variant_iter_free (iter);
}
gchar *
@@ -8640,7 +8642,7 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
{
WebKitDOMDocument *document;
WebKitDOMNodeList *list;
- GVariant *result;
+ GVariant *result = NULL;
GVariantBuilder *builder = NULL;
GHashTable *added = NULL;
gint length, ii;
@@ -8656,7 +8658,7 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
goto background;
}
- builder = g_variant_builder_new (G_VARIANT_TYPE ("asss"));
+ builder = g_variant_builder_new (G_VARIANT_TYPE ("a(sss)"));
added = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
for (ii = 0; ii < length; ii++) {
@@ -8681,11 +8683,10 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
new_id = camel_header_msgid_generate (uid_domain);
g_variant_builder_add (
- builder, "sss", src, data_name, new_id);
+ builder, "(sss)", src, data_name, new_id);
cid = g_strdup_printf ("cid:%s", new_id);
g_hash_table_insert (added, src, new_id);
- g_free (new_id);
}
g_free (data_name);
}
@@ -8703,7 +8704,9 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
if (length == 0)
goto out;
if (!builder)
- builder = g_variant_builder_new (G_VARIANT_TYPE ("asss"));
+ builder = g_variant_builder_new (G_VARIANT_TYPE ("a(sss)"));
+ if (!added)
+ added = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
for (ii = 0; ii < length; ii++) {
const gchar *id;
@@ -8729,11 +8732,10 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
new_id = camel_header_msgid_generate (uid_domain);
g_variant_builder_add (
- builder, "sss", src, data_name, new_id);
+ builder, "(sss)", src, data_name, new_id);
cid = g_strdup_printf ("cid:%s", new_id);
g_hash_table_insert (added, src, new_id);
- g_free (new_id);
webkit_dom_element_set_attribute (
WEBKIT_DOM_ELEMENT (node), "background", cid, NULL);
@@ -8748,8 +8750,10 @@ e_editor_dom_get_inline_images_data (EEditorPage *editor_page,
if (added)
g_hash_table_destroy (added);
- result = g_variant_new ("asss", builder);
- g_variant_builder_unref (builder);
+ if (builder) {
+ result = g_variant_new ("a(sss)", builder);
+ g_variant_builder_unref (builder);
+ }
return result;
}
@@ -10915,9 +10919,9 @@ e_editor_dom_move_caret_into_element (EEditorPage *editor_page,
void
e_editor_dom_insert_base64_image (EEditorPage *editor_page,
+ const gchar *base64_content,
const gchar *filename,
- const gchar *uri,
- const gchar *base64_content)
+ const gchar *uri)
{
WebKitDOMDocument *document;
WebKitDOMElement *element, *selection_start_marker, *resizable_wrapper;
diff --git a/modules/webkit-editor/web-extension/e-editor-dom-functions.h
b/modules/webkit-editor/web-extension/e-editor-dom-functions.h
index c65cbef..51ed1d7 100644
--- a/modules/webkit-editor/web-extension/e-editor-dom-functions.h
+++ b/modules/webkit-editor/web-extension/e-editor-dom-functions.h
@@ -230,9 +230,9 @@ void e_editor_dom_move_caret_into_element
gboolean to_start);
void e_editor_dom_insert_base64_image
(EEditorPage *editor_page,
+ const gchar *base64_content,
const gchar *filename,
- const gchar *uri,
- const gchar *base64_content);
+ const gchar *uri);
void e_editor_dom_insert_image (EEditorPage *editor_page,
const gchar *uri);
void e_editor_dom_replace_image_src (EEditorPage *editor_page,
diff --git a/modules/webkit-editor/web-extension/e-editor-web-extension.c
b/modules/webkit-editor/web-extension/e-editor-web-extension.c
index fa72c7e..57a8596 100644
--- a/modules/webkit-editor/web-extension/e-editor-web-extension.c
+++ b/modules/webkit-editor/web-extension/e-editor-web-extension.c
@@ -1834,10 +1834,8 @@ handle_method_call (GDBusConnection *connection,
g_free (value);
- if ((flags & E_CONTENT_EDITOR_GET_INLINE_IMAGES) && from_domain && *from_domain &&
inline_images) {
+ if ((flags & E_CONTENT_EDITOR_GET_INLINE_IMAGES) && from_domain && *from_domain &&
inline_images)
e_editor_dom_restore_images (editor_page, inline_images);
- g_object_unref (inline_images);
- }
} else if (g_strcmp0 (method_name, "DOMInsertHTML") == 0) {
const gchar *html;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]