Ability to safe destroy widget later by event.

This commit is contained in:
and3md 2017-03-22 19:31:28 +01:00
parent 2433db588a
commit 4459a5f60d
2 changed files with 21 additions and 1 deletions

View File

@ -1649,6 +1649,20 @@ class RunnableEvent : CustomEvent {
}
}
/// save destroy event
class SafeDestroyEvent : RunnableEvent {
Widget _widgetToDestroy;
this (Widget widgetToDestroy)
{
_widgetToDestroy = widgetToDestroy;
super(1,null, delegate void () {
if (_widgetToDestroy.parent)
_widgetToDestroy.parent.removeChild(_widgetToDestroy);
destroy(_widgetToDestroy);
});
}
}
interface CustomEventTarget {
/// post event to handle in UI thread (this method can be used from background thread)
void postEvent(CustomEvent event);

View File

@ -519,7 +519,13 @@ class Window : CustomEventTarget {
destroy(_timerQueue);
_eventList = null;
}
/// safe destroy widget
void safeWidgetDestroy(Widget widgetToDestroy)
{
SafeDestroyEvent ev = new SafeDestroyEvent(widgetToDestroy);
postEvent(ev);
}
private void animate(Widget root, long interval) {
if (root is null)
return;