https://bugs.kde.org/show_bug.cgi?id=406295

--- Comment #3 from Adam Williamson <ad...@happyassassin.net> ---
So I've been beating my head against this all day and not getting *that* far,
but I can at least say the problem is caused by our handling of clicks on the
checkbox in discover/qml/SourcesPage.qml:

                    onClicked: {
                        sourcesView.model.setData(idx, checkState,
Qt.CheckStateRole)
                        checked = Qt.binding(function() { return modelChecked
!== Qt.Unchecked; })
                    }

this is the bit that makes clicking the checkbox actually do something. What
it's *supposed* to do is tell the source backend to actually enable or disable
the source and then update its record as to whether the checkbox should be
checked or not - this all happens when we call sourcesView.model.setData - and
then reset the 'checked' state to whatever the backend now thinks it should be
(so the checkbox should change state if it did, or stay the same if it didn't).

If you take the onClicked block out entirely, the checkboxes will respond
perfectly to being clicked whichever state they're in. Of course, they won't
*do* anything. If that block is there, clicking them does what it is supposed
to so long as the backend supports it, but the checkbox gets sort of 'stuck' as
described here. Note that a *second* click while it's stuck does not change the
state again.

Interestingly, neither taking the `checked = Qt.binding(function() { return
modelChecked !== Qt.Unchecked; })` line out nor exactly inverting its logic (to
=== instead of !==) changes the observed behaviour *at all*.

The bug is not apparent on flatpak sources because of
https://bugs.kde.org/show_bug.cgi?id=443455 (the flatpak source backend is just
flat out missing the code to enable or disable sources), and it's not apparent
on PackageKit sources because the way that backend works is that it entirely
rebuilds the source list any time the repo configuration changes at all, which
sort of hides the bug.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to