Make selections immediate (in appearance)

Issue #380 new
Robert Leach created an issue

USE CASE: WHAT DO YOU WANT TO DO?

See immediate responsiveness upon clicking to select.

STEPS TO REPRODUCE AN ISSUE (OR TRIGGER A NEW FEATURE)

  1. Single-left-click to make a selection in any matrix (and pull the mouse away immediately after the click
  2. Single-left-click to make a different selection (and pull the mouse away immediately after the click

CURRENT BEHAVIOR

  1. The clicked tile is immediately bordered in white, but the selection does not appear yellow until after a quarter second later (but feels like a full second's time). Also, the yellow circle is not drawn until a quarter second as well.
  2. The previous selection does not un-yellow-highlight until after a quarter second later (but feels like a full second's time)

EXPECTED BEHAVIOR

  1. Selections should appear yellow immediately upon single-left-click.
  2. Old selection(s) should appear faded immediately upon first single-left-click and disappear completely after the existing delay, unless interrupted by item number 3...
  3. If the user is double-clicking, the temporary appearance of a yellow (new) selection & (old) deselection are tolerable as long as old selections un-fade and canceled new selections disappear immediately upon detection of the second click.
  4. Drag-selection behavior should not change. Drag-selections should not appear selected immediately in yellow and previous selections should not disappear until click-release.
  5. Since a temporary yellow circle appearance during double-click might affect user confidence, do not draw the yellow circle until after the intention of the clicking is determined (after the delay).

It might actually be preferable to create an intermediate level delay where the temporary selection changes appear after 50ms as opposed to 250/300 so that the most common speed of double-clicking doesn't make the selections "flash"? The existing delay still feels correct in terms of intent to me, because before I changed it from 250 to 300, I was frequently changing my selections unintentionally at 250. However, if we simply implemented an undo function to restore the previous selection, even if it was accessible via a matrix contextual menu revealed upon right-click inside the matrix, then just reducing the existing delay duration might be a better solution because it would be simpler.

DEVELOPERS ONLY SECTION

SUGGESTED CHANGE (Pseudocode optional)

Phase 1:

  1. Fade old selection immediately upon first mouseReleased event
  2. Draw yellow rubberband around new selection immediately instead of faded rubberband
  3. If drag-selection is confirmed, change rubberband color back to original color and restore appearance of old selection to yellow and keep existing drag behavior upon mouseReleased
  4. Upon second-click detection, immediately return old selection to prior appearance and make the new selection disappear
  5. Temporary new selections should not include the circle. The circle should only appear after the existing current delay

Phase 2:

  1. Don't make any temporary drawing changes (including eliminating the existing immediate white rubber band) until after a new 50ms delay.

FILES AFFECTED (where the changes will be implemented) - developers only

TBD

LEVEL OF EFFORT - developers only

medium

COMMENTS

I realized today that no-one created this issue though we've talked about it in meetings, so I added it today.

Comments (8)

  1. Log in to comment