Slate Widget STileView Scrolling Mouse Wheel Lock

Description: STileView widgets will always consume mouse wheel input regardless of their settings. This prevents other scrollable slate widgets within the hierarchy from scrolling as intended.


Reproduction Steps:

  1. Create an SScrollBox widget

  2. Create and add an STileView widget as a child widget to the SScrollBox.

  3. Set the .ConsumeMouseWheel flag to EConsumeMouseWheel::Never for the STileView

  4. Make sure there are enough elements within the STileView to where the scroll bar of the STileView becomes present. (This becomes more apparent when the EListItemAlignment::EvenlySized flag is set within the STileView which adds scaling to the list elements.)

  5. Scroll to the bottom of the page and then scroll up using the mouse wheel and notice that the STileView gets prioritized when scrolling and the parent SScrollbox no longer scrolls / becomes locked up once the STileView has scrolled to the top.

**Why This Occurs:** This occurs because within the mouse wheel handler for the tile view, the flag for EConsumeMouseWheel::Never is not handled and the AmountScrolledInItems is never returning a value <= 0.0f resulting in the STileView always consuming the input.
The function in which handles this logic can be found here:
**File:** STableViewBase.cpp
**Line:** 479 (As of 4.17.0 release)
**Function:** STableViewBase::OnMouseWheel
**The Solution:** The solution to this bug which worked in testing was to add the EConsumeMouseWheel::Never flag to the switch statement returning FReply::Unhandled. This prevents the STileView from consuming the mouse wheel input and passes it along to the next listener in line allowing the SScrollBox to once again consume the mouse wheel input.
**Alternative Solution:** The goal is to be able to disable to scrollbar functionality within the STileView and leave scrolling up to a parent SScrollbox. In the case there are edge cases preventing the above solution from being added, having an alternative way to disable scrolling within the STileView would be incredibly helpful.

Thanks for reading =)

Cheers!

Hey -

Could you elaborate on your reproduction steps a bit? I created a widget blueprint and was able to add a Scroll Box to it, however Tile View widget does not appear to be an available option to add to my widget. Screenshots of your setup would also help explain what you are referring to.

If your setup is in C++, having the sample project would be beneficial to ensure my setup matches yours. If you have a sample project available, you should be able to zip the project folder and add it as an attachment to a comment.

Hey ,

Thank you for the reply and I would be happy to provide more information.

So the exact layout for this is as follows:

SScrollBox

—>SVerticalBox

----->STileView

Sorry I missed this within my original post.

In the case you are still unable to reproduce this, I can also send you over a reproduction case showing the bug in action. As the setup is all through C++, this would be preferred over screenshots. =)

Hey ,
As this version of the project has not been released, would I be able to email you the repro project?
My email is

If you’re able to upload the project (to google drive for example) you can send me a PM on the forums with a download link for privacy.

Awesome! I sent over the build along with updated repro steps. =)

Awesome!
Thanks ! I appreciate the time. =)

Hey -

Sorry for the delayed response. I have entered a report based on the plugin you provided: Unreal Engine Issues and Bug Tracker (UE-49854) . You can track the report’s status as the issue is reviewed by our development staff. Please be aware that this issue may not be prioritized or fixed soon.

Cheers

Hey ,

I’ve been upable to repro this outside of the full plugin you provided. Are you able to repro this in a clean project using the UMG editor (rather than inside a plugin)? If so, could you provide the setup steps / sample created project for a scaled down repro?