After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 714474 - Alternative behavior for hidden email
Alternative behavior for hidden email
Status: RESOLVED DUPLICATE of bug 792388
Product: geary
Classification: Other
Component: conversations
master
Other All
: Normal normal
: ---
Assigned To: Robert Schroll
Geary Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-04-25 03:19 UTC by Robert Schroll
Modified: 2018-01-10 00:57 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
0001-New-behavior-for-hidden-emails.patch (9.00 KB, text/x-diff)
2013-04-27 15:47 UTC, Robert Schroll
Details
new patch obsoletes previous (9.12 KB, text/x-diff)
2013-04-28 02:00 UTC, Robert Schroll
Details
hidden-idea.png (97.61 KB, image/png)
2013-06-21 17:35 UTC, Robert Schroll
Details

Description Charles Lindsay 2013-11-21 20:26:47 UTC


---- Reported by rschroll@gmail.com 2013-04-24 20:19:00 -0700 ----

Original Redmine bug id: 6861
Original URL: http://redmine.yorba.org/issues/6861
Searchable id: yorba-bug-6861
Original author: Robert Schroll
Original description:

It can be a bit frustrating to try to look back through long conversations.
Two things stand out to me:

1) It takes two clicks to view most messages: one to uncompress the old emails
and a second to unhide the email you wish to view.

2) It's hard to navigate through the emails in the hidden, uncompressed state.
They look very similar, so it's hard to find your place after glancing away or
scrolling.

I'm playing around with an alternative approach. It gets rid of the
distinction between the hidden and compressed states. Hidden emails appear as
10px tall slivers, as in the current compressed state, but when you hover over
them, they pop to the top in their hidden state. Thus, you can navigate
through many old emails just by sliding your mouse up and down. A single click
opens the email in question.

I have a prototype working in pure CSS. Just stick the code below in your
user-message.css. It's not perfect, since the compressed state still exists --
you have to click on the stack once before you get the desired behavior.

    
    /* Disable compressed state */
    .email.compressed {
        margin-top: 16px;
        height: inherit;
    }
    .email.compressed + .email {
        margin-top: 16px;
    }
    .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed + .compressed {
        display: inline-block;
    }
    .email .compressed_note {
        display: none;
    }
    
    /* Enable scrubbing */
    .email {
        position: relative;  /* Need this to set width of .compressed_note */
    }
    .email .header_container:before {
        content: "";
        position: absolute;
        display: block;
        top: 0;
        width: 100%;
        height: 10px;
        z-index: 2;  /* On top, so gets :hover focus for parent */
    }
    .email.hide + .email {
        margin-top: -53px;
    }
    .email.hide {
        -webkit-transition: box-shadow 0s ease; /* Undo animation while scrubbing */
    }
    .email.hide:hover {
        z-index: 1;
        position: relative;
        box-shadow: 0 3px 11px rgba(0,0,0,0.67);
    }

  
The approach will have the added bonus of reducing the number of possible
states of an email from three to two, which will allow some simplifications in
our display code. It would probably solve #6561.

I can see some downsides, though:

  * This first message of the conversation isn't visible by default, as it is now. This could be added in pretty easily, but frankly I don't miss this.
  * The message right before an open message isn't visible by default. This one does bother me, and I initial did have it visible. The problem is that this required a message to move downwards when you clicked to open it, so that the previous one would be visible. But this moved it away from the focus of your eyes, leaving you looking at the message before the one you wanted. (If you want to see this behavior, change `.email.hide + .email` to `.email.hide + .email.hide`.) Perhaps we could get around this with some fancy scrolling, but I'm not convinced this would be any better.
  * There is no maximum length to the old email stack, as there is now. You'll need a whole lot of email to make this bothersome, but it could happen. This could be worked around by automatically scrolling down (though this was controversial before) or only loading the last n emails and providing a link to load the previous ones (though this destroys some of the simplicity of this approach).

Anyway, if you think this could be a worthwhile approach, let me know and I'll
code up a proper patch.



---- Additional Comments From geary-maint@gnome.bugs 2013-08-14 14:31:00 -0700 ----

### History

####

#1

Updated by Robert Schroll 7 months ago

  * **Description** updated (diff)

One thing that I find interesting about this is that you can get a variety of
appearances just by adjusting the margin-top value:

`16px` -- The current fully-expanded appearance.

`-1px` -- A nice compact view that still shows everything

`-30px` -- Shows just the sender and the top half of the gravatar. I kinda
like this.

We could also set the margin-top value programmatically, which could allow:

  * Different overlaps for differently-sized conversations. With only a few emails, all the hidden emails are visible, but with more, they start folding up further and further.
  * Overlaps that depend on the age of the email. Recent read emails are mostly showing, but older ones are mostly covered.
  * User-adjustable overlaps. Imagine hooking the margin-top up to Shift+Mousewheel. The user can compress the read emails when she wants to look at the unread ones and decompress them when looking back through the conversation.
