Improve loading wallpapers KCM and right-click menu visuals

Original commit message(s)

  • kcms/wallpaper: disable initial animation
  • wallpapers/image: make loading smoother
  • kcms/wallpaper: hide temp page during initialization
  • kcms/wallpaper: hide content until plugin is loaded
  • kcms/wallpaper: use stategroup for output selection

Adds a mechanism to reject any non-useful state so StackView is not being loaded with empty configuration on startup. It also makes image wallpaper plugin load smoother by adding fade-in behavior and tweaking loading state color and fixes some init-time issues like temp page being parented to the view causing it to show up briefly and behavior animating from uninitialized color

Reason for the change

Wallpaper's KCM loads StackView's item imperatively which triggers transition, causing inconsistency with other KCMs which don't animate anything on show.

What also adds to loading feel glitch-y and addressed:

  • The grid view loads and lays out asynchronously making e.g. scrollbar flicker. It's better to not show grid while it's not ready to use at all.
  • Wallpaper background configurable by user represents an unloaded state preview as well. It looks weird when white background flickers in dark theme, especially when "Scaled and cropped" or "Scaled" positioning selected which don't allow to even set this color.
  • Temporary page created for backward compatibility is being shown briefly during initialization

Test plan

Just build, install and try opening "Wallpapers" system settings page. It should not animate plugins StackView on load (but the animation on plugin selection is still there). Also flickering on image load is also removed and everything loads smoothly.

Edited by Artem Grinev

Merge request reports

Loading