From 810ae8d0bc235f3b6ff0b282096eba6f9c62ae25 Mon Sep 17 00:00:00 2001 From: Pierre Lamot Date: Sun, 2 Nov 2025 18:11:13 +0100 Subject: [PATCH] qml: fix null access due to `Qt.callLater` fix warning "TypeError: Value is null and could not be converted to an object (exception occurred during delayed function evaluation)" When using a lambda with `callLater`, QML doesn't check with that used objects exists, this can be problematic during the destruction phase. Using an object function fix the issue (observed with Qt 6.2 and 6.8) --- modules/gui/qt/widgets/qml/FadingEdge.qml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/gui/qt/widgets/qml/FadingEdge.qml b/modules/gui/qt/widgets/qml/FadingEdge.qml index b3f5999a0f..89bf6ea822 100644 --- a/modules/gui/qt/widgets/qml/FadingEdge.qml +++ b/modules/gui/qt/widgets/qml/FadingEdge.qml @@ -199,20 +199,24 @@ Item { onBeginningFadeSizeChanged: { if (!beginningFadeBehavior.enabled) { - Qt.callLater(() => { - beginningFadeBehavior.enabled = true - }) + Qt.callLater(effect._enableBeginningFadeBehavior) } } onEndFadeSizeChanged: { if (!endFadeBehavior.enabled) { - Qt.callLater(() => { - endFadeBehavior.enabled = true - }) + Qt.callLater(effect._enableEndFadeBehavior) } } + function _enableBeginningFadeBehavior() { + beginningFadeBehavior.enabled = true + } + + function _enableEndFadeBehavior() { + endFadeBehavior.enabled = true + } + Component.onCompleted: { console.assert(shaderEffectSource.shaderEffect === null) shaderEffectSource.shaderEffect = this