bitcoin-core / gui-qml

Bitcoin GUI (experimental QML-based fork)
MIT License
107 stars 40 forks source link

Binding loop on InformationPage ScrollView contentHeight when appMode is "MOBILE" #339

Open jarolrod opened 1 year ago

jarolrod commented 1 year ago

Current behaviour

The InformationPage's continueButton is special cased to behave differently between mobile and desktop, as defined in the design file. https://github.com/bitcoin-core/gui-qml/pull/171 introduced this functionality. And https://github.com/bitcoin-core/gui-qml/pull/194 made it work with the new InformationPage control and it's scrollView. The logic on the scrollViews contentHeight implemented in 194 was faulty, and leads to a binding loop. This was hidden by the fact that we can't see terminal output when running the android app.

Expected behaviour

No binding loop.

Steps to reproduce

Apply this patch, then run the gui so this logic is ran when on desktop:

diff --git a/src/qml/controls/InformationPage.qml b/src/qml/controls/InformationPage.qml
index e652de666..c616bcf2a 100644
--- a/src/qml/controls/InformationPage.qml
+++ b/src/qml/controls/InformationPage.qml
@@ -111,7 +111,7 @@ Page {

     states: [
         State {
-            name: "MOBILE"
+            name: "DESKTOP"
             AnchorChanges {
                 target: continueButton
                 anchors.top: undefined
@@ -131,7 +131,7 @@ Page {
             }
         },
         State {
-            name: "DESKTOP"
+            name: "MOBILE"
             AnchorChanges {
                 target: continueButton
                 anchors.top: information.bottom

Relevant log output

$ ./src/qt/bitcoin-qt -signet -resetguisettings
qrc:/qml/controls/InformationPage.qml:46:5: QML ScrollView: Binding loop detected for property "contentHeight"

How did you obtain Bitcoin Core

Compiled from source

What version of Bitcoin Core are you using?

master

Operating system and version

Ubuntu 22.04.2 LTS x86_64

Machine specifications

No response

jarolrod commented 1 year ago

cc @johnny9