Opened 5 years ago

Closed 5 months ago

#15009 closed bug (fixed)

[BListView] autoscroll is broken (regression)

Reported by: diver Owned by: jscipione
Priority: normal Milestone: Unscheduled
Component: Kits/Interface Kit Version: R1/Development
Keywords: Cc: ttcoder
Blocked By: Blocking:
Platform: All

Description (last modified by diver)

hrev53071.

Clicking on a list and scrolling through the list items (while holding down the mouse button) doesn't work anymore.

Initially it was implemented in: https://git.haiku-os.org/haiku/commit/src/kits/interface/ListView.cpp?id=2446f53bc8a707b504bb69f930222ab891be89ff

Attachments (3)

autoselect.avi (4.6 MB ) - added by jscipione 4 years ago.
Video demonstration of auto-select in action in ScreenSavers prefs modules list. notice that you can scroll through the items without the screen saver options getting populated until you release the mouse button.
autoselect_beos_r5.mp4 (334.4 KB ) - added by jscipione 4 years ago.
Video demonstration of auto-select behavior in Screen Saver prefs modules list on BeOS R5
hrev57439 data translators autoscroll.mp4.zip (1.1 MB ) - added by jscipione 5 months ago.

Change History (22)

comment:1 by diver, 5 years ago

Description: modified (diff)

comment:3 by humdinger, 4 years ago

Is this still an issue. It seems to work with hrev53552. At least I can drag a selected shape in IOM and the list of shapes scrolls up and down when I reach the top/bottom of the list view. Or are you talking about something else?

comment:4 by diver, 4 years ago

BeOS had a feature where you could click on a list and while holding down the mouse button scroll through the list items selecting them as you went.

comment:5 by humdinger, 4 years ago

I suppose this can only work for lists where you cannot drag'n'drop items to change the order. Is there an example app? I can't seem to think of one... Maybe it's not an essential feature that's missed too much.

comment:6 by jscipione, 4 years ago

The auto-scroll feature described in this ticket only works where you cannot drag and drop the items (to change their order or other actions) in a ListView. Examples include Screen Savers modules list, DataTranslators list, Vision channels list and Network prefs interfaces list. Examples that do include a drag include Appearance Colors list, and Locale Prefs preferred languages list. This may not be an essential feature but I'm trying to fix regressions and this is a BeOS R5 regression. Once you see how selecting on MouseUp works I think you may come to appreciate it. This reproduces BeOS R5 behavior so it should work for any BeOS app.

comment:7 by jscipione, 4 years ago

Owner: changed from nobody to jscipione
Status: newassigned

comment:8 by humdinger, 4 years ago

Once you see how selecting on MouseUp works I think you may come to appreciate it.

I did try your patch and as I commented there, I find it feels extremely weird and offputting. Everything in the GUI reacts very responsively on MouseDown, but only non-draggable lists would react on MouseUp... I don't like it.

If you can make this scrolling work, but keep the normal select-on-MouseDown, OK. But if it can't be done, I'd rather live without this feature. And even if you did, isn't the inconcistency between draggable-item-lists and other lists a no-no? One can be scrolled like this, one cannot. And since you don't have a visual clue, you always have to try and see if it drags an item or scrolls the list...

I suspect that it was more appreciated back in the BeOS days, before mouse wheels and (two-finger scrolling) touchpads.

comment:9 by jscipione, 4 years ago

Well then thank you for trying my patch! I could select on mouse down then select a second time on mouse up and still get the auto-selecting feature but that wouldn't be authentic and I was trying to reproduce the BeOS behavior. There is no inconsistency between draggable and non-draggable lists because you are given visual feedback when you drag. Buttons also activate on mouse up don't they? There is no difference between now and BeOS in terms of selecting on mouse up vs mouse down but your feedback that list selection feels sluggish to select on mouse up instead of down is noted.

comment:10 by humdinger, 4 years ago

There is no inconsistency between draggable and non-draggable lists because you are given visual feedback when you drag.

What I mean is, users cannot know how a list reacts until they try to click&drag an item. It either scrolls/auto-selects or drags an item (which may be inconvenient, if the user was surprised by that, drops the item and inadvertently changed the order of items in the list).

Buttons also activate on mouse up don't they?

Yes, with good reason. It gives the user a chance to reconsider in case a button results in a destructive action. I personally encounter this from time to time myself, having clicked on a button in a hurry and being able to avert desaster by being able to move the mouse from the button before releasing the mouse button... :)

by jscipione, 4 years ago

Attachment: autoselect.avi added

Video demonstration of auto-select in action in ScreenSavers prefs modules list. notice that you can scroll through the items without the screen saver options getting populated until you release the mouse button.

by jscipione, 4 years ago

Attachment: autoselect_beos_r5.mp4 added

Video demonstration of auto-select behavior in Screen Saver prefs modules list on BeOS R5

comment:11 by bitigchi, 4 years ago

+1 for the BeOS behaviour. It should be the natural response to click and scroll unless the item is draggable outside the window.

comment:12 by ttcoder, 4 years ago

Cc: ttcoder added

/me 'd better watch for regressions like this as the BListView look'n'feel is rather complex and hard to get right (re. autoscroll, re drag'n'drop, re DnD vs selection, re cancelling item selection when all items are selected etc).

comment:13 by jscipione, 5 months ago

Bug still here 5 years later but I have relented and modified my patch so that it will select the item on mouse down and possibly again on mouse up if it's a different item which is a diversion from the tried and true BeOS behavior (for responsiveness I guess).

comment:14 by diver, 5 months ago

I just tried hrev57439 in VMware and it seems to still not work.

comment:15 by jscipione, 5 months ago

I just downloaded a hrev57439 nightly to test and the feature is working for me here. I can perform auto-scroll by holding down the mouse and going up and down the list of ScreenSaver modules like or DataTranslators translators. What is not working for you on hrev57439 diver?

comment:16 by diver, 5 months ago

I did exactly this in DataTranslators. Maybe it has something to do with VMware, it emulates ps2 mouse. Then I tried VirtualBox, same thing in both ps2 and USB tablet modes.

comment:17 by jscipione, 5 months ago

I'm testing on VMWare here too. Are you absolutely positive that you're on hrev57439? (or above if you're reading this in the future since it's the current latest) There was a bug in DataTranslators not redrawing the selection on scroll but that is also fixed in hrev57439. Even with the bug DataTranslators scrolled correctly with my BListView patch, it didn't draw the selected item background gray as you scrolled.

comment:18 by diver, 5 months ago

Yeah, I'm on hrev57439. Actually, the the scrolling works, my bad. For some reason I though that DataTranslators should show currently selected Translator while scrolling. Should it? I don't remember how it worked in BeOS anymore.

comment:19 by jscipione, 5 months ago

Resolution: fixed
Status: assignedclosed

Thanks for confirming. BeOS did the fake selection with mouse down on scroll as well. The idea is that selection might be expensive, so you don't want to do it too much. BeOS did it one time on mouse up, hrev57439 does selection possibly two times, once on mouse down and again on mouse up if it's a different item. On both BeOS R5 and hrev57439 the selection only appears to update during scroll.

Fixed in hrev57439

Note: See TracTickets for help on using tickets.