go-qml / qml

QML support for the Go language
Other
1.96k stars 189 forks source link

Differences between Qt versions 5.0.2 and Qt 5.3 #86

Closed pebbe closed 9 years ago

pebbe commented 9 years ago

I installed qml versions 0 and 1 against Qt versions 5.0.2 and 5.3

I build gofusion against all versions. (I made a few changes to make gofusion build with qml version 1)

With Qt version 5.0.2 the program runs fine. With Qt version 5.3 it show weird behavior. For instance, when it starts up with two numbers in different columns, and you press the down arrow, the nummers go to the bottom line, but no new number appears.

There is no difference in behavior between qml version 0 and 1.

I have no idea were this bug comes from. Is it in gofusion? Or has something changed from Qt 5.0.2 to 5.3 that qml doesn't handle correctly?

go version go1.3.1 linux/amd64

niemeyer commented 9 years ago

I'm not sure. I haven't tested the package much on Qt 5.3, other than checking that it basically works.

Do you have a small reproducible test case that shows the odd behavior?

pebbe commented 9 years ago

I found a way to fix it in gofusion.

The file gofusion.qml has this fragment:

            Behavior on x  {
                NumberAnimation  { duration: 500; easing.type: Easing.OutBounce;
                    onRunningChanged: {
                        if (!running) {
                            ctrl.handleMoveAnimationDone();
                        }
                    }
                }
            }
            Behavior on y  {
                NumberAnimation  { duration: 500; easing.type: Easing.OutBounce }
            }

When I change it to this, it works fine with Qt 5.3:

            Behavior on x  {
                NumberAnimation  { duration: 500; easing.type: Easing.OutBounce; 
                    onRunningChanged: {
                        if (!running) {
                            ctrl.handleMoveAnimationDone();
                        }
                    } 
                }
            }
            Behavior on y  {
                NumberAnimation  { duration: 500; easing.type: Easing.OutBounce; 
                    onRunningChanged: {
                        if (!running) {
                            ctrl.handleMoveAnimationDone();
                        }
                    } 
                }
            }

Without the change, vertical movements don't call handleMoveAnimationDone with Qt version 5.3.

With the change, horizontal and vertical movements call handleMoveAnimationDone twice with Qt version 5.0.2.

I don't know what to think of this.

niemeyer commented 9 years ago

It sounds like the behavior in 5.3 is correct. They've probably fixed a bug. There's no reason for the behavior on x to be affecting the behavior on y.