jumping

Andrew Abernathy andrew at omnigroup.com
Sat Sep 17 13:48:19 PDT 2005


Apologies for the length of this reply. It deals with a subject that  
has some fairly unique demands that I don't know have a perfect  
solution, so I'm afraid I ended up touching on a lot of the issues.


On Sep 17, 2005, at 12:20 PM, Trevor Harmon wrote:

> In OmniOutliner, if I hold the Down key, the contents of the window  
> will jump by half of the window height.
[...]
> This kind of jumping is apparently by design, because I've seen  
> other Mac OS X applications, such as TextEdit and Mail, do the same  
> thing. I would prefer to see the smoother BBEdit-type scrolling in  
> OmniOutliner, but I'm willing to live with it. That was the first  
> issue.

Right, I understand what you're talking about then. You're correct -  
the paging behavior is by design. The behavior is prompted by some  
somewhat conflicting goals:

1. Stability: don't shift the view, let the user control viewpoint.
2. Context: show context both before and after the current selection.
3. Comfort: not sure of the best way to describe this, but often  
people feel uncomfortable working at the bottom of the window.

The extreme of #1 would be to NEVER auto-scroll. If the user  
navigates to a hidden row, force them to manually scroll if they want  
to view the new selection. On occasion this could actually be  
desirable behavior: imagine writing a long note on a row while  
referring to the main topic. If you're a good touch-typist, you may  
not need to see what you're typing should it extend beyond the bottom  
of the window, but instead you prefer to see the topic text while you  
mentally compose and type. (This is one reason many people like point- 
to-focus windows vs click-to-focus, so they can type in a partially- 
obscured window while referring to whatever is obscuring it.) I can  
imagine providing some way to accommodate this, but I suspect we'll  
all agree that this behavior would far more often be extremely  
frustrating for most people, hence the (near-?)universal behavior of  
auto-scrolling the view to always show the current insertion point.

The extreme of #2 would be to never move the insertion point, but to  
instead constantly auto-scroll the view such that the insertion row  
remained in the middle of the window, or some other desirable  
location within the window. You can imagine this applying even  
horizontally, such that the insertion point remains anchored in the  
exact window of the screen. It's pretty obvious that in general this  
would drive most people (if not everyone) insane. But I think again  
there is some value in there - for instance, it could be desirable at  
times to keep the selected row or even line anchored in the middle of  
the screen, auto-scrolling the view whenever you navigated to a new row.


In any case, I think it's pretty obvious that neither extreme is  
desirable in general, at least for most people. Auto-scrolling the  
viewpoint to keep the insertion point visible is the common  
modification to #1 above. From there, the reasoning is "hey, we have  
to shift the view, so how about we go ahead and shift it more than  
the absolute minimum, so that the user can see more context, and so  
that the user doesn't feel pinned to the bottom of the window as they  
type?"

The latter is in fact a common complaint we receive - when people are  
typing at the end of their document, they do remain pinned to the  
bottom of the window, and they find this very uncomfortable. (#3  
above.) We don't yet have a solution for it, but it is something that  
we do want to address in the future. (The solution might be as simple  
as always providing a dead area at the end of the document. This is  
the common request, but it also has comfort issues.)


OmniOutliner arguably has it even more difficult than apps like  
TextEdit or BBEdit (which, as you point out, have different auto- 
scroll behavior - I believe, actually, that TextEdit gets its auto- 
scroll behavior from the Cocoa frameworks, hence it being common in  
Cocoa applications). We have very clearly defined row boundaries; the  
others have paragraphs, which could be equated in this context, but  
they aren't really defined as clearly as our rows. So for us a third  
option becomes prominent: scroll enough to reveal all of the newly- 
selected row, and no more than necessary to do that. If the row is  
only one line tall, that's the same as BBEdit's behavior, but if it's  
taller it's still jumpy, although not (typically) as much as  
scrolling the selection to the center of the window.


We're open to modifying our behavior, based on our experiences and on  
user feedback. Right now we know that lots of people hate being  
pinned to the bottom of the window (I'm one of those people), and it  
seems the lesser evil. But of course some people like yourself are  
fine with it, or would at least prefer the smaller auto-scroll.

I encourage everyone who dislikes the current behavior or who would  
prefer a different behavior to send their feedback to  
omnioutliner at omnigroup.com so that it will get filed and we will have  
a better appreciation of the demand when prioritizing future changes.  
Ideally, try to identify why you dislike the current behavior or why  
you prefer the alternate behavior, as that will improve our chances  
of coming up with an approach that satisfies more people, if people  
are suggesting different approaches but for the same underlying reasons.


> The second issue is far more serious. Here's what happens if I  
> change the keyboard repeat rate to maximum (my preferred setting)  
> and run the experiment again. As before, I am simply holding the  
> Down key.
> [...]
> Now that went pretty well. Still had the half-window jumping that I  
> don't like, although it's not too bad. But let's try that one more  
> time:

Eep! I haven't seen that behavior before. And I'm unable to replicate  
it in some simple testing. Any chance I could get you to send me that  
document, for us to test against? (My apologies if you've sent a  
sample document in previously; I can't currently check our bug system  
to look for it.)

-andrew




More information about the OmniOutliner-Users mailing list