Yash Bavadiya

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: Gradient bar rendering as flat empty rectangle

After: Gradient bar showing correct multi-color gradient

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.

Gradient widget showing RGBA tooltip on hover

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.