Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-76796

Qt 5.11 -> 5.12 regression: binding typeof(name) not reevaluating when property gets defined



    • Commits:
      cca5d1ec2f2c1f038c7c933b6c57d89888fc683b (qt/qtdeclarative/5.12)


      Beginning with Qt 5.12, the binding like typeof (name) will not update when property name was undefined and then became defined as context property. It worked in Qt 5.11 and before.

      Consider the following QML code:

      import QtQuick 2.11
      import QtQuick.Window 2.11
      Window {
          visible: true
          Text { text: "model is " + typeof (model) }

      Then I define model context property through C++ code, like:

      engine.rootContext()->setContextProperty("model", QVariant::fromValue(obj));

      I expect binding to be reevaluated, however it isn't. It is now only updated only if it directly binds to model (without the typeof check).
      The text remains model is null instead of changing to model is object.

      See the attachment for the full project demonstrating the problem.

      This breaks quite a much of my code (preventing upgrade from Qt 5.11), as I was using the typeof frequently to avoid ReferenceError.


      Please let me know, if any further information is needed.


        1. main.cpp
          0.9 kB
        2. main.qml
          0.1 kB
        3. qml.qrc
          0.1 kB
        4. UpdateTest.pro
          1 kB



            • Assignee:
              shausman Simon Hausmann
              mwu Michał Urbańczyk
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created:

                Gerrit Reviews

                There are no open Gerrit changes