frontend: Add event filter to Idian utils for widget states #12734
+259
−130
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Clean up some logic in Idian widgets and introduce ability to adjust icon colors based on widget state.
Motivation and Context
Qt itself does not allow style selectors for child widgets underneath a state selector. For example, it is impossible to do the following:
To navigate around this shortcoming of QSS, the Idian widgets in many places apply a property matching the various states, such as .hover and then trigger an update of children widget styles.
The first commit of this PR moves that logic into a dedicated Event Filter. This also allows this logic to be applied to any other widget by using the idian::Utils class.
The second commit adds additional functionality to the event filter, which will take the computed text
colorof a widget and apply that color to it's icon. This will give us the ability to adjust colors of icons that have been set by QSS, asqproperty-iconalso cannot be changed in pseudo state selector rules like :hover and :disabled.How Has This Been Tested?
Tested all widgets in the Idian playground widget, as well as my local work-in-progress Audio Mixer refactor branch.
Types of changes
Checklist: