From a34058b65c6447fad03ffc4e1d65c0ff316e33c2 Mon Sep 17 00:00:00 2001 From: Robert Schroll Date: Thu, 14 Feb 2013 14:26:54 -0800 Subject: [PATCH] Clamp max num of messages compressed in conversation block: Closes #6373 --- src/client/views/conversation-viewer.vala | 13 +++++++++---- theming/message-viewer.css | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/client/views/conversation-viewer.vala b/src/client/views/conversation-viewer.vala index 7be69603..0f57af8f 100644 --- a/src/client/views/conversation-viewer.vala +++ b/src/client/views/conversation-viewer.vala @@ -349,6 +349,7 @@ public class ConversationViewer : Gtk.Box { public void compress_emails() { WebKit.DOM.Document document = web_view.get_dom_document(); + WebKit.DOM.Element first_compressed = null; int compress_count = 0; foreach (Geary.Email message in messages) { @@ -357,25 +358,29 @@ public class ConversationViewer : Gtk.Box { bool curr_hidden = message_element.get_class_list().contains("hide"), prev_hidden = (message_element.previous_element_sibling != null) && message_element.previous_element_sibling.get_class_list().contains("hide"), - next_hidden = (message_element.previous_element_sibling != null) + next_hidden = (message_element.next_element_sibling != null) && message_element.next_element_sibling.get_class_list().contains("hide"); if (curr_hidden && prev_hidden && next_hidden) { message_element.get_class_list().add("compressed"); compress_count += 1; + if (first_compressed == null) + first_compressed = message_element; } else if (compress_count > 0) { if (compress_count == 1) { message_element.previous_element_sibling.get_class_list().remove("compressed"); } else { WebKit.DOM.HTMLElement span = - message_element.previous_element_sibling.first_element_child.first_element_child + first_compressed.first_element_child.first_element_child as WebKit.DOM.HTMLElement; span.set_inner_html(_("%u read messages").printf(compress_count)); // We need to set the display to get an accurate offset_height span.set_attribute("style", "display:inline-block;"); - span.set_attribute("style", "display:inline-block; top:-%ipx".printf( - ((compress_count-2) * 9 + (int) span.offset_height) / 2 )); + span.set_attribute("style", "display:inline-block; top:%ipx".printf( + (int) (message_element.offset_top - first_compressed.offset_top + - span.offset_height) / 2)); } compress_count = 0; + first_compressed = null; } } catch (Error error) { debug("Error compressing emails: %s", error.message); diff --git a/theming/message-viewer.css b/theming/message-viewer.css index a655073a..159649bb 100644 --- a/theming/message-viewer.css +++ b/theming/message-viewer.css @@ -224,6 +224,9 @@ pre { .email.compressed + .email { margin-top: -1px; } + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed { + display:none; + } }