void OnChatAdded(object sender, ChatViewAddedEventArgs e)
{
Trace.Call(sender, e);
GLib.Idle.Add(delegate {
var chatView = (ChatView) CreateChatView(e.ChatModel,
e.ChatType,
e.ProtocolManagerType);
chatView.ID = e.ChatID;
chatView.Name = e.ChatID;
chatView.Position = e.ChatPosition;
chatView.ProtocolManager = e.ProtocolManager;
f_Chats.Add(chatView);
if (f_Config != null) {
chatView.ApplyConfig(f_Config);
}
// POSSIBLE REMOTING CALL
int idx = GetSortedChatPosition(chatView);
#if LOG4NET
f_Logger.Debug("OnChatAdded(): adding " +
"<" + chatView.ID + "> at: " + idx);
#endif
if (idx == -1) {
f_Notebook.AppendPage(chatView, chatView.LabelWidget);
} else {
f_Notebook.InsertPage(chatView, chatView.LabelWidget, idx);
}
TreeView.Append(chatView);
// notify the sync manager that the ChatView is ready to be synced
SyncManager.ReleaseSync(chatView);
#if GTK_SHARP_2_10
f_Notebook.SetTabReorderable(chatView, true);
#endif
// we can't do auto switch for remote engines for now as that
// kills all unseen highlights, see:
// https://www.smuxi.org/issues/show/866
if (Frontend.IsLocalEngine) {
if ((chatView is PersonChatView && AutoSwitchPersonChats) ||
(chatView is GroupChatView && AutoSwitchGroupChats)) {
CurrentChatView = chatView;
}
}
if (ChatAdded != null) {
ChatAdded(this, new ChatViewManagerChatAddedEventArgs(chatView));
}
return false;
});
}