Done:
http://bugzilla.qooxdoo.org/show_bug.cgi?id=7411
Thank you for further investigation.
As promised I've done some tests on my own with interesting and promising
results (have a look at the bug report).
Maybe off topic: While digging thru the framework code I found this snipped
inside Widget.js _disposeChildControls method:
if (!Widget.contains(this, control)) {
control.destroy();
} else {
control.dispose();
}
Why the control is destroyed (removed before disposed) when the widget NOT
contains the control?
I'm wondering because of the fact that this snipped creates errors ("not a
child of") with my test implementation of Dispose flush method. After removing
the negotiation (!) everything worked fine. The confusion thing ( at least for
me ;) ) is, why this didn't lead to an exception with the current flush
implementation?
Regards,
Andreas
Von: Andreas Parusel [mailto:andreas.paru...@1und1.de]
Gesendet: Freitag, 17. Mai 2013 11:18
An: qooxdoo Development
Betreff: Re: [qooxdoo-devel] Howto dispose huge widget structure?
Hi Andreas,
yes, you brought up some interesting and valid points regarding the blog post
in [3].
It would be great if you could report the enhancement-bug at
http://bugzilla.qooxdoo.org and also point to the blog post there. Our
framework team will then investigate the issue and you as the bug-reporter will
get notification-emails if the status of the bug changes.
Andreas Parusel
Software Developer
Applications & Integration
1&1 Internet AG
Ernst-Frey-Straße 10
DE-76135 Karlsruhe
Telefon: +49 721 91374-6184
E-Mail: andreas.paru...@1und1.de<mailto:andreas.paru...@1und1.de>
Web: www.1und1.de<http://www.1und1.de>
Amtsgericht Montabaur / HRB 6484
Vorstände: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Robert Hoffmann,
Andreas Hofmann, Markus Huhn, Hans-Henning Kettler, Dr. Oliver Mauss, Jan
Oetjen, Martin Witt, Christian Würst
Aufsichtsratsvorsitzender: Michael Scheeren
Member of United Internet
Am 16.05.2013 um 11:05 schrieb "Fink, Andreas"
<andreas.f...@afb-group.eu<mailto:andreas.f...@afb-group.eu>>:
Hi Andreas (little congratulation to our parents for choosing a good name :)),
Thank you for your answers I only have a few comments and additional questions
before start working in one direction:
- Does it make any difference if we add the window to qx.ui.core.queue.Dispose?
This wouldn't make any difference because that's exactly what
qx.ui.core.Widget.destroy() does.
Just to understand what's going on:
Widget. destroy(), removes the widget from parent, add it to the dispose queue
and then directly calls flush()?
- I stumbled over a blog post [3] where a solution is given, maybe this would
be a nice feature for qooxdoo disposing process?
What do you think?
This could indeed be a workaround for your problem but I don't think it would
be a good generic behavior for every use-case, because it would simply slow
down every object-disposing, no matter if the browser actually stumbles or not.
I think it would
You're right I also think it would slow down the disposing (not sure how hard,
maybe just a little) but as mentioned in the blog:
"Note: Remember this will also give you a much more responsive browser during
execution of this expensive code also."
That's another (smaller) problem I noticed when disposing a lot of objects or a
deep object structure, the browser stop responding until disposure is done (not
only IE 8, newer Browser does too), so even if it takes a little longer, maybe
the end-users feeling would be better when they don't have to wait.
These are only presumptions, I think I'll have a closer look in qooxdoos
disposing process and try to implement this for internal tests. If I make good
experience I will tell you.
- Any other ideas are really welcome! :)
I see two possible ways how to solve the issue:
1. Instead of destroying the whole window at once, you could group the forms
inside the win into smaller chunks and destroy them one after another.
Thank you! I think this is a possible and easy to implement workaround. I
already have some "chunks" (tabs, sub-forms, field groups, ...). I'll try to
first destroy them before destroying the window.
2. You could reuse the forms as you already mentioned. Also ake a look at the
helper-class qx.util.ObjectPool which offers some convenience for exactly this
purpose.
Thank you for the hint. I'll have a look.
Hope this helps!
It does :)
Regards,
Andreas
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net<mailto:qooxdoo-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel