GNOME Bugzilla – Bug 704703
fine adjustments are difficult with scrollbars
Last modified: 2013-08-05 06:49:19 UTC
Making fine adjustments is quite difficult with many scrollbars. It is particularly difficult in very long scrolled views. In these cases the smallest possible manipulation of the scrollbar handle will move the view abruptly and dramatically - sometimes many "pages". To help with this we added a fine tune scrolling mode (aka zoom) when the shift modifier is used in combination with a scrollbar handle drag. This works quite well. However, it has a couple of drawbacks as a complete solution: * It is difficult to discover * It requires thinking about the interface but the user is thinking about the task or content * It requires prediction * It requires use of both pointer and keyboard simultaneously I tried a few different approaches to help with this and I found that really only one worked well. That is, to automatically engage fine-scroll mode when the scroll handle is moved slowly, initially, and stay in fine-scroll until the drag is completed. When the handle is moved moderately or quickly the typical linear scroll is used. I think this work because it maps pretty closely to how people already behave. When you want to do some detail work you naturally move a bit more slowly. When you intend to make a coarse correction you move at least initially more more quickly. It seems to just work.
Created attachment 249835 [details] [review] Automatically put the scrolling into zoom mode when started slowly
Created attachment 250083 [details] [review] Automatically put the scrolling into zoom mode when started slowly
Created attachment 250084 [details] [review] Add mouse pointer support to press and hold
Created attachment 250085 [details] [review] Add press and hold support to set zoom scroll mode
Created attachment 250611 [details] [review] Add mouse pointer support to press and hold
Created attachment 250612 [details] [review] Add press and hold support to set zoom scroll mode
Created attachment 250613 [details] [review] Add autoscroll when dragging past boundary of range
We'll need to do some style work in the theme to indicate the fine mode. Hopefully jimmac can help us out with that.
Created attachment 250785 [details] [review] fine scrolling:specific widgets Communicate the "density" by scaling the widgets. Perhaps in future we want to use a 1px stroke and create separate assets.
Review of attachment 250611 [details] [review]: Looks good to me.
Review of attachment 250612 [details] [review]: ::: gtk/gtkrange.c @@ +64,3 @@ #define TIMEOUT_INITIAL 500 #define TIMEOUT_REPEAT 50 +#define ZOOM_PX_PER_SEC 50.0 This seems to be unused.
Review of attachment 250613 [details] [review]: ::: gtk/gtkrange.c @@ +2856,3 @@ + range = GTK_RANGE (data); + + increment = gtk_adjustment_get_step_increment (range->priv->adjustment) / 20; Should the magic 20 be turned into a constant instead?
Patches look good to me, except for these minor comments.
Attachment 250611 [details] pushed as 46302c5 - Add mouse pointer support to press and hold Attachment 250612 [details] pushed as c3e172e - Add press and hold support to set zoom scroll mode Attachment 250613 [details] pushed as 8c7a8e9 - Add autoscroll when dragging past boundary of range
Attachment 250785 [details] pushed as 68086d5 - fine scrolling:specific widgets
(In reply to comment #13) > Patches look good to me, except for these minor comments. Pushed with those changes. Thanks for the review