SUMMARY If the user activates the screen reader (e.g. with Meta+Alt+S) while one or more system monitor widgets are present on the panel or desktop, there will be a perpetual warning printed every time a legend value for one or more widgets updates: qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd668f0f0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514(0x60fdd666c1a0)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd58b4bd0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514_QML_516(0x60fdd90f55e0)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd91e9ff0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514_QML_516(0x60fdd91afc40)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd3fbb8f0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514_QML_516(0x60fdd1b94c70)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd58b4bd0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514_QML_516(0x60fdd90f55e0)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd6681a90 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514(0x60fdd65ef670)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd6662ca0 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514(0x60fdd65efa30)"invisible") qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox: QAccessibleInterface(0x60fdd66ced20 name="" role=Client childc=2 obj=LegendDelegate_QMLTYPE_514(0x60fdd66b8e30)rect=QRect(912,3 98x15)) With several regularly updating widgets, this can amount to several warnings per second, and they will continue indefinitely even after the screen reader is turned off. Only restarting plasmashell stops the warnings. The value property has particular semantics for some kinds of controls in QtQuick's Accessible (see https://doc.qt.io/qt-6/qml-qtquick-accessible.html#role-prop). It seems the chart legend triggers this somehow. The same chart in the system monitor does not seem to do this however, so it seems something specific to the widget and/or plasmashell seems to be the cause. I've reproduced this on master (with Tuxedo OS, kinfo below) and stock Fedora 41 with 6.2.5. STEPS TO REPRODUCE 1. Make sure orca is installed. Start plasmashell from a terminal (or journalctl -f) to see the plasmashell warnings 2. Open system monitor, right-click "Network Speed" chart, add as desktop widget 3. Press Meta+Alt+S to enable the screen reader OBSERVED RESULT Multiple warnings of the above type per second are printed EXPECTED RESULT No warnings SOFTWARE/OS VERSIONS Operating System: TUXEDO OS KDE Plasma Version: 6.3.80 KDE Frameworks Version: 6.11.0 Qt Version: 6.8.1 Kernel Version: 6.11.0-108013-tuxedo (64-bit) Graphics Platform: Wayland
Eeeeee, can confirm.
hmm, LegendDelegate doesn't seem to export anything wrt Accessible
Alright, I did a little digging because the non-stop stream of errors makes a11y testing extremely annoying. This is a minimal test case that triggers the issue: ``` import QtQuick import QtQuick.Controls Button { text: value property int value: 0 onClicked: value++ } ``` Click the button, and you get the same "qt.accessibility.atspi: ValueChanged event and no ValueInterface or ComboBox" error. qquickaccssibleattached seems to turn every valueChanged signal (i.e. every property named value that any Item has) into a QAccesssible::ValueChanged event, forwards that through some intermediaries to atspiadaptor, which then complains that the item is not a ValueInterface of ComboBox because the at-spi spec value thingy only makes sense for those. I think this happens at around line 350 in qquickaccessibleattached.cpp/ line 193 of qquickaccessibleattached_p.h, but the metaobject stuff goes a little over my head and I can't quite follow it (though I can't see anything else where this could possibly happen). I tried renaming the value property in LegendDelegate and that solves the error, but I don't think we can do that for API stability reasons. I'm not sure how to proceed from here. This likely requires changes in Qt (maybe either not forwarding all valueChanged events, or dropping them silently in atspiadaptor if there's no ValueInterface/Combobox).
Sounds like a plain old Qt bug then. While we could deprecate value and add a new property, I'd rather not since value is used as a name quite a bit in QuickCharts. > qquickaccssibleattached seems to turn every valueChanged signal (i.e. every property named value that any Item has) into a QAccesssible::ValueChanged event That just sounds wrong and like very naive code to me.
Sounded wrong to me too tbh. But there may be reasons for it, I don't grasp all the internals. I'll prepare a qtbug then. It'll be my first, fingers crossed...
https://bugreports.qt.io/browse/QTBUG-133564