comparison src/gtkconv.c @ 11855:dba7bf61e64c

[gaim-migrate @ 14146] sadrul came up with a more betterer way. yay. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Thu, 27 Oct 2005 19:11:33 +0000
parents 4ab3ce602932
children fa7b84231ece
comparison
equal deleted inserted replaced
11854:4ab3ce602932 11855:dba7bf61e64c
3802 } 3802 }
3803 3803
3804 return NULL; 3804 return NULL;
3805 } 3805 }
3806 3806
3807 static void
3808 buddy_update_cb(GaimBlistNode *bnode, gpointer null)
3809 {
3810 GList *list;
3811
3812 g_return_if_fail(bnode);
3813 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(bnode));
3814
3815 for (list = gaim_gtk_conv_windows_get_list(); list; list = list->next)
3816 {
3817 GaimGtkWindow *win = list->data;
3818 GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win);
3819
3820 if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM)
3821 continue;
3822
3823 gaim_conversation_update(conv, GAIM_CONV_ACCOUNT_ONLINE);
3824 }
3825 }
3826
3807 /************************************************************************** 3827 /**************************************************************************
3808 * Conversation UI operations 3828 * Conversation UI operations
3809 **************************************************************************/ 3829 **************************************************************************/
3810 void 3830 void
3811 gaim_gtkconv_new(GaimConversation *conv) 3831 gaim_gtkconv_new(GaimConversation *conv)
5570 clear_command_cb, _("clear: Clears the conversation scrollback."), NULL); 5590 clear_command_cb, _("clear: Clears the conversation scrollback."), NULL);
5571 gaim_cmd_register("help", "w", GAIM_CMD_P_DEFAULT, 5591 gaim_cmd_register("help", "w", GAIM_CMD_P_DEFAULT,
5572 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, NULL, 5592 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, NULL,
5573 help_command_cb, _("help &lt;command&gt;: Help on a specific command."), NULL); 5593 help_command_cb, _("help &lt;command&gt;: Help on a specific command."), NULL);
5574 5594
5595 gaim_signal_connect(gaim_blist_get_handle(), "buddy-added", handle,
5596 G_CALLBACK(buddy_update_cb), NULL);
5597 gaim_signal_connect(gaim_blist_get_handle(), "buddy-removed", handle,
5598 G_CALLBACK(buddy_update_cb), NULL);
5599
5575 gaim_conversations_set_ui_ops(&conversation_ui_ops); 5600 gaim_conversations_set_ui_ops(&conversation_ui_ops);
5576 } 5601 }
5577 5602
5578 void 5603 void
5579 gaim_gtk_conversations_uninit(void) 5604 gaim_gtk_conversations_uninit(void)
5580 { 5605 {
5581 gaim_prefs_disconnect_by_handle(gaim_gtk_conversations_get_handle()); 5606 gaim_prefs_disconnect_by_handle(gaim_gtk_conversations_get_handle());
5607 gaim_signals_disconnect_by_handle(gaim_gtk_conversations_get_handle());
5582 gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle()); 5608 gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle());
5583 } 5609 }
5584 5610
5585 5611
5586 5612
6180 if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) && 6206 if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) &&
6181 (gtkconv->u.im->animate)) 6207 (gtkconv->u.im->animate))
6182 start_anim(NULL, gtkconv); 6208 start_anim(NULL, gtkconv);
6183 } 6209 }
6184 6210
6185 static void
6186 buddy_update_cb(GaimBlistNode *bnode, void *data)
6187 {
6188 GaimGtkWindow *win = (GaimGtkWindow *)data;
6189 GaimConversation *conv;
6190
6191 g_return_if_fail(bnode);
6192 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(bnode));
6193
6194 conv = gaim_gtk_conv_window_get_active_conversation(win);
6195
6196 if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM)
6197 return;
6198
6199 gaim_conversation_update(conv, GAIM_CONV_ACCOUNT_ONLINE);
6200 }
6201
6202
6203 /************************************************************************** 6211 /**************************************************************************
6204 * GTK+ window ops 6212 * GTK+ window ops
6205 **************************************************************************/ 6213 **************************************************************************/
6206 6214
6207 static GList *window_list = NULL; 6215 static GList *window_list = NULL;
6264 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); 6272 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
6265 g_signal_connect(G_OBJECT(win->notebook), "button_press_event", 6273 g_signal_connect(G_OBJECT(win->notebook), "button_press_event",
6266 G_CALLBACK(notebook_press_cb), win); 6274 G_CALLBACK(notebook_press_cb), win);
6267 g_signal_connect(G_OBJECT(win->notebook), "button_release_event", 6275 g_signal_connect(G_OBJECT(win->notebook), "button_release_event",
6268 G_CALLBACK(notebook_release_cb), win); 6276 G_CALLBACK(notebook_release_cb), win);
6269
6270 gaim_signal_connect(gaim_blist_get_handle(), "buddy-added", win,
6271 G_CALLBACK(buddy_update_cb), win);
6272 gaim_signal_connect(gaim_blist_get_handle(), "buddy-removed", win,
6273 G_CALLBACK(buddy_update_cb), win);
6274 6277
6275 testidea = gtk_vbox_new(FALSE, 0); 6278 testidea = gtk_vbox_new(FALSE, 0);
6276 6279
6277 /* Setup the menubar. */ 6280 /* Setup the menubar. */
6278 menubar = setup_menubar(win); 6281 menubar = setup_menubar(win);
6304 /* so don't destroy ourselves right now */ 6307 /* so don't destroy ourselves right now */
6305 return; 6308 return;
6306 } 6309 }
6307 return; 6310 return;
6308 } 6311 }
6309 gaim_signals_disconnect_by_handle(win);
6310 gtk_widget_destroy(win->window); 6312 gtk_widget_destroy(win->window);
6311 6313
6312 g_object_unref(G_OBJECT(win->menu.item_factory)); 6314 g_object_unref(G_OBJECT(win->menu.item_factory));
6313 6315
6314 g_free(win); 6316 g_free(win);