comparison src/gtkconv.c @ 10883:b0fdadf463d4

[gaim-migrate @ 12581] [19:47] marv someone want to apply rlaager's patch #1191395 for me? my tree is kind of not in a commitable state right now [19:51] grim marv: sure committer: Tailor Script <tailor@pidgin.im>
author Gary Kramlich <grim@reaperworld.com>
date Thu, 28 Apr 2005 00:55:33 +0000
parents 601739f63f23
children 5cda52915a1f
comparison
equal deleted inserted replaced
10882:83e119608cb5 10883:b0fdadf463d4
518 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); 518 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
519 default_formatize(gtkconv); 519 default_formatize(gtkconv);
520 } 520 }
521 521
522 static void 522 static void
523 add_remove_cb(GtkWidget *widget, GaimConversation *conv) 523 add_remove_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
524 { 524 {
525 GaimAccount *account; 525 GaimAccount *account;
526 const char *name; 526 const char *name;
527 GaimConversation *conv = gtkconv->active_conv;
527 528
528 account = gaim_conversation_get_account(conv); 529 account = gaim_conversation_get_account(conv);
529 name = gaim_conversation_get_name(conv); 530 name = gaim_conversation_get_name(conv);
530 531
531 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { 532 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
547 } 548 }
548 549
549 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); 550 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
550 } 551 }
551 552
552 static void chat_do_info(GaimConversation *conv, const char *who) 553 static void chat_do_info(GaimGtkConversation *gtkconv, const char *who)
553 { 554 {
555 GaimConversation *conv = gtkconv->active_conv;
554 GaimPluginProtocolInfo *prpl_info = NULL; 556 GaimPluginProtocolInfo *prpl_info = NULL;
555 GaimConnection *gc; 557 GaimConnection *gc;
556 558
557 if ((gc = gaim_conversation_get_gc(conv))) { 559 if ((gc = gaim_conversation_get_gc(conv))) {
558 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); 560 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
598 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) 600 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
599 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1); 601 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
600 else 602 else
601 return; 603 return;
602 604
603 chat_do_info(conv, name); 605 chat_do_info(gtkconv, name);
604 g_free(name); 606 g_free(name);
605 } 607 }
606 } 608 }
607 609
608 static void 610 static void
609 block_cb(GtkWidget *widget, GaimConversation *conv) 611 block_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
610 { 612 {
613 GaimConversation *conv = gtkconv->active_conv;
611 GaimAccount *account; 614 GaimAccount *account;
612 615
613 account = gaim_conversation_get_account(conv); 616 account = gaim_conversation_get_account(conv);
614 617
615 if (account != NULL && gaim_account_is_connected(account)) 618 if (account != NULL && gaim_account_is_connected(account))
717 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 0}, 720 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 0},
718 {"application/x-im-contact", 0, 1} 721 {"application/x-im-contact", 0, 1}
719 }; 722 };
720 723
721 static void 724 static void
722 invite_cb(GtkWidget *widget, GaimConversation *conv) 725 invite_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
723 { 726 {
727 GaimConversation *conv = gtkconv->active_conv;
724 InviteBuddyInfo *info = NULL; 728 InviteBuddyInfo *info = NULL;
725 729
726 if (invite_dialog == NULL) { 730 if (invite_dialog == NULL) {
727 GaimConnection *gc; 731 GaimConnection *gc;
728 GaimConvWindow *win; 732 GaimConvWindow *win;
1144 GaimConvWindow *win = (GaimConvWindow *)data; 1148 GaimConvWindow *win = (GaimConvWindow *)data;
1145 GaimConversation *conv; 1149 GaimConversation *conv;
1146 1150
1147 conv = gaim_conv_window_get_active_conversation(win); 1151 conv = gaim_conv_window_get_active_conversation(win);
1148 1152
1149 invite_cb(NULL, conv); 1153 invite_cb(NULL, GAIM_GTK_CONVERSATION(conv));
1150 } 1154 }
1151 1155
1152 static void 1156 static void
1153 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) 1157 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
1154 { 1158 {
1170 GaimConvWindow *win = (GaimConvWindow *)data; 1174 GaimConvWindow *win = (GaimConvWindow *)data;
1171 GaimConversation *conv; 1175 GaimConversation *conv;
1172 1176
1173 conv = gaim_conv_window_get_active_conversation(win); 1177 conv = gaim_conv_window_get_active_conversation(win);
1174 1178
1175 block_cb(NULL, conv); 1179 block_cb(NULL, GAIM_GTK_CONVERSATION(conv));
1176 } 1180 }
1177 1181
1178 static void 1182 static void
1179 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) 1183 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
1180 { 1184 {
1181 GaimConvWindow *win = (GaimConvWindow *)data; 1185 GaimConvWindow *win = (GaimConvWindow *)data;
1182 GaimConversation *conv; 1186 GaimConversation *conv;
1183 1187
1184 conv = gaim_conv_window_get_active_conversation(win); 1188 conv = gaim_conv_window_get_active_conversation(win);
1185 1189
1186 add_remove_cb(NULL, conv); 1190 add_remove_cb(NULL, GAIM_GTK_CONVERSATION(conv));
1187 } 1191 }
1188 1192
1189 static void 1193 static void
1190 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) 1194 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
1191 { 1195 {
1264 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), 1268 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
1265 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); 1269 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
1266 } 1270 }
1267 1271
1268 static void 1272 static void
1269 chat_do_im(GaimConversation *conv, const char *who) 1273 chat_do_im(GaimGtkConversation *gtkconv, const char *who)
1270 { 1274 {
1275 GaimConversation *conv = gtkconv->active_conv;
1271 GaimAccount *account; 1276 GaimAccount *account;
1272 GaimConnection *gc; 1277 GaimConnection *gc;
1273 GaimPluginProtocolInfo *prpl_info = NULL; 1278 GaimPluginProtocolInfo *prpl_info = NULL;
1274 char *real_who; 1279 char *real_who;
1275 1280
1312 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) 1317 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
1313 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1); 1318 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
1314 else 1319 else
1315 return; 1320 return;
1316 1321
1317 chat_do_im(gtkconv->active_conv, name); 1322 chat_do_im(gtkconv, name);
1318 g_free(name); 1323 g_free(name);
1319 } 1324 }
1320 1325
1321 static void 1326 static void
1322 ignore_cb(GtkWidget *w, GaimConversation *conv) 1327 ignore_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1323 { 1328 {
1324 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); 1329 GaimConversation *conv = gtkconv->active_conv;
1325 GaimGtkChatPane *gtkchat; 1330 GaimGtkChatPane *gtkchat;
1326 GaimConvChat *chat; 1331 GaimConvChat *chat;
1327 GtkTreeIter iter; 1332 GtkTreeIter iter;
1328 GtkTreeModel *model; 1333 GtkTreeModel *model;
1329 GtkTreeSelection *sel; 1334 GtkTreeSelection *sel;
1350 add_chat_buddy_common(conv, name); 1355 add_chat_buddy_common(conv, name);
1351 g_free(name); 1356 g_free(name);
1352 } 1357 }
1353 1358
1354 static void 1359 static void
1355 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) 1360 menu_chat_im_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1356 { 1361 {
1357 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); 1362 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
1358 1363
1359 chat_do_im(conv, who); 1364 chat_do_im(gtkconv, who);
1360 } 1365 }
1361 1366
1362 static void 1367 static void
1363 menu_chat_send_file_cb(GtkWidget *w, GaimConversation *conv) 1368 menu_chat_send_file_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1364 { 1369 {
1370 GaimConversation *conv = gtkconv->active_conv;
1365 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); 1371 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
1366 GaimConnection *gc = gaim_conversation_get_gc(conv); 1372 GaimConnection *gc = gaim_conversation_get_gc(conv);
1367 1373
1368 serv_send_file(gc, who, NULL); 1374 serv_send_file(gc, who, NULL);
1369 } 1375 }
1370 1376
1371 static void 1377 static void
1372 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) 1378 menu_chat_info_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1373 { 1379 {
1374 char *who; 1380 char *who;
1375 1381
1376 who = g_object_get_data(G_OBJECT(w), "user_data"); 1382 who = g_object_get_data(G_OBJECT(w), "user_data");
1377 1383
1378 chat_do_info(conv, who); 1384 chat_do_info(gtkconv, who);
1379 } 1385 }
1380 1386
1381 static void 1387 static void
1382 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) 1388 menu_chat_get_away_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1383 { 1389 {
1390 GaimConversation *conv = gtkconv->active_conv;
1384 GaimPluginProtocolInfo *prpl_info = NULL; 1391 GaimPluginProtocolInfo *prpl_info = NULL;
1385 GaimConnection *gc; 1392 GaimConnection *gc;
1386 char *who; 1393 char *who;
1387 1394
1388 gc = gaim_conversation_get_gc(conv); 1395 gc = gaim_conversation_get_gc(conv);
1402 } 1409 }
1403 } 1410 }
1404 } 1411 }
1405 1412
1406 static void 1413 static void
1407 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv) 1414 menu_chat_add_remove_cb(GtkWidget *w, GaimGtkConversation *gtkconv)
1408 { 1415 {
1416 GaimConversation *conv = gtkconv->active_conv;
1409 GaimAccount *account; 1417 GaimAccount *account;
1410 GaimBuddy *b; 1418 GaimBuddy *b;
1411 char *name; 1419 char *name;
1412 1420
1413 account = gaim_conversation_get_account(conv); 1421 account = gaim_conversation_get_account(conv);
1437 gtk_widget_destroy(menu); 1445 gtk_widget_destroy(menu);
1438 1446
1439 menu = gtk_menu_new(); 1447 menu = gtk_menu_new();
1440 1448
1441 button = gaim_new_item_from_stock(menu, _("IM"), GAIM_STOCK_IM, 1449 button = gaim_new_item_from_stock(menu, _("IM"), GAIM_STOCK_IM,
1442 G_CALLBACK(menu_chat_im_cb), conv, 0, 0, NULL); 1450 G_CALLBACK(menu_chat_im_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1443 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1451 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1444 1452
1445 if (gc && prpl_info && prpl_info->send_file 1453 if (gc && prpl_info && prpl_info->send_file
1446 && (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) { 1454 && (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) {
1447 button = gaim_new_item_from_stock(menu, _("Send File"), 1455 button = gaim_new_item_from_stock(menu, _("Send File"),
1448 GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(menu_chat_send_file_cb), 1456 GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(menu_chat_send_file_cb),
1449 conv, 0, 0, NULL); 1457 GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1450 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1458 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1451 } 1459 }
1452 1460
1453 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) 1461 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who))
1454 button = gaim_new_item_from_stock(menu, _("Un-Ignore"), GAIM_STOCK_IGNORE, 1462 button = gaim_new_item_from_stock(menu, _("Un-Ignore"), GAIM_STOCK_IGNORE,
1455 G_CALLBACK(ignore_cb), conv, 0, 0, NULL); 1463 G_CALLBACK(ignore_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1456 else 1464 else
1457 button = gaim_new_item_from_stock(menu, _("Ignore"), GAIM_STOCK_IGNORE, 1465 button = gaim_new_item_from_stock(menu, _("Ignore"), GAIM_STOCK_IGNORE,
1458 G_CALLBACK(ignore_cb), conv, 0, 0, NULL); 1466 G_CALLBACK(ignore_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1459 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1467 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1460 1468
1461 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) { 1469 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) {
1462 button = gaim_new_item_from_stock(menu, _("Info"), GAIM_STOCK_INFO, 1470 button = gaim_new_item_from_stock(menu, _("Info"), GAIM_STOCK_INFO,
1463 G_CALLBACK(menu_chat_info_cb), conv, 0, 0, NULL); 1471 G_CALLBACK(menu_chat_info_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1464 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1472 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1465 } 1473 }
1466 1474
1467 if (gc && prpl_info->get_cb_away) { 1475 if (gc && prpl_info->get_cb_away) {
1468 button = gaim_new_item_from_stock(menu, _("Get Away Message"), GAIM_STOCK_AWAY, 1476 button = gaim_new_item_from_stock(menu, _("Get Away Message"), GAIM_STOCK_AWAY,
1469 G_CALLBACK(menu_chat_get_away_cb), conv, 0, 0, NULL); 1477 G_CALLBACK(menu_chat_get_away_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1470 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1478 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1471 } 1479 }
1472 1480
1473 /* XXX: jabber can only add buddies from here in certain circumstances */ 1481 /* XXX: jabber can only add buddies from here in certain circumstances */
1474 /* Added by Jonas <jonas@birme.se> */ 1482 /* Added by Jonas <jonas@birme.se> */
1475 if (gc) { 1483 if (gc) {
1476 if (gaim_find_buddy(gc->account, who)) 1484 if (gaim_find_buddy(gc->account, who))
1477 button = gaim_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE, 1485 button = gaim_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE,
1478 G_CALLBACK(menu_chat_add_remove_cb), conv, 0, 0, NULL); 1486 G_CALLBACK(menu_chat_add_remove_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1479 else 1487 else
1480 button = gaim_new_item_from_stock(menu, _("Add"), GTK_STOCK_ADD, 1488 button = gaim_new_item_from_stock(menu, _("Add"), GTK_STOCK_ADD,
1481 G_CALLBACK(menu_chat_add_remove_cb), conv, 0, 0, NULL); 1489 G_CALLBACK(menu_chat_add_remove_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL);
1482 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); 1490 g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
1483 } 1491 }
1484 /* End Jonas */ 1492 /* End Jonas */
1485 1493
1486 return menu; 1494 return menu;
1487 } 1495 }
1488 1496
1489 1497
1490 static gint 1498 static gint
1491 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv) 1499 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
1492 { 1500 {
1493 GaimGtkConversation *gtkconv; 1501 GaimConversation *conv = gtkconv->active_conv;
1494 GaimPluginProtocolInfo *prpl_info = NULL; 1502 GaimPluginProtocolInfo *prpl_info = NULL;
1495 GaimGtkChatPane *gtkchat; 1503 GaimGtkChatPane *gtkchat;
1496 GaimConnection *gc; 1504 GaimConnection *gc;
1497 GaimAccount *account; 1505 GaimAccount *account;
1498 GtkTreeSelection *sel; 1506 GtkTreeSelection *sel;
1526 } 1534 }
1527 1535
1528 1536
1529 static gint 1537 static gint
1530 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, 1538 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
1531 GaimConversation *conv) 1539 GaimGtkConversation *gtkconv)
1532 { 1540 {
1533 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); 1541 GaimConversation *conv = gtkconv->active_conv;
1534 GaimPluginProtocolInfo *prpl_info = NULL; 1542 GaimPluginProtocolInfo *prpl_info = NULL;
1535 GaimGtkChatPane *gtkchat; 1543 GaimGtkChatPane *gtkchat;
1536 GaimConnection *gc; 1544 GaimConnection *gc;
1537 GaimAccount *account; 1545 GaimAccount *account;
1538 GtkTreePath *path; 1546 GtkTreePath *path;
1562 1570
1563 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); 1571 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
1564 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1); 1572 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
1565 1573
1566 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { 1574 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
1567 chat_do_im(conv, who); 1575 chat_do_im(gtkconv, who);
1568 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { 1576 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
1569 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc); 1577 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc);
1570 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 1578 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
1571 event->button, event->time); 1579 event->button, event->time);
1572 } 1580 }
2468 else 2476 else
2469 stop_anim(NULL, gtkconv); 2477 stop_anim(NULL, gtkconv);
2470 } 2478 }
2471 2479
2472 static void 2480 static void
2473 remove_icon(GaimConversation *conv) 2481 remove_icon(GaimGtkConversation *gtkconv)
2474 { 2482 {
2475 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); 2483 GaimConversation *conv = gtkconv->active_conv;
2476 GaimGtkWindow *gtkwin; 2484 GaimGtkWindow *gtkwin;
2477 2485
2478 g_return_if_fail(conv != NULL); 2486 g_return_if_fail(conv != NULL);
2479 2487
2480 if (gtkconv->u.im->icon_container != NULL) 2488 if (gtkconv->u.im->icon_container != NULL)
2526 fwrite(data, 1, len, fp); 2534 fwrite(data, 1, len, fp);
2527 fclose(fp); 2535 fclose(fp);
2528 } 2536 }
2529 2537
2530 static void 2538 static void
2531 icon_menu_save_cb(GtkWidget *widget, GaimConversation *conv) 2539 icon_menu_save_cb(GtkWidget *widget, GaimGtkConversation *gtkconv)
2532 { 2540 {
2541 GaimConversation *conv = gtkconv->active_conv;
2533 gchar *buf; 2542 gchar *buf;
2534 2543
2535 g_return_if_fail(conv != NULL); 2544 g_return_if_fail(conv != NULL);
2536 2545
2537 /* 2546 /*
2545 2554
2546 g_free(buf); 2555 g_free(buf);
2547 } 2556 }
2548 2557
2549 static gboolean 2558 static gboolean
2550 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) 2559 icon_menu(GtkObject *obj, GdkEventButton *e, GaimGtkConversation *gtkconv)
2551 { 2560 {
2561 GaimConversation *conv = gtkconv->active_conv;
2552 static GtkWidget *menu = NULL; 2562 static GtkWidget *menu = NULL;
2553 GtkWidget *button; 2563 GtkWidget *button;
2554 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
2555 2564
2556 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) 2565 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
2557 return FALSE; 2566 return FALSE;
2558 2567
2559 /* 2568 /*
2567 2576
2568 if (gtkconv->u.im->anim && 2577 if (gtkconv->u.im->anim &&
2569 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) 2578 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
2570 { 2579 {
2571 gaim_new_check_item(menu, _("Animate"), 2580 gaim_new_check_item(menu, _("Animate"),
2572 G_CALLBACK(toggle_icon_animate_cb), gtkconv, 2581 G_CALLBACK(toggle_icon_animate_cb), conv,
2573 gtkconv->u.im->icon_timer); 2582 gtkconv->u.im->icon_timer);
2574 } 2583 }
2575 2584
2576 button = gtk_menu_item_new_with_label(_("Hide Icon")); 2585 button = gtk_menu_item_new_with_label(_("Hide Icon"));
2577 g_signal_connect_swapped(G_OBJECT(button), "activate", 2586 g_signal_connect_swapped(G_OBJECT(button), "activate",
2578 G_CALLBACK(remove_icon), conv); 2587 G_CALLBACK(remove_icon), gtkconv);
2579 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); 2588 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
2580 gtk_widget_show(button); 2589 gtk_widget_show(button);
2581 2590
2582 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, 2591 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
2583 G_CALLBACK(icon_menu_save_cb), conv, 2592 G_CALLBACK(icon_menu_save_cb), gtkconv,
2584 0, 0, NULL); 2593 0, 0, NULL);
2585 2594
2586 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); 2595 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
2587 2596
2588 return TRUE; 2597 return TRUE;
2608 active = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); 2617 active = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
2609 gtkconv->u.im->show_icon = active; 2618 gtkconv->u.im->show_icon = active;
2610 if (active) 2619 if (active)
2611 gaim_gtkconv_update_buddy_icon(conv); 2620 gaim_gtkconv_update_buddy_icon(conv);
2612 else 2621 else
2613 remove_icon(conv); 2622 remove_icon(gtkconv);
2614 } 2623 }
2615 2624
2616 /************************************************************************** 2625 /**************************************************************************
2617 * End of the bunch of buddy icon functions 2626 * End of the bunch of buddy icon functions
2618 **************************************************************************/ 2627 **************************************************************************/
3859 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); 3868 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
3860 3869
3861 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); 3870 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
3862 3871
3863 g_signal_connect(G_OBJECT(list), "button_press_event", 3872 g_signal_connect(G_OBJECT(list), "button_press_event",
3864 G_CALLBACK(right_click_chat_cb), conv); 3873 G_CALLBACK(right_click_chat_cb), gtkconv);
3865 g_signal_connect(G_OBJECT(list), "popup-menu", 3874 g_signal_connect(G_OBJECT(list), "popup-menu",
3866 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv); 3875 G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv);
3867 3876
3868 rend = gtk_cell_renderer_text_new(); 3877 rend = gtk_cell_renderer_text_new();
3869 3878
3870 col = gtk_tree_view_column_new_with_attributes(NULL, rend, 3879 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
3871 "text", CHAT_USERS_NAME_COLUMN, NULL); 3880 "text", CHAT_USERS_NAME_COLUMN, NULL);
3906 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); 3915 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
3907 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 3916 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
3908 gtk_tooltips_set_tip(gtkconv->tooltips, button, 3917 gtk_tooltips_set_tip(gtkconv->tooltips, button,
3909 _("Ignore the user"), NULL); 3918 _("Ignore the user"), NULL);
3910 g_signal_connect(G_OBJECT(button), "clicked", 3919 g_signal_connect(G_OBJECT(button), "clicked",
3911 G_CALLBACK(ignore_cb), conv); 3920 G_CALLBACK(ignore_cb), gtkconv);
3912 gtk_widget_show(button); 3921 gtk_widget_show(button);
3913 3922
3914 /* Info */ 3923 /* Info */
3915 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, 3924 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
3916 GAIM_BUTTON_VERTICAL); 3925 GAIM_BUTTON_VERTICAL);
5582 FALSE, FALSE, 0); 5591 FALSE, FALSE, 0);
5583 5592
5584 event = gtk_event_box_new(); 5593 event = gtk_event_box_new();
5585 gtk_container_add(GTK_CONTAINER(frame), event); 5594 gtk_container_add(GTK_CONTAINER(frame), event);
5586 g_signal_connect(G_OBJECT(event), "button-press-event", 5595 g_signal_connect(G_OBJECT(event), "button-press-event",
5587 G_CALLBACK(icon_menu), conv); 5596 G_CALLBACK(icon_menu), gtkconv);
5588 gtk_widget_show(event); 5597 gtk_widget_show(event);
5589 5598
5590 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); 5599 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
5591 gtk_widget_set_size_request(gtkconv->u.im->icon, scale_width, scale_height); 5600 gtk_widget_set_size_request(gtkconv->u.im->icon, scale_width, scale_height);
5592 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); 5601 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);