Hi.

> -----Original Message-----
> From: Interest <interest-boun...@qt-project.org> On Behalf Of Alexander
> Dyagilev
> Sent: Wednesday, 22 July 2020 3:31 AM
> To: interest@qt-project.org
> Subject: [Interest] QML StackView: cannot push while already in the process
> of completing a push
> 
> Hello,
> 
> Qt 5.12.8, Android 10.
> 
> 
> We're getting the subject message in app log when trying to push an item in
> some occasions. And thus the item is not pushed.
> 
> 
> Is it a bug? We've tried to use this custom component with no luck:

I can't test your example because there's no way to interact with it, but the 
message you're seeing was added in this change:

https://codereview.qt-project.org/c/qt/qtquickcontrols2/+/301988

It should only occur when pushing recursively - i.e. pushing in response to an 
earlier push (as might be encountered by handling onDepthChanged by pushing 
another item), before the push function has finished executing.

If you believe your application shouldn't be receiving the message, please 
provide a minimal reproducible example and I'll take a look.

Cheers.

> import QtQuick 2.0
> 
> import QtQuick.Controls 2.12
> 
> StackView
> {
>     property var queue: []
> 
>     function queuedPush(item, properties, operation) {
>         var pushedOk = false;
>         if (!isBusy())
>         {
>             if (push(item, properties, operation))
>                 pushedOk = true;
>         }
>         if (!pushedOk)
>         {
>             console.log("queuing item");
>             queue.push({i: item, p: properties, o: operation});
>         }
>     }
> 
>     function queuedClear() {
>         queue = [];
>         clear();
>     }
> 
>     function isBusy() {
>         return busy || state == StackView.Deactivating || state ==
> StackView.Activating;
>     }
> 
>     function checkQueue() {
>         console.log("checking queue");
>         if (!isBusy() && !queue.empty) {
>             console.log("pushing...");
>             var item = queue.shift();
>             push(item.i, item.p, item.o);
>         }
>     }
> 
>     onBusyChanged: checkQueue()
>     onStateChanged: checkQueue()
> }

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to