Instead of having the hovered email pop forward, we could have them shift up
and down. Replace the second half of the CSS above with this to see it in
action:

    
    /* Enable scrubbing */
    .email.hide + .email {
        margin-top: -30px;
        /*-webkit-transition: margin-top 0.1s linear;*/
    }
    .email.hide:hover + .email {
        margin-top: -1px;
    }
    .email.read {
        box-shadow: 0 0 11px rgba(0,0,0,0.5);
    }

  
I think this is pretty nifty, myself. Two issues:

  * You need a darker shadow in order to give depth to the list of read messages. This messes with the dark shadow to show unread messages, but this can be tweaked.
  * If you uncomment the transition line, you get animated folding and unfolding, which is super nifty. But the animations of one email increasing and the other decreasing don't quite match up, causing jiggling in the remainder of the document. A pity.

Please give it a try and let me know what you think.

####

#2

Updated by Jim Nelson 7 months ago

  * **Target version** set to _0.4.0_

Robert, why don't you submit a patch with this configured the way you'd like
to see it. If there's some small problems, we'll work through them or ticket
them for later. I'm certainly interested and it does sound like these changes
could improve the experience. Now that we have full conversations, I'm seeing
many of the things you're noticing, so some new approaches are worth
considering.

####

#3

Updated by Robert Schroll 7 months ago

Will do. I just didn't want to spend a lot of time ripping stuff apart and
then trying to reassemble it if everyone was happy with how things are now.

####

#4

Updated by Robert Schroll 7 months ago

  * **File** 0001-New-behavior-for-hidden-emails.patch added
  * **Status** changed from _Open_ to _Review_

Here's a patch that implements something like the second option. Instead of
adjusting the margin-top, I adjust the height, to avoid overlapping drop
shadows.

As I mentioned before, we could imagine adjusting the height of the hidden
emails in response to the number of emails in the conversation, the position
of an email in the conversation, and/or user input. In this patch, it's just
fixed.

####

#5

Updated by Robert Schroll 7 months ago

  * **File** 0001-New-behavior-for-hidden-emails.patch added

The new CSS shouldn't apply to nested emails.

####

#6

Updated by Jim Nelson 7 months ago

  * **Status** changed from _Review_ to _Open_

