bitcoin-core / gui-qml

Bitcoin GUI (experimental QML-based fork)
MIT License
111 stars 40 forks source link

Sticky `Setting` actionItem state #341

Open jarolrod opened 1 year ago

jarolrod commented 1 year ago

Current behaviour

Take the About setting page for example, this is a page with multiple rows of Settings; each setting being represented by a Setting control. The Setting control is implemented to switch between different color states depending on what's happening to it at the moment (hovered, clicked, disabled, etc...). Within a Setting control, we can have an actionItem, and this actionItem will then have it's "state" tied to the parent Setting state.

It is expected that only one setting within the row would be in the HOVERED state because the mouse can only be hovered over one Setting at a time. It then follows that because a settings actionItem is tied to it's parent setting state, only one actionItem can be in a HOVERED state. But that is not the case on master if you move your mouse really quickly over all the settings. It appears that some actionItems don't get updated about their parent Setting state changing, and get stuck on an old parent state:

Screen Shot 2023-05-31 at 12 51 55 AM

Expected behaviour

Only one Setting and one actionItem should be in a state that is not "filled" or "disabled".

Steps to reproduce

Quickly run your mouse over all settings.

Relevant log output

No response

How did you obtain Bitcoin Core

Compiled from source

What version of Bitcoin Core are you using?

master

Operating system and version

macOS 12.6 M1 Pro

Machine specifications

No response