From 2d251a9597311d4eaaa73556c2c72af5fe62a86e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 29 May 2013 06:57:14 -0400 Subject: Distinguish "attachment-wrapper" elements from attachments. The HTML for attachments always has the following form:
The
element controls attachment visibility through its "display" style attribute, which is either "block" or "none". Problem is the was getting the same ID as its parent
element. So when either element was requested by ID, in certain cases the wrong element was returned and caused misbehavior and console warnings. Solve this by adding a "wrapper" suffix to the
element ID. So in the example above, id="something" gets the , whereas id="something.wrapper" gets the
element. --- mail/e-mail-display.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'mail') diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c index a809d231d1..ac9eda0738 100644 --- a/mail/e-mail-display.c +++ b/mail/e-mail-display.c @@ -702,8 +702,9 @@ attachment_button_expanded (GObject *object, WebKitDOMDocument *document; WebKitDOMElement *element; WebKitDOMCSSStyleDeclaration *css; + const gchar *attachment_part_id; + gchar *element_id; gboolean expanded; - gchar *id; d ( printf ("Attachment button %s has been %s!\n", @@ -715,8 +716,11 @@ attachment_button_expanded (GObject *object, gtk_widget_get_visible (GTK_WIDGET (button)); document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (display)); - element = find_element_by_id ( - document, g_object_get_data (object, "attachment_id")); + attachment_part_id = g_object_get_data (object, "attachment_id"); + + element_id = g_strconcat (attachment_part_id, ".wrapper", NULL); + element = find_element_by_id (document, element_id); + g_free (element_id); if (!WEBKIT_DOM_IS_ELEMENT (element)) { d ( @@ -731,16 +735,12 @@ attachment_button_expanded (GObject *object, webkit_dom_css_style_declaration_set_property ( css, "display", expanded ? "block" : "none", "", NULL); - id = g_strconcat ( - g_object_get_data (object, "attachment_id"), - ".iframe", NULL); - element = find_element_by_id (document, id); - g_free (id); + element_id = g_strconcat (attachment_part_id, ".iframe", NULL); + element = find_element_by_id (document, element_id); + g_free (element_id); if (!WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT (element)) { - d ( - printf ("%s: No