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 704703 - fine adjustments are difficult with scrollbars
fine adjustments are difficult with scrollbars
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Widget: Other
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2013-07-22 19:25 UTC by William Jon McCann
Modified: 2013-08-05 06:49 UTC
See Also:
GNOME target: 3.10
GNOME version: ---


Attachments
Automatically put the scrolling into zoom mode when started slowly (5.86 KB, patch)
2013-07-22 19:26 UTC, William Jon McCann
none Details | Review
Automatically put the scrolling into zoom mode when started slowly (6.44 KB, patch)
2013-07-24 23:53 UTC, William Jon McCann
none Details | Review
Add mouse pointer support to press and hold (3.36 KB, patch)
2013-07-24 23:53 UTC, William Jon McCann
none Details | Review
Add press and hold support to set zoom scroll mode (4.90 KB, patch)
2013-07-24 23:53 UTC, William Jon McCann
none Details | Review
Add mouse pointer support to press and hold (3.45 KB, patch)
2013-08-01 13:30 UTC, William Jon McCann
committed Details | Review
Add press and hold support to set zoom scroll mode (5.28 KB, patch)
2013-08-01 13:30 UTC, William Jon McCann
committed Details | Review
Add autoscroll when dragging past boundary of range (7.21 KB, patch)
2013-08-01 13:30 UTC, William Jon McCann
committed Details | Review
fine scrolling:specific widgets (1.87 KB, patch)
2013-08-04 08:23 UTC, Jakub Steiner
committed Details | Review

Description William Jon McCann 2013-07-22 19:25:35 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.
Comment 1 William Jon McCann 2013-07-22 19:26:57 UTC
Created attachment 249835 [details] [review]
Automatically put the scrolling into zoom mode when started slowly
Comment 2 William Jon McCann 2013-07-24 23:53:09 UTC
Created attachment 250083 [details] [review]
Automatically put the scrolling into zoom mode when started slowly
Comment 3 William Jon McCann 2013-07-24 23:53:17 UTC
Created attachment 250084 [details] [review]
Add mouse pointer support to press and hold
Comment 4 William Jon McCann 2013-07-24 23:53:22 UTC
Created attachment 250085 [details] [review]
Add press and hold support to set zoom scroll mode
Comment 5 William Jon McCann 2013-08-01 13:30:20 UTC
Created attachment 250611 [details] [review]
Add mouse pointer support to press and hold
Comment 6 William Jon McCann 2013-08-01 13:30:42 UTC
Created attachment 250612 [details] [review]
Add press and hold support to set zoom scroll mode
Comment 7 William Jon McCann 2013-08-01 13:30:50 UTC
Created attachment 250613 [details] [review]
Add autoscroll when dragging past boundary of range
Comment 8 William Jon McCann 2013-08-01 15:48:36 UTC
We'll need to do some style work in the theme to indicate the fine mode. Hopefully jimmac can help us out with that.
Comment 9 Jakub Steiner 2013-08-04 08:23:45 UTC
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.
Comment 10 Cosimo Cecchi 2013-08-04 20:11:53 UTC
Review of attachment 250611 [details] [review]:

Looks good to me.
Comment 11 Cosimo Cecchi 2013-08-04 20:12:57 UTC
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.
Comment 12 Cosimo Cecchi 2013-08-04 20:15:00 UTC
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?
Comment 13 Cosimo Cecchi 2013-08-04 20:15:29 UTC
Patches look good to me, except for these minor comments.
Comment 14 Matthias Clasen 2013-08-05 06:48:12 UTC
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
Comment 15 Matthias Clasen 2013-08-05 06:48:41 UTC
Attachment 250785 [details] pushed as 68086d5 - fine scrolling:specific widgets
Comment 16 Matthias Clasen 2013-08-05 06:49:19 UTC
(In reply to comment #13)
> Patches look good to me, except for these minor comments.

Pushed with those changes. Thanks for the review