public override void Dispose() { // HACK: this shouldn't be needed but GTK# keeps GC handles // these callbacks for some reason and thus leaks :( _MessageTextTagTable.Foreach(tag => { if (tag is LinkTag) { tag.TextEvent -= OnLinkTagTextEvent; } else if (tag is PersonTag) { tag.TextEvent -= OnPersonTagTextEvent; } }); _MessageTextTagTable.Dispose(); base.Dispose(); }