X-Git-Url: http://cgit.babelmonkeys.de/?p=jubjub.git;a=blobdiff_plain;f=src%2Fgui%2Fgtk%2FJubGtkRosterUI.m;h=c5163e1ff0c8387619eb6e54b8458e8fb8087a2d;hp=9a2da292a1f68075d0f02e176e2bf0c9efd9b4bb;hb=af5efc909e9807220021bfebb9029f6cb4956856;hpb=e460e32a2b349e4e1a58fb20aff8271db26f737d diff --git a/src/gui/gtk/JubGtkRosterUI.m b/src/gui/gtk/JubGtkRosterUI.m index 9a2da29..c5163e1 100644 --- a/src/gui/gtk/JubGtkRosterUI.m +++ b/src/gui/gtk/JubGtkRosterUI.m @@ -100,26 +100,31 @@ static gboolean refilter_roster(gpointer data) - (void)connection: (XMPPConnection*)connection didReceiveMessage: (XMPPMessage*)message { - JubGtkChatUI *chat = [chatMap objectForKey: [message.from bareJID]]; + JubGtkChatUI *chat = + [chatMap objectForKey: [message.from bareJID]]; if (chat == nil) { OFString * title = [@"Chat with " stringByAppendingString: [message.from bareJID]]; - chat = [JubGtkChatUI alloc]; - [[chat initWithTitle: title - sendBlock: ^(OFString *text) { - XMPPMessage *msg = - [XMPPMessage messageWithType: @"chat"]; - msg.to = message.from; - msg.body = text; - [connection sendStanza: msg]; - - [chat addMessage: msg.body - sender: [message.to bareJID]]; - }] autorelease]; + + chat = [[[JubGtkChatUI alloc] + initWithTitle: title + closeBlock: ^{ + [chatMap removeObjectForKey: + [message.from bareJID]]; + } + sendBlock: ^(OFString *text) { + XMPPMessage *msg = + [XMPPMessage messageWithType: @"chat"]; + msg.to = message.from; + msg.body = text; + [connection sendStanza: msg]; + } + ] autorelease]; [chatMap setObject: chat forKey: [message.from bareJID]]; } + [chat addMessage: message.body sender: [message.from bareJID]]; }