Mercurial > pidgin
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); |