Mercurial > pidgin
comparison finch/gntconv.c @ 28409:71dc3b5edbe7
Rejoin an opened chat after an account reconnects.
Previously, we used to rejoin an open chat only if the account was
disconnected due to an error. But now, the chat rooms will be rejoined
even if we disconnected manually.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 21 Oct 2009 23:26:41 +0000 |
parents | f15b14df260d |
children | 72472238ad45 |
comparison
equal
deleted
inserted
replaced
28408:d1c18bd588e2 | 28409:71dc3b5edbe7 |
---|---|
365 g_hash_table_destroy(comps); | 365 g_hash_table_destroy(comps); |
366 } | 366 } |
367 } | 367 } |
368 } | 368 } |
369 | 369 |
370 static void | |
371 account_signing_off(PurpleConnection *gc) | |
372 { | |
373 GList *list = purple_get_chats(); | |
374 | |
375 /* We are about to sign off. See which chats we are currently in, and mark | |
376 * them for rejoin on reconnect. */ | |
377 while (list) { | |
378 PurpleConversation *conv = list->data; | |
379 if (!purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) { | |
380 purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE)); | |
381 purple_conversation_write(conv, NULL, _("The account has disconnected and you are no " | |
382 "longer in this chat. You will be automatically rejoined in the chat when " | |
383 "the account reconnects."), | |
384 PURPLE_MESSAGE_SYSTEM, time(NULL)); | |
385 } | |
386 list = list->next; | |
387 } | |
388 } | |
389 | |
370 static gpointer | 390 static gpointer |
371 finch_conv_get_handle(void) | 391 finch_conv_get_handle(void) |
372 { | 392 { |
373 static int handle; | 393 static int handle; |
374 return &handle; | 394 return &handle; |
1431 PURPLE_CALLBACK(buddy_signed_on_off), NULL); | 1451 PURPLE_CALLBACK(buddy_signed_on_off), NULL); |
1432 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(), | 1452 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(), |
1433 PURPLE_CALLBACK(account_signed_on_off), NULL); | 1453 PURPLE_CALLBACK(account_signed_on_off), NULL); |
1434 purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_conv_get_handle(), | 1454 purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_conv_get_handle(), |
1435 PURPLE_CALLBACK(account_signed_on_off), NULL); | 1455 PURPLE_CALLBACK(account_signed_on_off), NULL); |
1456 purple_signal_connect(purple_connections_get_handle(), "signing-off", finch_conv_get_handle(), | |
1457 PURPLE_CALLBACK(account_signing_off), NULL); | |
1436 } | 1458 } |
1437 | 1459 |
1438 void finch_conversation_uninit() | 1460 void finch_conversation_uninit() |
1439 { | 1461 { |
1440 purple_signals_disconnect_by_handle(finch_conv_get_handle()); | 1462 purple_signals_disconnect_by_handle(finch_conv_get_handle()); |