[SailfishDevel] Cannot pop while operation is in progress : SOLVED

Wim de Vries wsvries at xs4all.nl
Wed Aug 14 08:09:52 UTC 2013


Thanks Mathew,
Your suggestion indeed works like this:
pageStack.replaceAbove(pageStack.previousPage(),
Qt.resolvedUrl("controls/MTextEdit.qml"))

I got the error because there was still a pop() somewhere in the current
page!
Silly, I had been fiddling to much.
Thanks again.

I now have a nice working app with mixed core QML and Sailfish UI and
controlled by c++!

r
wim


> Correct me if I'm wrong, but I understand your page stack situation to be
> like this:
> [ ..., page0, page1, page2 ]
> and you want to pop page2, and also replace page1 with a new page, so you
> end up with:
> [ ..., page0, page3 ]
>
> Is that right?  If so, then the first argument to replaceAbove() is the
> page above which all other pages should be popped - in the above example,
> page0 would be the argument.  So passing pageStack.currentPage as the
> first argument to replaceAbove() is invalid, because there can't be any
> pages above the top.
>
> Thanks,
> Matt
>
> ________________________________________
> From: Wim de Vries [wsvries at xs4all.nl]
> Sent: Wednesday, August 14, 2013 5:42 PM
> To: Matthew Vogt
> Cc: Wim de Vries; devel at lists.sailfishos.org
> Subject: RE: [SailfishDevel] Cannot pop while operation is in progress
>
> Thanks Matt,
> This is my function in main.qml (called from within c++)
>   function loadTextEdit(text)
>     {
>     //pageStack.push(Qt.resolvedUrl("controls/MTextEdit.qml"))//works OK!
>     pageStack.replaceAbove(pageStack.currentPage,
> Qt.resolvedUrl("controls/MTextEdit.qml"))
>     pageStack.currentPage.setText(text)
>     return true;
>     }
> this results in this error:
> file:///usr/lib/qt5/qml/Sailfish/Silica/PageStack.js:111: Error: Cannot
> replace with target page at the top of the stack
>
> r
> wim
>
>> "Cannot pop while operation is in progress" means that the previous
>> PageStack operation is still animating, and you must wait until it
>> finishes before issuing the next PageStack operation.  There are various
>> strategies you can use for this, but they will all result in
>> unattractive
>> visual changes: either double animations or disorientating jumps.
>>
>> It sounds like you should probably use the 'replaceAbove' function:
>> https://sailfishos.org/sailfish-silica/qml-sailfishsilica-pagestack.html#replaceAbove-method
>> This function is equivalent to "pop all pages above the supplied target
>> page, then push a new page", except that it occurs with a single visual
>> transition.
>>
>> Thanks,
>> Matt
>>
>> ________________________________
>> From: devel-bounces at lists.sailfishos.org
>> [devel-bounces at lists.sailfishos.org] on behalf of Wim de Vries
>> [wsvries at xs4all.nl]
>> Sent: Wednesday, August 14, 2013 6:02 AM
>> To: devel at lists.sailfishos.org
>> Subject: [SailfishDevel] Cannot pop while operation is in progress
>>
>> If I do pop() within a current page
>> and
>> pageStack.replace(pageStack.currentPage,
>> Qt.resolvedUrl("controls/MTextEdit.qml"))
>> within main.qml I get:
>> "Cannot pop while operation is in progress"
>>
>> I need to remove the previous page, so that the user cannot navigate
>> back
>> to this page.
>> Thanks.
>>
>
>
>




More information about the Devel mailing list