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