Week 7: Gradient Widget Review Fixes
This is a weekly update from my Google Summer of Code 2026 project with KDE, improving effect widgets in Kdenlive, a free and open source video editor.
MR !911 opened and reviewed
Opened the Gradient widget MR this week, closing issue #1064 and referencing #2206. Jean-Baptiste reviewed it and flagged a few things.
Fixing the gradient render bug
The gradient bar was rendering as a flat, empty rectangle, only the stop handles below it showed color. Root cause: the native QStyle::drawPrimitive(PE_Frame, ...) call added for frame styling was painting its interior background after the gradient fill, covering it completely under Breeze's style. Fixed by reordering the paint sequence, frame first, then the checkerboard-for-alpha and gradient fill inside the frame's content rect, so nothing gets overpainted.
Before:

After:

Missing 32-stop cap at the model layer
The widget already capped stops at 32, but AssetParameterModel's parsing path for ParamType::GradientEditor had no equivalent check. A hand-edited or corrupted project file could bypass the widget entirely and load more than MLT's gradientmap filter supports. Added truncation at the model level so both layers enforce the same limit independently.
Handle visibility fix
The first stop's handle (black) was nearly invisible against Kdenlive's dark theme. Added a stroke around each unselected handle using the palette's text color at 50% opacity, so dark-colored stops stay visible regardless of theme.
RGBA tooltip on hover
Added a small tooltip showing a stop's exact RGBA value on hover, requested during review.

Midterm evaluation
Submitted July 10.
What's next
MR !911 is rebased on current master and pushed with all review fixes; waiting on another look from Jean-Baptiste.