void DoDispose(bool fromDestroy) { if (_tickCallback.HasValue) { if (!GtkWidget.IsClosed) { Native.GtkWidgetRemoveTickCallback(GtkWidget, _tickCallback.Value); } _tickCallback = null; } //We are calling it here, since signal handler will be detached if (!GtkWidget.IsClosed) { Closed?.Invoke(); } foreach (var d in Disposables.AsEnumerable().Reverse()) { d.Dispose(); } Disposables.Clear(); if (!fromDestroy && !GtkWidget.IsClosed) { Native.GtkWindowClose(GtkWidget); } GtkWidget.Dispose(); if (_gcHandle.IsAllocated) { _gcHandle.Free(); } }
public void DoDispose(bool fromDestroy) { foreach (var d in Disposables.AsEnumerable().Reverse()) { d.Dispose(); } if (!GtkWidget.IsClosed) { Closed?.Invoke(); } Disposables.Clear(); if (!fromDestroy && !GtkWidget.IsClosed) { Native.GtkWindowClose(GtkWidget); } GtkWidget.Dispose(); }