Quantcast

Exceptions on widget disposal within the layout queue

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Exceptions on widget disposal within the layout queue

Dietrich Streifert
Hi all,

While writing some tests for my app in testrunner, I stumbled over some
exceptions on widget dispose which made the tests fail.

The relevant part of my test is as follows:

       window.close();
       window.dispose();

       this.assertTrue(window.isDisposed());

Running this test gives the following (again relevant part only) exception:

Error message is:
TypeError: Cannot read property 'isNativelyFocusable' of null
Stack trace:
qx.ui.core.Widget:2883:19
qx.core.Property:701:27), :3:624

It seems that after disposal the qx queues are still flushing changes to
the widget properties and fail if the content element was already
removed, thus this.getContentElement() or this.getFocusElement() are
returning null.

This behaviour is simply reproducible with the following playground example

     http://tinyurl.com/zynqxop

Please click the button while having the log view open. You'll see the
exception occuring. You may need to click on the playgrounds run button
again to see the exception appear in the log window.

Im not 100% sure but I think that the tests succeeded in qx 4.1, which
means that there must have been some changes in the disposal logic or
queue logic since.

Any help or idea would be great.

Regards
Dietrich


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Exceptions on widget disposal within the layout queue

Dietrich Streifert
It seems that already disposed widgets still get queued in the layout queue.

One solution would be to avoid this in method qx.ui.core.LayoutItem in
method renderLayout by excplicitly testing against isDisposed and return
null. This would be by adding the code

     if(this.isDisposed()) {
         return null;
     }

before
https://github.com/qooxdoo/qooxdoo/blob/master/framework/source/class/qx/ui/core/LayoutItem.js#L443

But the main question is: is it necessary for some reason that
renderLayout is called "after" dispose is called()?

Regards
Dietrich

Am 04.02.2016 um 09:41 schrieb Dietrich Streifert:

> Hi all,
>
> While writing some tests for my app in testrunner, I stumbled over
> some exceptions on widget dispose which made the tests fail.
>
> The relevant part of my test is as follows:
>
>       window.close();
>       window.dispose();
>
>       this.assertTrue(window.isDisposed());
>
> Running this test gives the following (again relevant part only)
> exception:
>
> Error message is:
> TypeError: Cannot read property 'isNativelyFocusable' of null
> Stack trace:
> qx.ui.core.Widget:2883:19
> qx.core.Property:701:27), :3:624
>
> It seems that after disposal the qx queues are still flushing changes
> to the widget properties and fail if the content element was already
> removed, thus this.getContentElement() or this.getFocusElement() are
> returning null.
>
> This behaviour is simply reproducible with the following playground
> example
>
>     http://tinyurl.com/zynqxop
>
> Please click the button while having the log view open. You'll see the
> exception occuring. You may need to click on the playgrounds run
> button again to see the exception appear in the log window.
>
> Im not 100% sure but I think that the tests succeeded in qx 4.1, which
> means that there must have been some changes in the disposal logic or
> queue logic since.
>
> Any help or idea would be great.
>
> Regards
> Dietrich
>


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Loading...