Yes, I would like to thank Simon and Mitch for taking care of this.

The prospect of spending few days on reviewing code and rearranging
properties was not making me happy :)

2018-03-09 1:44 GMT+01:00 Jason H <[email protected]>:
> Neat! I've never seen a patch land that fast! I'm going to be happy with this 
> one!
>
>
>> Sent: Thursday, March 08, 2018 at 7:11 AM
>> From: "Tomasz Olszak" <[email protected]>
>> To: No recipient address
>> Cc: [email protected]
>> Subject: Re: [Development] Is Qt Quick Item properties order significant?
>>
>> With help from IRC I submitted regression Bug:
>> https://bugreports.qt.io/browse/QTBUG-66945
>>
>>
>> 2018-03-08 8:25 GMT+01:00 Tomasz Olszak <[email protected]>:
>> > The same behavior is when tmp1 is initialized with C++ function.
>> > Function is called twice too.
>> >
>> > 2018-03-08 8:15 GMT+01:00 Tomasz Olszak <[email protected]>:
>> >> Hi thanks for feedback,
>> >>
>> >> I agree that putting everything in Component.onCompleted would be
>> >> worse workaround
>> >> than changing order but more explicit. On the other hand it is a lot
>> >> less declarative.
>> >>
>> >> In my application I build different kinds of settings using list of 
>> >> objects or
>> >> strings. I encountered this issue while building list of Time Zones. The 
>> >> Item
>> >> that contained this list was instantiated in more than a second. Then I 
>> >> realized
>> >> that the function that creates and filters list is called twice. There are
>> >> numerous places in my application that uses function to initialize object
>> >> properties.
>> >>
>> >> Moreover if I change tmp0 to: "property int tmp0: tmp1 + 1"
>> >> getTmp1Value is still called twice which seems like a bug.
>> >> AFAIK Qt knows dependencies between bindings because it triggers 
>> >> reevaluation
>> >> in dependent property has changed. Seems like this dependency is ignored 
>> >> during
>> >> initialization phase. Depending on complexity and duration of execution of
>> >> bindings expression instantiation of component can be almost twice longer
>> >> without any explicit cause.
>> >>
>> >> Am I right or missing something?
>> >>
>> >> 2018-03-08 4:53 GMT+01:00 Jason H <[email protected]>:
>> >>>
>> >>> I can see your point. But tmp1 is not changing during the first property 
>> >>> init, so it won't be evaluated. The way to work around this 
>> >>> order-specifc init is to do it explicitly in a Component.onCompleted
>> >>>
>> >>> Sent: Wednesday, March 07, 2018 at 4:25 AM
>> >>> From: "Tomasz Olszak" <[email protected]>
>> >>> To: [email protected]
>> >>> Subject: [Development] Is Qt Quick Item properties order significant?
>> >>> Hello,
>> >>>
>> >>> I'm writing here because I don't know if it is a bug or intended 
>> >>> behavior and I should look more carefully in docs (haven't found 
>> >>> anything mentioning it yet).
>> >>>
>> >>> Please consider 2 examples (can be pasted anywhere - you will see logs 
>> >>> from object initialization):
>> >>> Item {
>> >>>     property int tmp0: getTmp0Value(tmp1)
>> >>>     property int tmp1: getTmp1Value()
>> >>>     function getTmp1Value() {
>> >>>         console.log("getTmp1Value should be called only once and before 
>> >>> getTmp0Value");
>> >>>         return 1;
>> >>>     }
>> >>>     function getTmp0Value(arg) {
>> >>>         console.log("getTmp0Value should be called only once and aftere 
>> >>> getTmp1Value");
>> >>>         return arg + 1;
>> >>>     }
>> >>> }
>> >>>
>> >>> And with small modification (order of properties has changed):
>> >>> Item {
>> >>>    property int tmp1: getTmp1Value()
>> >>>    property int tmp0: getTmp0Value(tmp1)
>> >>>    ....
>> >>> }
>> >>>
>> >>>
>> >>> First one calls getTmp1Value twice, second one - as expected only once. 
>> >>> Seems like when tmp0 is initialized it does not initialize tmp1 first as 
>> >>> dependency but takes expression binding from tmp1 executes it and assign 
>> >>> result to tmp0, then executes the same expression for tmp1 to initialize 
>> >>> it.
>> >>>
>> >>> Is it a bug or do I miss something?
>> >>>
>> >>> Tomek
>> >>>
>> >>>
>> >>> _______________________________________________ Development mailing list 
>> >>> [email protected] 
>> >>> http://lists.qt-project.org/mailman/listinfo/development
>> _______________________________________________
>> Development mailing list
>> [email protected]
>> http://lists.qt-project.org/mailman/listinfo/development
>>
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to