Robert, we took a look at this and discussed the problems you described in the
ticket description. We agree that the current implenentation isn't the most
attractive or useful (especially in large conversations) and requires a few
clicks to get to what you're looking for. We do think that Ctrl+F search
(#6199) will help the situation by reducing the need to hunt by clicking.

Some of the problems mentioned include that part of the text and the controls
on the right edge are cut off in the collapsed messages, making it look like a
bug. The jumpiness of the topmost message shifting downward was also
mentioned. (We were looking at your last patch without the variants you've
mentioned.)

We looked at how Gmail expands a compressed group of images and thought there
might be some take-away there. It displays the collapsed messages much as
conversations are displayed in its conversation list: name on left, preview,
date on right, with the star and attachment icons in the mix. We're wondering
if that would help alleviate the second problem you identified in your
description, that all the collapsed messages look alike. If more emphasis was
placed on the preview and the name, that might make it easier to scan throught
the messages and find the one you're looking for.

And we do think the compressed messages blob is useful, as we're seeing
conversations with 20+ messages now that full conversations is implemented.
Compressing all the read messages is useful in that situation, so we'd like to
keep that too. But there's still room to better present the collapsed
uncompressed messages, and that's where I think your patch could help. Right
now each collapsed message is a thick block with a thick divider separating
each of them. Let's try narrowing the collapsed message to a line, even
fetching a smaller avatar. Then, as you're doing there, reduce the whitespace
between the messages. Using the hover to pop open the collapsed message is
something we weren't wild about, although perhaps something else could be
considered. (Shift+click? Shift+Mousewheel as you suggested?)

I don't have all the answers here, but I feel like you do have a start for
cleaning up the conversation view. I'd like it if the collapsed messages were
a line high and the space between them was reduced, even if it meant no blank
space and just line dividers. I do like the idea of "popping" up the old two-
line preview with a user event (don't know how hard that might bn).

We can answer any questions you have or any points I forgot to write up here.

####

#7

Updated by Robert Schroll 7 months ago

Jim Nelson wrote:

> Some of the problems mentioned include that part of the text and the
controls on the right edge are cut off in the collapsed messages, making it
look like a bug.

This indicates a failure of my design. It is supposed to look like each hidden
email is behind the one after it, and is exposed by the following email moving
down and out of the way. I was trying to indicate this merely by the drop
shadows, but it sounds like this wasn't enough. As I mentioned, adding CSS
animation really helps the illusion, but I couldn't get the opening and
closing animations synchronized well enough to avoid jitters elsewhere.

> The jumpiness of the topmost message shifting downward was also mentioned.
(We were looking at your last patch without the variants you've mentioned.)

This bothered me too. I'm trying to figure out how to make the :hover email
slide upwards. But I need it to remain in position when you open it, so I
don't think this is going to work.

The first bit of CSS I posted just moved the :hover email forward, so there's
no vertical motion. I didn't think that was as skeuomorphically sensible, but
it may be worth a look.

> We looked at how Gmail expands a compressed group of images and thought
there might be some take-away there. It displays the collapsed messages much
as conversations are displayed in its conversation list: name on left,
preview, date on right, with the star and attachment icons in the mix. We're
wondering if that would help alleviate the second problem you identified in
your description, that all the collapsed messages look alike.

My suspicion is no, at least for me. When I'm looking through past messages,
I'm searching for a bit of text in my head (whether name, date, subject, or
content). I don't want to use another piece of text to remember my position;
it really has to be something purely visual. This leaves us with form, color,
and location. The gravatars help when they're different, but we can't count on
that. Since we don't want to adjust the form and color of the previews [1], we
have to rely on location. Since this is broken by scrolling, we need as many
emails on screen at a time, which was the impetus for my design here.

Decreasing collapsed email to a single line, as you suggest, would help in
increasing the density, so I don't mean to reject this out-of-hand. I'm just
saying that additional text isn't going to help, IMO.

> I don't have all the answers here, but I feel like you do have a start for
cleaning up the conversation view. I'd like it if the collapsed messages were
a line high and the space between them was reduced, even if it meant no blank
space and just line dividers. I do like the idea of "popping" up the old two-
line preview with a user event (don't know how hard that might bn).

One of my motivations for this was to decrease the number of states for emails
to be in, from the current 3 (open/collapsed/compressed) to 2
(open/collapsed). This not only helps us by simplifying the implementation,
but it helps the user get the right mental model what's going on. (I do have
the the hover state, but that's supposed be revealing more of the collapsed
state.) This approach would give us 4
(open/collapsed/collapsed:hover/compressed), which I feel is the wrong
direction. (I know it's the wrong language, but I still respect the Zen of
Python: "If the implementation is hard to explain, it's a bad idea.")

I'm going to leave my name on this but put it on the back burner for a while.
I suspect there's a better solution, so I'm going to let it bounce around my
brain for a while and see what happens. If someone else has a good idea,
please say so or claim claim the bug for yourself.

[1] Or do we? I could imagine hashing each message to produce a pastel color
to use as that email's background. Not only would this help you keep track of
location, it could help you find specific emails you refer to often. You might
remember that a particular email was light pink without really thinking about
it.

I suspect that in practice this would look silly, though.

####

#8

Updated by Robert Schroll 5 months ago

  * **File** hidden-idea.png added

This has been bouncing around in my head for a little. One of the problems
with the previous approach, I think, was that it wasn't clear that there was
more info (specifically the preview) hidden for the hover state to reveal. So
I started to wonder if I could get the preview up into the top half.

This mockup adjusts both the email address and preview to be two lines. The
name and first line of preview are shown in the top half. Hovering over one
(I'm doing that with that email in the middle) brings it forward so you can
see the email addresss and the rest of the preview. Combined with coloring the
sent messages, I think this would give us a view that's as good as the current
"hidden" view while not taking up much more room than the "compressed" view.

If you want to play with it in action, I can post the CSS I used. But it's
pretty ugly -- I'm using absolute positioning to shove the preview to where I
want it. A better solution would be to rearrange the HTML a bit to put the
preview in a better location. I'd need to do some work to get overflows to
happen correctly. We might also reduce the padding of the hidden emails to get
slightly higher density.

We still probably need to do something when loading a conversation with 20+
emails in it. I'm still a fan of loading everything and then scrolling down to
the relevant email, but this behavior wasn't appreciated before. Another
option would be to put a link at the top of the conversation saying "Load _n_
earlier emails". This might also be triggered by scrolling upwards against the
top, although we'd want to heuristics to distinguish between scrolling to the
top and scrolling "past" the top.

Let me know if y'all like this approach or not. If so, I'll try to code it up
more correctly.

####

#9

Updated by Avi Levy 5 months ago

Wow, this approach seems pretty innovative. One tiny suggestion: in the
screenshot, there is a thin sliver below the currently focused message. I
think things may look cleaner if the sliver was removed (if I understand
correctly, that would mean the height of a focused message should be exactly
twice the height of an unfocused message). Hopefully this ends up in Geary!

####

#10

Updated by Robert Schroll 5 months ago

Avi Levy wrote:

> One tiny suggestion: in the screenshot, there is a thin sliver below the
currently focused message. I think things may look cleaner if the sliver was
removed

This is one of several spacing issues to work out if we go this way. I'm not
sure whether it's better to have it line up exactly to look clean, or miss by
a lot to clearly show that the focused one is hiding others. But the thin
sliver is clearly wrong.

You're also welcome to try out the older CSS I posted to see if that gives you
any other ideas here.

####

#11

Updated by Jim Nelson 5 months ago

Robert, I've been thinking about this approach, your mockup, and
collapsed/compressed messages in general. Just to make sure we're talking
about the same thing:

  * This approach would eliminate collapsed messages, replacing them with this overlapping approach.
  * When the user visits a conversation with a lot of read messages, it will still scroll to the first unread message.
  * If the user hovers the mouse over one of the overlapped messages, it "pops" to the top. There's no mouse click involved in either bringing it up or send it back into the stack.
  * A mouse click will uncollapse the message, causing the read messages before and after it to remain stacked.

Some questions:

  * Would this approach also eliminate compressed messages as we have them today -- that is, even two collapsed messages would be stacked like in your mockup?
  * Is there a delay before a hovered message pops to the fore, or is it instant?

Also:

> I'm still a fan of loading everything and then scrolling down to the
relevant email, but this behavior wasn't appreciated before.

I'm confused -- isn't this the current behavior?

I have to admit, I've become less and less inured to the collapsed message
approach we have today, mostly because if I'm going back to older email in a
conversation, I'm usually looking for (a) who is in this conversation, (b) a
starred message, or (c) a message with an attachment, all of which is lost
with compression. This approach, on the other hand, keeps that available.

I'd be interested in seeing a patch!

####

#12

Updated by Robert Schroll 5 months ago

Jim Nelson wrote:

>   * This approach would eliminate collapsed messages, replacing them with
this overlapping approach.

Yep.

>   * When the user visits a conversation with a lot of read messages, it will
still scroll to the first unread message.

In the current conversation viewer, there's no scrolling done. We don't need
it because the compressed view ensures a maximum distance (2 hidden + 8
compressed) to the first open email.

We will need to do something about this with this approach, I think, because
we can't guarantee a maximum here. Three ideas:

- Scroll to the first unread email.  
- Only load a few read emails, with a link to add more.  
- Only load a few read emails, and load more when the user scrolls upwards against the top. (This is sort of an average of the first two.)

>   * If the user hovers the mouse over one of the overlapped messages, it
"pops" to the top. There's no mouse click involved in either bringing it up or
send it back into the stack.

Yep. I'm trying to cut down on clicks.

>   * A mouse click will uncollapse the message, causing the read messages
before and after it to remain stacked.

Yep. This means that the user positively sets the state of all messages, and
we won't have that confusion about what state emails should be in when we load
more messages into the the view.

>   * Would this approach also eliminate compressed messages as we have them
today -- that is, even two collapsed messages would be stacked like in your
mockup?

Yep. It may not be necessary for space, but I think it is for consistency.

>   * Is there a delay before a hovered message pops to the fore, or is it
instant?

It's instant right now, since I'm doing it with CSS. I think this is the right
way to do, since it allows "scrubbing" through the emails. But in truth I
haven't considered this before.

> > I'm still a fan of loading everything and then scrolling down to the
relevant email, but this behavior wasn't appreciated before.

>

> I'm confused -- isn't this the current behavior?

As mentioned before, no -- there's no scrolling currently. We had some before
we introduced the compressed emails.

> I'd be interested in seeing a patch!

I'll try to throw something together. In the meantime, I'm happy to see
mockups or vague ideas from others.

####

#13

Updated by Jim Nelson 3 months ago

  * **Target version** changed from _0.4.0_ to _0.5.0_



--- Bug imported by chaz@yorba.org 2013-11-21 20:26 UTC  ---

This bug was previously known as _bug_ 6861 at http://redmine.yorba.org/show_bug.cgi?id=6861
Imported an attachment (id=260995)
Imported an attachment (id=260996)
Imported an attachment (id=260997)

Unknown milestone "unknown in product geary. 
   Setting to default milestone for this product, "---".
Setting qa contact to the default for this product.
   This bug either had no qa contact or an invalid one.
Resolution set on an open status.
   Dropping resolution 

Comment 1 Michael Gratton 2018-01-10 00:57:08 UTC
This has been mostly obsoleted by the Gtk widget port for WK2, which also removed compressed mode. Geary now scrolls to the first interesting message (starred or unread), so finding older/newer messages is a matter of scrolling up or down or using find, which should automatically expand matching messages.

However scrolling doesn't work great since WK2 wants to manage scrolling of the web view internally, so we might need to take the ideas explored here into account when working on Bug 792388. So I'm going to mark this as a duplicate of that, since it's its a subset of that design work.

*** This bug has been marked as a duplicate of bug 792388 ***