# HG changeset patch
# Node ID f2e5d8cff906
# Parent  6d2eaf1f359c
diff --git a/ChangeLog.API b/ChangeLog.API
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -368,6 +368,7 @@ version 3.0.0 (??/??/????):
 		* purple_buddy_icons_set_custom_icon
 		* purple_build_dir. Use g_mkdir_with_parents instead
 		* PurpleCallback. Use GCallback instead
+		* PURPLE_CALLBACK. Use G_CALLBACK instead
 		* PurpleCertificateScheme
 		* PURPLE_CERTIFICATE_SCHEME_HAS_FUNC
 		* purple_certificate_check_signature_chain
diff --git a/finch/gntaccount.c b/finch/gntaccount.c
--- a/finch/gntaccount.c
+++ b/finch/gntaccount.c
@@ -902,17 +902,17 @@ void finch_accounts_init()
 	GList *iter;
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-added",
-			finch_accounts_get_handle(), PURPLE_CALLBACK(account_added_callback),
+			finch_accounts_get_handle(), G_CALLBACK(account_added_callback),
 			NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed",
-			finch_accounts_get_handle(), PURPLE_CALLBACK(account_removed_callback),
+			finch_accounts_get_handle(), G_CALLBACK(account_removed_callback),
 			NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-disabled",
 			finch_accounts_get_handle(),
-			PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(FALSE));
+			G_CALLBACK(account_abled_cb), GINT_TO_POINTER(FALSE));
 	purple_signal_connect(purple_accounts_get_handle(), "account-enabled",
 			finch_accounts_get_handle(),
-			PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(TRUE));
+			G_CALLBACK(account_abled_cb), GINT_TO_POINTER(TRUE));
 
 	manager = purple_account_manager_get_default();
 	iter = purple_account_manager_get_all(manager);
diff --git a/finch/gntblist.c b/finch/gntblist.c
--- a/finch/gntblist.c
+++ b/finch/gntblist.c
@@ -1096,11 +1096,11 @@ static void
 create_group_menu(GntMenu *menu, PurpleGroup *group)
 {
 	add_custom_action(menu, _("Add Buddy"),
-			PURPLE_CALLBACK(finch_add_buddy), group);
+			G_CALLBACK(finch_add_buddy), group);
 	add_custom_action(menu, _("Add Chat"),
-			PURPLE_CALLBACK(finch_add_chat), group);
+			G_CALLBACK(finch_add_chat), group);
 	add_custom_action(menu, _("Add Group"),
-			PURPLE_CALLBACK(finch_add_group), group);
+			G_CALLBACK(finch_add_group), group);
 }
 
 gpointer finch_retrieve_user_info(PurpleConnection *conn, const char *name)
@@ -1162,7 +1162,7 @@ create_buddy_menu(GntMenu *menu, PurpleB
 	if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER, get_info))
 	{
 		add_custom_action(menu, _("Get Info"),
-				PURPLE_CALLBACK(finch_blist_get_buddy_info_cb), buddy);
+				G_CALLBACK(finch_blist_get_buddy_info_cb), buddy);
 	}
 
 	if (PURPLE_IS_PROTOCOL_XFER(protocol))
@@ -1173,7 +1173,7 @@ create_buddy_menu(GntMenu *menu, PurpleB
 			purple_buddy_get_name(buddy))
 		) {
 			add_custom_action(menu, _("Send File"),
-					PURPLE_CALLBACK(finch_blist_menu_send_file_cb), buddy);
+					G_CALLBACK(finch_blist_menu_send_file_cb), buddy);
 		}
 	}
 
@@ -1522,19 +1522,19 @@ draw_context_menu(FinchBuddyList *ggblis
 	if (node) {
 		add_custom_action(GNT_MENU(context),
 				PURPLE_IS_GROUP(node) ? _("Rename") : _("Alias"),
-				PURPLE_CALLBACK(finch_blist_rename_node_cb), node);
+				G_CALLBACK(finch_blist_rename_node_cb), node);
 		add_custom_action(GNT_MENU(context), _("Remove"),
-				PURPLE_CALLBACK(finch_blist_remove_node_cb), node);
+				G_CALLBACK(finch_blist_remove_node_cb), node);
 
 		if (ggblist->tagged && (PURPLE_IS_CONTACT(node)
 				|| PURPLE_IS_GROUP(node))) {
 			add_custom_action(GNT_MENU(context), _("Place tagged"),
-					PURPLE_CALLBACK(finch_blist_place_tagged), node);
+					G_CALLBACK(finch_blist_place_tagged), node);
 		}
 
 		if (PURPLE_IS_BUDDY(node) || PURPLE_IS_CONTACT(node)) {
 			add_custom_action(GNT_MENU(context), _("Toggle Tag"),
-					PURPLE_CALLBACK(finch_blist_toggle_tag_buddy), node);
+					G_CALLBACK(finch_blist_toggle_tag_buddy), node);
 		}
 	}
 
@@ -2826,15 +2826,15 @@ blist_show(PurpleBuddyList *list)
 	gnt_widget_show(ggblist->window);
 
 	purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_blist_get_handle(),
-				PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
+				G_CALLBACK(reconstruct_accounts_menu), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_blist_get_handle(),
-				PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
+				G_CALLBACK(reconstruct_accounts_menu), NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-actions-changed", finch_blist_get_handle(),
-				PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
+				G_CALLBACK(reconstruct_accounts_menu), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", finch_blist_get_handle(),
-				PURPLE_CALLBACK(buddy_status_changed), ggblist);
+				G_CALLBACK(buddy_status_changed), ggblist);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-idle-changed", finch_blist_get_handle(),
-				PURPLE_CALLBACK(buddy_idle_changed), ggblist);
+				G_CALLBACK(buddy_idle_changed), ggblist);
 
 	plugin_manager = gplugin_manager_get_default();
 	g_signal_connect_object(plugin_manager, "loaded-plugin",
@@ -2843,9 +2843,9 @@ blist_show(PurpleBuddyList *list)
 	                        G_CALLBACK(reconstruct_plugins_menu_cb), ggblist, 0);
 
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_blist_get_handle(),
-				PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
+				G_CALLBACK(buddy_signed_on_off), ggblist);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_blist_get_handle(),
-				PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
+				G_CALLBACK(buddy_signed_on_off), ggblist);
 
 	g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
 	g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
@@ -2864,7 +2864,7 @@ blist_show(PurpleBuddyList *list)
 
 	/* Status signals */
 	purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-changed", finch_blist_get_handle(),
-				PURPLE_CALLBACK(savedstatus_changed), NULL);
+				G_CALLBACK(savedstatus_changed), NULL);
 	g_signal_connect(G_OBJECT(ggblist->status), "selection_changed",
 				G_CALLBACK(status_selection_changed), NULL);
 	g_signal_connect(G_OBJECT(ggblist->statustext), "key_pressed",
diff --git a/finch/gntconn.c b/finch/gntconn.c
--- a/finch/gntconn.c
+++ b/finch/gntconn.c
@@ -127,8 +127,8 @@ finch_connection_report_disconnect(Purpl
 		purple_request_action(account, NULL, primary, secondary, 2,
 			purple_request_cpar_from_account(account), account, 3,
 							_("OK"), NULL,
-							_("Modify Account"), PURPLE_CALLBACK(ce_modify_account_cb),
-							_("Re-enable Account"), PURPLE_CALLBACK(ce_enable_account_cb));
+							_("Modify Account"), G_CALLBACK(ce_modify_account_cb),
+							_("Re-enable Account"), G_CALLBACK(ce_enable_account_cb));
 
 		g_free(act);
 		g_free(primary);
@@ -179,7 +179,7 @@ void finch_connections_init()
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed",
 						finch_connection_get_handle(),
-						PURPLE_CALLBACK(account_removed_cb), NULL);
+						G_CALLBACK(account_removed_cb), NULL);
 }
 
 void finch_connections_uninit()
diff --git a/finch/gntconv.c b/finch/gntconv.c
--- a/finch/gntconv.c
+++ b/finch/gntconv.c
@@ -1370,25 +1370,25 @@ void finch_conversation_init()
 			NULL);
 
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", finch_conv_get_handle(),
-					PURPLE_CALLBACK(update_buddy_typing), NULL);
+					G_CALLBACK(update_buddy_typing), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", finch_conv_get_handle(),
-					PURPLE_CALLBACK(update_buddy_typing), NULL);
+					G_CALLBACK(update_buddy_typing), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "chat-left", finch_conv_get_handle(),
-					PURPLE_CALLBACK(chat_left_cb), NULL);
+					G_CALLBACK(chat_left_cb), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "cleared-message-history", finch_conv_get_handle(),
-					PURPLE_CALLBACK(cleared_message_history_cb), NULL);
+					G_CALLBACK(cleared_message_history_cb), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", finch_conv_get_handle(),
-					PURPLE_CALLBACK(conv_updated), NULL);
+					G_CALLBACK(conv_updated), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_conv_get_handle(),
-					PURPLE_CALLBACK(buddy_signed_on_off), NULL);
+					G_CALLBACK(buddy_signed_on_off), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_conv_get_handle(),
-					PURPLE_CALLBACK(buddy_signed_on_off), NULL);
+					G_CALLBACK(buddy_signed_on_off), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(),
-					PURPLE_CALLBACK(account_signed_on_off), NULL);
+					G_CALLBACK(account_signed_on_off), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_conv_get_handle(),
-					PURPLE_CALLBACK(account_signed_on_off), NULL);
+					G_CALLBACK(account_signed_on_off), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signing-off", finch_conv_get_handle(),
-					PURPLE_CALLBACK(account_signing_off), NULL);
+					G_CALLBACK(account_signing_off), NULL);
 }
 
 void finch_conversation_uninit()
diff --git a/finch/plugins/gntgf.c b/finch/plugins/gntgf.c
--- a/finch/plugins/gntgf.c
+++ b/finch/plugins/gntgf.c
@@ -361,13 +361,13 @@ gnt_gf_load(GPluginPlugin *plugin, GErro
 #endif
 
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", plugin,
-			PURPLE_CALLBACK(buddy_signed_on), NULL);
+			G_CALLBACK(buddy_signed_on), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", plugin,
-			PURPLE_CALLBACK(buddy_signed_off), NULL);
+			G_CALLBACK(buddy_signed_off), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", plugin,
-			PURPLE_CALLBACK(received_im_msg), NULL);
+			G_CALLBACK(received_im_msg), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "received-chat-msg", plugin,
-			PURPLE_CALLBACK(received_chat_msg), NULL);
+			G_CALLBACK(received_chat_msg), NULL);
 
 	memset(&gpsy, 0, sizeof(gpsy));
 	memset(&gpsw, 0, sizeof(gpsw));
diff --git a/finch/plugins/gnttinyurl.c b/finch/plugins/gnttinyurl.c
--- a/finch/plugins/gnttinyurl.c
+++ b/finch/plugins/gnttinyurl.c
@@ -497,19 +497,19 @@ tiny_url_load(GPluginPlugin *plugin, GEr
 
 	purple_signal_connect(purple_conversations_get_handle(),
 			"wrote-im-msg",
-			plugin, PURPLE_CALLBACK(wrote_msg), NULL);
+			plugin, G_CALLBACK(wrote_msg), NULL);
 	purple_signal_connect(purple_conversations_get_handle(),
 			"wrote-chat-msg",
-			plugin, PURPLE_CALLBACK(wrote_msg), NULL);
+			plugin, G_CALLBACK(wrote_msg), NULL);
 	purple_signal_connect(purple_conversations_get_handle(),
 			"writing-im-msg",
-			plugin, PURPLE_CALLBACK(writing_msg), NULL);
+			plugin, G_CALLBACK(writing_msg), NULL);
 	purple_signal_connect(purple_conversations_get_handle(),
 			"writing-chat-msg",
-			plugin, PURPLE_CALLBACK(writing_msg), NULL);
+			plugin, G_CALLBACK(writing_msg), NULL);
 	purple_signal_connect(purple_conversations_get_handle(),
 			"deleting-conversation",
-			plugin, PURPLE_CALLBACK(free_conv_urls), NULL);
+			plugin, G_CALLBACK(free_conv_urls), NULL);
 
 	return TRUE;
 }
diff --git a/libpurple/account.c b/libpurple/account.c
--- a/libpurple/account.c
+++ b/libpurple/account.c
@@ -1174,7 +1174,7 @@ purple_account_unregister(PurpleAccount 
 
 	cbb = g_new0(PurpleCallbackBundle, 1);
 	cbb->account = account;
-	cbb->cb = PURPLE_CALLBACK(cb);
+	cbb->cb = G_CALLBACK(cb);
 	cbb->data = user_data;
 
 	manager = purple_credential_manager_get_default();
diff --git a/libpurple/accounts.c b/libpurple/accounts.c
--- a/libpurple/accounts.c
+++ b/libpurple/accounts.c
@@ -776,11 +776,11 @@ purple_accounts_init(void)
 	                       PURPLE_TYPE_CONNECTION_ERROR, G_TYPE_STRING);
 
 	purple_signal_connect(conn_handle, "signed-on", handle,
-	                      PURPLE_CALLBACK(signed_on_cb), NULL);
+	                      G_CALLBACK(signed_on_cb), NULL);
 	purple_signal_connect(conn_handle, "signed-off", handle,
-	                      PURPLE_CALLBACK(signed_off_cb), NULL);
+	                      G_CALLBACK(signed_off_cb), NULL);
 	purple_signal_connect(conn_handle, "connection-error", handle,
-	                      PURPLE_CALLBACK(connection_error_cb), NULL);
+	                      G_CALLBACK(connection_error_cb), NULL);
 
 	load_accounts();
 
diff --git a/libpurple/buddylist.c b/libpurple/buddylist.c
--- a/libpurple/buddylist.c
+++ b/libpurple/buddylist.c
@@ -2198,12 +2198,12 @@ purple_blist_init(void)
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-created",
 			handle,
-			PURPLE_CALLBACK(purple_blist_buddies_cache_add_account),
+			G_CALLBACK(purple_blist_buddies_cache_add_account),
 			NULL);
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-destroying",
 			handle,
-			PURPLE_CALLBACK(purple_blist_buddies_cache_remove_account),
+			G_CALLBACK(purple_blist_buddies_cache_remove_account),
 			NULL);
 }
 
diff --git a/libpurple/example/nullclient.c b/libpurple/example/nullclient.c
--- a/libpurple/example/nullclient.c
+++ b/libpurple/example/nullclient.c
@@ -135,7 +135,7 @@ connect_to_signals_for_demonstration_pur
 {
 	static int handle;
 	purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
-				PURPLE_CALLBACK(signed_on), NULL);
+				G_CALLBACK(signed_on), NULL);
 }
 
 #if defined(_WIN32) || defined(__BIONIC__)
diff --git a/libpurple/idle.c b/libpurple/idle.c
--- a/libpurple/idle.c
+++ b/libpurple/idle.c
@@ -323,13 +323,13 @@ purple_idle_init()
 {
 	purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg",
 						purple_idle_get_handle(),
-						PURPLE_CALLBACK(im_msg_sent_cb), NULL);
+						G_CALLBACK(im_msg_sent_cb), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signing-on",
 						purple_idle_get_handle(),
-						PURPLE_CALLBACK(signing_on_cb), NULL);
+						G_CALLBACK(signing_on_cb), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signing-off",
 						purple_idle_get_handle(),
-						PURPLE_CALLBACK(signing_off_cb), NULL);
+						G_CALLBACK(signing_off_cb), NULL);
 
 	purple_prefs_connect_callback(purple_idle_get_handle(), "/purple/away/idle_reporting",
 	                              idle_reporting_cb, NULL);
diff --git a/libpurple/plugins/autoaccept.c b/libpurple/plugins/autoaccept.c
--- a/libpurple/plugins/autoaccept.c
+++ b/libpurple/plugins/autoaccept.c
@@ -234,7 +234,7 @@ context_menu(PurpleBlistNode *node, GLis
 		return;
 
 	action = purple_action_menu_new(_("Autoaccept File Transfers..."),
-					PURPLE_CALLBACK(set_auto_accept_settings), plugin, NULL);
+					G_CALLBACK(set_auto_accept_settings), plugin, NULL);
 	(*menu) = g_list_prepend(*menu, action);
 }
 
@@ -325,9 +325,9 @@ auto_accept_load(GPluginPlugin *plugin, 
 	}
 
 	purple_signal_connect(purple_xfers_get_handle(), "file-recv-request", plugin,
-						PURPLE_CALLBACK(file_recv_request_cb), plugin);
+						G_CALLBACK(file_recv_request_cb), plugin);
 	purple_signal_connect(purple_blist_get_handle(), "blist-node-extended-menu", plugin,
-						PURPLE_CALLBACK(context_menu), plugin);
+						G_CALLBACK(context_menu), plugin);
 	return TRUE;
 }
 
diff --git a/libpurple/plugins/buddynote.c b/libpurple/plugins/buddynote.c
--- a/libpurple/plugins/buddynote.c
+++ b/libpurple/plugins/buddynote.c
@@ -59,7 +59,7 @@ buddynote_extended_menu_cb(PurpleBlistNo
 		return;
 
 	*m = g_list_append(*m, bna);
-	bna = purple_action_menu_new(_("Edit Notes..."), PURPLE_CALLBACK(buddynote_edit_cb), NULL, NULL);
+	bna = purple_action_menu_new(_("Edit Notes..."), G_CALLBACK(buddynote_edit_cb), NULL, NULL);
 	*m = g_list_append(*m, bna);
 }
 
@@ -91,7 +91,7 @@ buddy_note_load(GPluginPlugin *plugin, G
 {
 
 	purple_signal_connect(purple_blist_get_handle(), "blist-node-extended-menu",
-						plugin, PURPLE_CALLBACK(buddynote_extended_menu_cb), NULL);
+						plugin, G_CALLBACK(buddynote_extended_menu_cb), NULL);
 
 	return TRUE;
 }
diff --git a/libpurple/plugins/idle.c b/libpurple/plugins/idle.c
--- a/libpurple/plugins/idle.c
+++ b/libpurple/plugins/idle.c
@@ -297,7 +297,7 @@ idle_load(GPluginPlugin *plugin, GError 
 {
 	purple_signal_connect(purple_connections_get_handle(), "signing-off",
 						plugin,
-						PURPLE_CALLBACK(signing_off_cb), NULL);
+						G_CALLBACK(signing_off_cb), NULL);
 
 	return TRUE;
 }
diff --git a/libpurple/plugins/joinpart.c b/libpurple/plugins/joinpart.c
--- a/libpurple/plugins/joinpart.c
+++ b/libpurple/plugins/joinpart.c
@@ -250,11 +250,11 @@ join_part_load(GPluginPlugin *plugin, GE
 
 	conv_handle = purple_conversations_get_handle();
 	purple_signal_connect(conv_handle, "chat-user-joining", plugin,
-	                    PURPLE_CALLBACK(chat_user_joining_cb), users);
+	                    G_CALLBACK(chat_user_joining_cb), users);
 	purple_signal_connect(conv_handle, "chat-user-leaving", plugin,
-	                    PURPLE_CALLBACK(chat_user_leaving_cb), users);
+	                    G_CALLBACK(chat_user_leaving_cb), users);
 	purple_signal_connect(conv_handle, "received-chat-msg", plugin,
-	                    PURPLE_CALLBACK(received_chat_msg_cb), users);
+	                    G_CALLBACK(received_chat_msg_cb), users);
 
 	/* Cleanup every 5 minutes */
 	id = g_timeout_add_seconds(60 * 5, (GSourceFunc)clean_users_hash, users);
diff --git a/libpurple/plugins/notification-sound/notification-sound.c b/libpurple/plugins/notification-sound/notification-sound.c
--- a/libpurple/plugins/notification-sound/notification-sound.c
+++ b/libpurple/plugins/notification-sound/notification-sound.c
@@ -272,14 +272,14 @@ notification_sound_load(GPluginPlugin *p
 	purple_signal_connect(conv_handle,
 	                      "received-im-msg",
 	                      plugin,
-	                      PURPLE_CALLBACK(purple_notification_sound_im_message_received),
+	                      G_CALLBACK(purple_notification_sound_im_message_received),
 	                      NULL
 	);
 
 	purple_signal_connect(conv_handle,
 	                      "received-chat-msg",
 	                      plugin,
-	                      PURPLE_CALLBACK(purple_notification_sound_chat_message_received),
+	                      G_CALLBACK(purple_notification_sound_chat_message_received),
 	                      NULL
 	);
 
diff --git a/libpurple/plugins/psychic.c b/libpurple/plugins/psychic.c
--- a/libpurple/plugins/psychic.c
+++ b/libpurple/plugins/psychic.c
@@ -152,7 +152,7 @@ psychic_load(GPluginPlugin *plugin, GErr
   convs_handle = purple_conversations_get_handle();
 
   purple_signal_connect(convs_handle, "buddy-typing", plugin,
-		      PURPLE_CALLBACK(buddy_typing_cb), NULL);
+		      G_CALLBACK(buddy_typing_cb), NULL);
 
   return TRUE;
 }
diff --git a/libpurple/plugins/purple-toast.c b/libpurple/plugins/purple-toast.c
--- a/libpurple/plugins/purple-toast.c
+++ b/libpurple/plugins/purple-toast.c
@@ -214,14 +214,14 @@ purple_toast_load(GPluginPlugin *plugin,
 	purple_signal_connect(conv_handle,
 	                      "received-im-msg",
 	                      plugin,
-	                      PURPLE_CALLBACK(purple_toast_im_message_received),
+	                      G_CALLBACK(purple_toast_im_message_received),
 	                      NULL
 	);
 
 	purple_signal_connect(conv_handle,
 	                      "received-chat-msg",
 	                      plugin,
-	                      PURPLE_CALLBACK(purple_toast_chat_message_received),
+	                      G_CALLBACK(purple_toast_chat_message_received),
 	                      NULL
 	);
 
diff --git a/libpurple/plugins/statenotify.c b/libpurple/plugins/statenotify.c
--- a/libpurple/plugins/statenotify.c
+++ b/libpurple/plugins/statenotify.c
@@ -165,13 +165,13 @@ state_notify_load(GPluginPlugin *plugin,
 	purple_prefs_add_bool("/plugins/core/statenotify/notify_signon", TRUE);
 
 	purple_signal_connect(blist_handle, "buddy-status-changed", plugin,
-	                    PURPLE_CALLBACK(buddy_status_changed_cb), NULL);
+	                    G_CALLBACK(buddy_status_changed_cb), NULL);
 	purple_signal_connect(blist_handle, "buddy-idle-changed", plugin,
-	                    PURPLE_CALLBACK(buddy_idle_changed_cb), NULL);
+	                    G_CALLBACK(buddy_idle_changed_cb), NULL);
 	purple_signal_connect(blist_handle, "buddy-signed-on", plugin,
-	                    PURPLE_CALLBACK(buddy_signon_cb), NULL);
+	                    G_CALLBACK(buddy_signon_cb), NULL);
 	purple_signal_connect(blist_handle, "buddy-signed-off", plugin,
-	                    PURPLE_CALLBACK(buddy_signoff_cb), NULL);
+	                    G_CALLBACK(buddy_signoff_cb), NULL);
 
 	return TRUE;
 }
diff --git a/libpurple/protocols/facebook/facebook.c b/libpurple/protocols/facebook/facebook.c
--- a/libpurple/protocols/facebook/facebook.c
+++ b/libpurple/protocols/facebook/facebook.c
@@ -1208,7 +1208,7 @@ fb_client_blist_node_menu(PurpleProtocol
 	fata = purple_connection_get_protocol_data(gc);
 
 	act = purple_action_menu_new(_("Initiate _Chat"),
-	                             PURPLE_CALLBACK(fb_blist_chat_init),
+	                             G_CALLBACK(fb_blist_chat_init),
 	                             fata, NULL);
 	acts = g_list_prepend(acts, act);
 
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -1276,7 +1276,7 @@ gg_load(GPluginPlugin *plugin, GError **
 	ggp_message_setup_global();
 
 	purple_signal_connect(purple_get_core(), "uri-handler", plugin,
-			PURPLE_CALLBACK(gg_uri_handler), NULL);
+			G_CALLBACK(gg_uri_handler), NULL);
 
 	return TRUE;
 }
@@ -1291,7 +1291,7 @@ gg_unload(GPluginPlugin *plugin, gboolea
 	}
 
 	purple_signal_disconnect(purple_get_core(), "uri-handler", plugin,
-			PURPLE_CALLBACK(gg_uri_handler));
+			G_CALLBACK(gg_uri_handler));
 
 	ggp_servconn_cleanup();
 	ggp_html_cleanup();
diff --git a/libpurple/protocols/irc/irc.c b/libpurple/protocols/irc/irc.c
--- a/libpurple/protocols/irc/irc.c
+++ b/libpurple/protocols/irc/irc.c
@@ -1222,7 +1222,7 @@ irc_load(GPluginPlugin *plugin, GError *
 			     G_TYPE_POINTER); /* pointer to a string */
 
 	purple_signal_connect(purple_get_core(), "uri-handler", plugin,
-			PURPLE_CALLBACK(irc_uri_handler), NULL);
+			G_CALLBACK(irc_uri_handler), NULL);
 
 	return TRUE;
 }
@@ -1239,7 +1239,7 @@ irc_unload(GPluginPlugin *plugin, gboole
 	irc_unregister_commands();
 
 	purple_signal_disconnect(purple_get_core(), "uri-handler", plugin,
-			PURPLE_CALLBACK(irc_uri_handler));
+			G_CALLBACK(irc_uri_handler));
 
 	g_clear_object(&_irc_protocol);
 
diff --git a/libpurple/protocols/jabber/buddy.c b/libpurple/protocols/jabber/buddy.c
--- a/libpurple/protocols/jabber/buddy.c
+++ b/libpurple/protocols/jabber/buddy.c
@@ -1811,11 +1811,11 @@ static GList *jabber_buddy_menu(PurpleBu
 			jb != js->user_jb) {
 		if(jb->invisible & JABBER_INVIS_BUDDY) {
 			act = purple_action_menu_new(_("Un-hide From"),
-			                           PURPLE_CALLBACK(jabber_buddy_make_visible),
+			                           G_CALLBACK(jabber_buddy_make_visible),
 			                           NULL, NULL);
 		} else {
 			act = purple_action_menu_new(_("Temporarily Hide From"),
-			                           PURPLE_CALLBACK(jabber_buddy_make_invisible),
+			                           G_CALLBACK(jabber_buddy_make_invisible),
 			                           NULL, NULL);
 		}
 		m = g_list_append(m, act);
@@ -1823,14 +1823,14 @@ static GList *jabber_buddy_menu(PurpleBu
 
 	if(jb->subscription & JABBER_SUB_FROM && jb != js->user_jb) {
 		act = purple_action_menu_new(_("Cancel Presence Notification"),
-		                           PURPLE_CALLBACK(jabber_buddy_cancel_presence_notification),
+		                           G_CALLBACK(jabber_buddy_cancel_presence_notification),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
 
 	if(!(jb->subscription & JABBER_SUB_TO)) {
 		act = purple_action_menu_new(_("(Re-)Request authorization"),
-		                           PURPLE_CALLBACK(jabber_buddy_rerequest_auth),
+		                           G_CALLBACK(jabber_buddy_rerequest_auth),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 
@@ -1839,7 +1839,7 @@ static GList *jabber_buddy_menu(PurpleBu
 		/* shouldn't this just happen automatically when the buddy is
 		   removed? */
 		act = purple_action_menu_new(_("Unsubscribe"),
-		                           PURPLE_CALLBACK(jabber_buddy_unsubscribe),
+		                           G_CALLBACK(jabber_buddy_unsubscribe),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
@@ -1856,11 +1856,11 @@ static GList *jabber_buddy_menu(PurpleBu
 	 */
 	if (strchr(name, '@') == NULL) {
 		act = purple_action_menu_new(_("Log In"),
-									 PURPLE_CALLBACK(jabber_buddy_login),
+									 G_CALLBACK(jabber_buddy_login),
 									 NULL, NULL);
 		m = g_list_append(m, act);
 		act = purple_action_menu_new(_("Log Out"),
-									 PURPLE_CALLBACK(jabber_buddy_logout),
+									 G_CALLBACK(jabber_buddy_logout),
 									 NULL, NULL);
 		m = g_list_append(m, act);
 	}
@@ -1873,7 +1873,7 @@ static GList *jabber_buddy_menu(PurpleBu
 			continue;
 		for(commands = jbr->commands; commands; commands = g_list_next(commands)) {
 			JabberAdHocCommands *cmd = commands->data;
-			act = purple_action_menu_new(cmd->name, PURPLE_CALLBACK(jabber_adhoc_execute_action), cmd, NULL);
+			act = purple_action_menu_new(cmd->name, G_CALLBACK(jabber_adhoc_execute_action), cmd, NULL);
 			m = g_list_append(m, act);
 		}
 	}
@@ -2219,7 +2219,7 @@ void jabber_user_search_begin(PurpleProt
 			_("Select a user directory to search"),
 			def_val,
 			FALSE, FALSE, NULL,
-			_("Search Directory"), PURPLE_CALLBACK(jabber_user_search),
+			_("Search Directory"), G_CALLBACK(jabber_user_search),
 			_("Cancel"), NULL,
 			NULL, js);
 }
diff --git a/libpurple/protocols/jabber/chat.c b/libpurple/protocols/jabber/chat.c
--- a/libpurple/protocols/jabber/chat.c
+++ b/libpurple/protocols/jabber/chat.c
@@ -878,8 +878,8 @@ jabber_roomlist_get_list(PurpleProtocolR
 			_("Select a conference server to query"),
 			js->chat_servers ? js->chat_servers->data : NULL,
 			FALSE, FALSE, NULL,
-			_("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb),
-			_("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb),
+			_("Find Rooms"), G_CALLBACK(roomlist_ok_cb),
+			_("Cancel"), G_CALLBACK(roomlist_cancel_cb),
 			purple_request_cpar_from_connection(gc),
 			js);
 
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -3868,9 +3868,9 @@ static void jabber_init_protocol(PurpleP
 			G_TYPE_STRING); /* namespace */
 
 	purple_signal_connect(protocol, "jabber-register-namespace-watcher",
-			protocol, PURPLE_CALLBACK(jabber_iq_signal_register), NULL);
+			protocol, G_CALLBACK(jabber_iq_signal_register), NULL);
 	purple_signal_connect(protocol, "jabber-unregister-namespace-watcher",
-			protocol, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL);
+			protocol, G_CALLBACK(jabber_iq_signal_unregister), NULL);
 
 
 	purple_signal_register(protocol, "jabber-receiving-xmlnode",
@@ -3888,7 +3888,7 @@ static void jabber_init_protocol(PurpleP
 	 * warned!
 	 */
 	purple_signal_connect_priority(protocol, "jabber-sending-xmlnode",
-			protocol, PURPLE_CALLBACK(jabber_send_signal_cb),
+			protocol, G_CALLBACK(jabber_send_signal_cb),
 			NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST);
 
 	purple_signal_register(protocol, "jabber-sending-text",
@@ -4160,7 +4160,7 @@ jabber_load(GPluginPlugin *plugin, GErro
 	}
 
 	purple_signal_connect(purple_get_core(), "uri-handler", xmpp_protocol,
-		PURPLE_CALLBACK(xmpp_uri_handler), xmpp_protocol);
+		G_CALLBACK(xmpp_uri_handler), xmpp_protocol);
 
 	jabber_init_protocol(xmpp_protocol);
 
@@ -4177,7 +4177,7 @@ jabber_unload(GPluginPlugin *plugin, gbo
 	}
 
 	purple_signal_disconnect(purple_get_core(), "uri-handler",
-			xmpp_protocol, PURPLE_CALLBACK(xmpp_uri_handler));
+			xmpp_protocol, G_CALLBACK(xmpp_uri_handler));
 
 	jabber_uninit_protocol(xmpp_protocol);
 
diff --git a/libpurple/protocols/jabber/usernick.c b/libpurple/protocols/jabber/usernick.c
--- a/libpurple/protocols/jabber/usernick.c
+++ b/libpurple/protocols/jabber/usernick.c
@@ -79,7 +79,7 @@ static void do_nick_got_own_nick_cb(Jabb
 
 	purple_request_input(js->gc, _("Set User Nickname"), _("Please specify a new nickname for you."),
 		_("This information is visible to all contacts on your contact list, so choose something appropriate."),
-		oldnickname, FALSE, FALSE, NULL, _("Set"), PURPLE_CALLBACK(do_nick_set), _("Cancel"), NULL,
+		oldnickname, FALSE, FALSE, NULL, _("Set"), G_CALLBACK(do_nick_set), _("Cancel"), NULL,
 		purple_request_cpar_from_connection(js->gc), js);
 	g_free(oldnickname);
 }
diff --git a/libpurple/protocols/novell/novell.c b/libpurple/protocols/novell/novell.c
--- a/libpurple/protocols/novell/novell.c
+++ b/libpurple/protocols/novell/novell.c
@@ -3505,7 +3505,7 @@ novell_blist_node_menu(PurpleProtocolCli
 
 	if(PURPLE_IS_BUDDY(node)) {
 		act = purple_action_menu_new(_("Initiate _Chat"),
-		                           PURPLE_CALLBACK(_initiate_conference_cb),
+		                           G_CALLBACK(_initiate_conference_cb),
 		                           NULL, NULL);
 		list = g_list_append(list, act);
 	}
diff --git a/libpurple/protocols/null/nullprpl.c b/libpurple/protocols/null/nullprpl.c
--- a/libpurple/protocols/null/nullprpl.c
+++ b/libpurple/protocols/null/nullprpl.c
@@ -378,7 +378,7 @@ null_blist_node_menu(PurpleProtocolClien
   if (PURPLE_IS_BUDDY(node)) {
     PurpleActionMenu *action = purple_action_menu_new(
       _("NullProtocol example menu item"),
-      PURPLE_CALLBACK(blist_example_menu_item),
+      G_CALLBACK(blist_example_menu_item),
       NULL,   /* userdata passed to the callback */
       NULL);  /* child menu items */
     return g_list_append(NULL, action);
diff --git a/libpurple/protocols/sametime/sametime.c b/libpurple/protocols/sametime/sametime.c
--- a/libpurple/protocols/sametime/sametime.c
+++ b/libpurple/protocols/sametime/sametime.c
@@ -1297,7 +1297,7 @@ static void blist_node_menu_cb(PurpleBli
   owner = purple_blist_node_get_string(node, GROUP_KEY_OWNER);
   if(owner && purple_strequal(owner, purple_account_get_username(acct))) {
     act = purple_action_menu_new(_("Get Notes Address Book Info"),
-                               PURPLE_CALLBACK(blist_menu_nab), pd, NULL);
+                               G_CALLBACK(blist_menu_nab), pd, NULL);
     *menu = g_list_append(*menu, act);
   }
 }
@@ -1449,12 +1449,12 @@ static void session_started(struct mwPur
   /* start watching for new conversations */
   purple_signal_connect(purple_conversations_get_handle(),
 		      "conversation-created", pd,
-		      PURPLE_CALLBACK(conversation_created_cb), pd);
+		      G_CALLBACK(conversation_created_cb), pd);
 
   /* watch for group extended menu items */
   purple_signal_connect(purple_blist_get_handle(),
 		      "blist-node-extended-menu", pd,
-		      PURPLE_CALLBACK(blist_node_menu_cb), pd);
+		      G_CALLBACK(blist_node_menu_cb), pd);
 
   /* use our services to do neat things */
   services_starting(pd);
@@ -3531,7 +3531,7 @@ mw_protocol_blist_node_menu(PurpleProtoc
   l = g_list_append(l, NULL);
 
   act = purple_action_menu_new(_("Invite to Conference..."),
-                             PURPLE_CALLBACK(blist_menu_conf), NULL, NULL);
+                             G_CALLBACK(blist_menu_conf), NULL, NULL);
   l = g_list_append(l, act);
 
   /** note: this never gets called for a PurpleGroup, have to use the
diff --git a/libpurple/protocols/silc/buddy.c b/libpurple/protocols/silc/buddy.c
--- a/libpurple/protocols/silc/buddy.c
+++ b/libpurple/protocols/silc/buddy.c
@@ -1665,37 +1665,37 @@ GList *silcpurple_buddy_menu(PurpleBuddy
 	    silc_client_private_message_key_is_set(sg->client,
 						   sg->conn, client_entry)) {
 		act = purple_action_menu_new(_("Reset IM Key"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_resetkey),
+		                           G_CALLBACK(silcpurple_buddy_resetkey),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	} else {
 		act = purple_action_menu_new(_("IM with Key Exchange"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_keyagr),
+		                           G_CALLBACK(silcpurple_buddy_keyagr),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 
 		act = purple_action_menu_new(_("IM with Password"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_privkey_menu),
+		                           G_CALLBACK(silcpurple_buddy_privkey_menu),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
 
 	if (pkfile) {
 		act = purple_action_menu_new(_("Show Public Key"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_showkey),
+		                           G_CALLBACK(silcpurple_buddy_showkey),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 
 	} else {
 		act = purple_action_menu_new(_("Get Public Key..."),
-		                           PURPLE_CALLBACK(silcpurple_buddy_getkey_menu),
+		                           G_CALLBACK(silcpurple_buddy_getkey_menu),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
 
 	if (conn && conn->local_entry->mode & SILC_UMODE_ROUTER_OPERATOR) {
 		act = purple_action_menu_new(_("Kill User"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_kill),
+		                           G_CALLBACK(silcpurple_buddy_kill),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
@@ -1705,7 +1705,7 @@ GList *silcpurple_buddy_menu(PurpleBuddy
 		wb->sg = sg;
 		wb->client_entry = client_entry;
 		act = purple_action_menu_new(_("Draw On Whiteboard"),
-		                           PURPLE_CALLBACK(silcpurple_buddy_wb),
+		                           G_CALLBACK(silcpurple_buddy_wb),
 		                           (void *)wb, NULL);
 		m = g_list_append(m, act);
 	}
diff --git a/libpurple/protocols/silc/chat.c b/libpurple/protocols/silc/chat.c
--- a/libpurple/protocols/silc/chat.c
+++ b/libpurple/protocols/silc/chat.c
@@ -866,31 +866,31 @@ GList *silcpurple_chat_menu(PurpleChat *
 		return NULL;
 
 	act = purple_action_menu_new(_("Get Info"),
-	                           PURPLE_CALLBACK(silcpurple_chat_getinfo_menu),
+	                           G_CALLBACK(silcpurple_chat_getinfo_menu),
 	                           NULL, NULL);
 	m = g_list_append(m, act);
 
 	if (chu) {
 		act = purple_action_menu_new(_("Add Private Group"),
-		                           PURPLE_CALLBACK(silcpurple_chat_prv),
+		                           G_CALLBACK(silcpurple_chat_prv),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
 
 	if (chu && mode & SILC_CHANNEL_UMODE_CHANFO) {
 		act = purple_action_menu_new(_("Channel Authentication"),
-		                           PURPLE_CALLBACK(silcpurple_chat_chauth),
+		                           G_CALLBACK(silcpurple_chat_chauth),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 
 		if (channel->mode & SILC_CHANNEL_MODE_FOUNDER_AUTH) {
 			act = purple_action_menu_new(_("Reset Permanent"),
-			                           PURPLE_CALLBACK(silcpurple_chat_permanent_reset),
+			                           G_CALLBACK(silcpurple_chat_permanent_reset),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		} else {
 			act = purple_action_menu_new(_("Set Permanent"),
-			                           PURPLE_CALLBACK(silcpurple_chat_permanent),
+			                           G_CALLBACK(silcpurple_chat_permanent),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		}
@@ -898,42 +898,42 @@ GList *silcpurple_chat_menu(PurpleChat *
 
 	if (chu && mode & SILC_CHANNEL_UMODE_CHANOP) {
 		act = purple_action_menu_new(_("Set User Limit"),
-		                           PURPLE_CALLBACK(silcpurple_chat_ulimit),
+		                           G_CALLBACK(silcpurple_chat_ulimit),
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 
 		if (channel->mode & SILC_CHANNEL_MODE_TOPIC) {
 			act = purple_action_menu_new(_("Reset Topic Restriction"),
-			                           PURPLE_CALLBACK(silcpurple_chat_resettopic),
+			                           G_CALLBACK(silcpurple_chat_resettopic),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		} else {
 			act = purple_action_menu_new(_("Set Topic Restriction"),
-			                           PURPLE_CALLBACK(silcpurple_chat_settopic),
+			                           G_CALLBACK(silcpurple_chat_settopic),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		}
 
 		if (channel->mode & SILC_CHANNEL_MODE_PRIVATE) {
 			act = purple_action_menu_new(_("Reset Private Channel"),
-			                           PURPLE_CALLBACK(silcpurple_chat_resetprivate),
+			                           G_CALLBACK(silcpurple_chat_resetprivate),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		} else {
 			act = purple_action_menu_new(_("Set Private Channel"),
-			                           PURPLE_CALLBACK(silcpurple_chat_setprivate),
+			                           G_CALLBACK(silcpurple_chat_setprivate),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		}
 
 		if (channel->mode & SILC_CHANNEL_MODE_SECRET) {
 			act = purple_action_menu_new(_("Reset Secret Channel"),
-			                           PURPLE_CALLBACK(silcpurple_chat_resetsecret),
+			                           G_CALLBACK(silcpurple_chat_resetsecret),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		} else {
 			act = purple_action_menu_new(_("Set Secret Channel"),
-			                           PURPLE_CALLBACK(silcpurple_chat_setsecret),
+			                           G_CALLBACK(silcpurple_chat_setsecret),
 			                           NULL, NULL);
 			m = g_list_append(m, act);
 		}
@@ -945,7 +945,7 @@ GList *silcpurple_chat_menu(PurpleChat *
 		wb->sg = sg;
 		wb->channel = channel;
 		act = purple_action_menu_new(_("Draw On Whiteboard"),
-		                           PURPLE_CALLBACK(silcpurple_chat_wb),
+		                           G_CALLBACK(silcpurple_chat_wb),
 		                           (void *)wb, NULL);
 		m = g_list_append(m, act);
 	}
diff --git a/libpurple/purplecredentialmanager.c b/libpurple/purplecredentialmanager.c
--- a/libpurple/purplecredentialmanager.c
+++ b/libpurple/purplecredentialmanager.c
@@ -173,7 +173,7 @@ purple_credential_manager_init(PurpleCre
 	 * were unable to find their credential provider.
 	 */
 	purple_signal_connect(purple_get_core(), "core-initialized", manager,
-	                      PURPLE_CALLBACK(purple_credential_manager_core_init_cb),
+	                      G_CALLBACK(purple_credential_manager_core_init_cb),
 	                      manager);
 }
 
diff --git a/libpurple/savedstatuses.c b/libpurple/savedstatuses.c
--- a/libpurple/savedstatuses.c
+++ b/libpurple/savedstatuses.c
@@ -1244,7 +1244,7 @@ purple_savedstatuses_init(void)
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed",
 			handle,
-			PURPLE_CALLBACK(purple_savedstatus_unset_all_substatuses),
+			G_CALLBACK(purple_savedstatus_unset_all_substatuses),
 			NULL);
 }
 
diff --git a/libpurple/signals.h b/libpurple/signals.h
--- a/libpurple/signals.h
+++ b/libpurple/signals.h
@@ -31,14 +31,6 @@
 #include <glib-object.h>
 
 /**
- * PURPLE_CALLBACK:
- * @func: a function pointer.
- *
- * Cast a function pointer to #GCallback.
- */
-#define PURPLE_CALLBACK(func) ((GCallback)(func))
-
-/**
  * PurpleSignalMarshalFunc:
  * @cb: The #GCallback to call.
  * @args: The arguments to the function.
diff --git a/pidgin/gtkaccount.c b/pidgin/gtkaccount.c
--- a/pidgin/gtkaccount.c
+++ b/pidgin/gtkaccount.c
@@ -2197,7 +2197,7 @@ pidgin_accounts_window_show(void)
 	/* Signals */
 	purple_signal_connect(pidgin_accounts_get_handle(), "account-modified",
 	                    accounts_window,
-	                    PURPLE_CALLBACK(account_modified_cb), accounts_window);
+	                    G_CALLBACK(account_modified_cb), accounts_window);
 	purple_prefs_connect_callback(accounts_window,
 	                    PIDGIN_PREFS_ROOT "/accounts/buddyicon",
 	                    global_buddyicon_changed, accounts_window);
@@ -2567,22 +2567,22 @@ pidgin_accounts_init(void)
 	/* Setup some purple signal handlers. */
 	purple_signal_connect(purple_connections_get_handle(), "signed-on",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(signed_on_off_cb), NULL);
+						G_CALLBACK(signed_on_off_cb), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signed-off",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(signed_on_off_cb), NULL);
+						G_CALLBACK(signed_on_off_cb), NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-added",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(add_account_to_liststore), NULL);
+						G_CALLBACK(add_account_to_liststore), NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(account_removed_cb), NULL);
+						G_CALLBACK(account_removed_cb), NULL);
 	purple_signal_connect(purple_accounts_get_handle(), "account-disabled",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(FALSE));
+						G_CALLBACK(account_abled_cb), GINT_TO_POINTER(FALSE));
 	purple_signal_connect(purple_accounts_get_handle(), "account-enabled",
 						pidgin_accounts_get_handle(),
-						PURPLE_CALLBACK(account_abled_cb), GINT_TO_POINTER(TRUE));
+						G_CALLBACK(account_abled_cb), GINT_TO_POINTER(TRUE));
 
 	account_pref_wins =
 		g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL);
diff --git a/pidgin/gtkblist.c b/pidgin/gtkblist.c
--- a/pidgin/gtkblist.c
+++ b/pidgin/gtkblist.c
@@ -500,7 +500,7 @@ gtk_blist_auto_personize(PurpleBlistNode
 		char *msg = g_strdup_printf(ngettext("You have %d contact named %s. Would you like to merge them?", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias);
 		purple_request_action(NULL, NULL, msg, _("Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. "
 							 "You can separate them again by choosing 'Expand' from the contact's context menu"), 0, NULL,
-				      merges, 2, _("_Yes"), PURPLE_CALLBACK(gtk_blist_do_personize), _("_No"), PURPLE_CALLBACK(g_list_free));
+				      merges, 2, _("_Yes"), G_CALLBACK(gtk_blist_do_personize), _("_No"), G_CALLBACK(g_list_free));
 		g_free(msg);
 	} else
 		g_list_free(merges);
@@ -3106,7 +3106,7 @@ conversation_created_cb(PurpleConversati
 			ui->conv = conv;
 
 			purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
-					ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui);
+					ui, G_CALLBACK(conversation_deleted_update_ui_cb), ui);
 		}
 	} else if (PURPLE_IS_CHAT_CONVERSATION(conv)) {
 		PurpleChat *chat = purple_blist_find_chat(account, purple_conversation_get_name(conv));
@@ -3119,7 +3119,7 @@ conversation_created_cb(PurpleConversati
 		ui->conv = conv;
 
 		purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
-				ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui);
+				ui, G_CALLBACK(conversation_deleted_update_ui_cb), ui);
 	}
 }
 
@@ -4014,21 +4014,21 @@ static void pidgin_blist_show(PurpleBudd
 
 	handle = purple_accounts_get_handle();
 	purple_signal_connect(handle, "account-error-changed", gtkblist,
-	                      PURPLE_CALLBACK(update_account_error_state),
+	                      G_CALLBACK(update_account_error_state),
 	                      gtkblist);
 
 	handle = purple_conversations_get_handle();
 	purple_signal_connect(handle, "conversation-updated", gtkblist,
-	                      PURPLE_CALLBACK(conversation_updated_cb),
+	                      G_CALLBACK(conversation_updated_cb),
 	                      gtkblist);
 	purple_signal_connect(handle, "deleting-conversation", gtkblist,
-	                      PURPLE_CALLBACK(conversation_deleting_cb),
+	                      G_CALLBACK(conversation_deleting_cb),
 	                      gtkblist);
 	purple_signal_connect(handle, "conversation-created", gtkblist,
-	                      PURPLE_CALLBACK(conversation_created_cb),
+	                      G_CALLBACK(conversation_created_cb),
 	                      gtkblist);
 	purple_signal_connect(handle, "chat-joined", gtkblist,
-	                      PURPLE_CALLBACK(conversation_created_cb),
+	                      G_CALLBACK(conversation_created_cb),
 	                      gtkblist);
 
 	show_initial_account_errors(gtkblist);
@@ -5147,14 +5147,14 @@ void pidgin_blist_init(void)
 						G_TYPE_STRING, 1, PURPLE_TYPE_BUDDY);
 
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on",
-			gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
+			gtk_blist_handle, G_CALLBACK(buddy_signonoff_cb), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off",
-			gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
+			gtk_blist_handle, G_CALLBACK(buddy_signonoff_cb), NULL);
 	purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed",
-			gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL);
+			gtk_blist_handle, G_CALLBACK(pidgin_blist_update_privacy_cb), NULL);
 
 	purple_signal_connect_priority(purple_connections_get_handle(), "autojoin",
-	                               gtk_blist_handle, PURPLE_CALLBACK(autojoin_cb),
+	                               gtk_blist_handle, G_CALLBACK(autojoin_cb),
 	                               NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST);
 }
 
diff --git a/pidgin/gtkconn.c b/pidgin/gtkconn.c
--- a/pidgin/gtkconn.c
+++ b/pidgin/gtkconn.c
@@ -219,7 +219,7 @@ pidgin_connection_init(void)
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed",
 						pidgin_connection_get_handle(),
-						PURPLE_CALLBACK(account_removed_cb), NULL);
+						G_CALLBACK(account_removed_cb), NULL);
 }
 
 void
diff --git a/pidgin/gtkconv.c b/pidgin/gtkconv.c
--- a/pidgin/gtkconv.c
+++ b/pidgin/gtkconv.c
@@ -1860,11 +1860,11 @@ setup_chat_userlist(PidginConversation *
 	                                               NULL);
 
 	purple_signal_connect(blist_handle, "blist-node-added",
-						gtkchat, PURPLE_CALLBACK(buddy_added_cb), conv);
+						gtkchat, G_CALLBACK(buddy_added_cb), conv);
 	purple_signal_connect(blist_handle, "blist-node-removed",
-						gtkchat, PURPLE_CALLBACK(buddy_removed_cb), conv);
+						gtkchat, G_CALLBACK(buddy_removed_cb), conv);
 	purple_signal_connect(blist_handle, "blist-node-aliased",
-						gtkchat, PURPLE_CALLBACK(blist_node_aliased_cb), conv);
+						gtkchat, G_CALLBACK(blist_node_aliased_cb), conv);
 
 	gtk_tree_view_column_set_expand(col, TRUE);
 	g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
@@ -3362,36 +3362,36 @@ pidgin_conversations_init(void)
 
 	/* Callbacks to update a conversation */
 	purple_signal_connect(blist_handle, "buddy-signed-on",
-						handle, PURPLE_CALLBACK(update_buddy_sign), "on");
+						handle, G_CALLBACK(update_buddy_sign), "on");
 	purple_signal_connect(blist_handle, "buddy-signed-off",
-						handle, PURPLE_CALLBACK(update_buddy_sign), "off");
+						handle, G_CALLBACK(update_buddy_sign), "off");
 	purple_signal_connect(blist_handle, "buddy-status-changed",
-						handle, PURPLE_CALLBACK(update_buddy_status_changed), NULL);
+						handle, G_CALLBACK(update_buddy_status_changed), NULL);
 	purple_signal_connect(blist_handle, "buddy-privacy-changed",
-						handle, PURPLE_CALLBACK(update_buddy_privacy_changed), NULL);
+						handle, G_CALLBACK(update_buddy_privacy_changed), NULL);
 	purple_signal_connect(blist_handle, "buddy-idle-changed",
-						handle, PURPLE_CALLBACK(update_buddy_idle_changed), NULL);
+						handle, G_CALLBACK(update_buddy_idle_changed), NULL);
 	purple_signal_connect(blist_handle, "buddy-icon-changed",
-						handle, PURPLE_CALLBACK(update_buddy_icon), NULL);
+						handle, G_CALLBACK(update_buddy_icon), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing",
-						handle, PURPLE_CALLBACK(update_buddy_typing), NULL);
+						handle, G_CALLBACK(update_buddy_typing), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped",
-						handle, PURPLE_CALLBACK(update_buddy_typing), NULL);
+						handle, G_CALLBACK(update_buddy_typing), NULL);
 	purple_signal_connect(pidgin_conversations_get_handle(), "conversation-switched",
-						handle, PURPLE_CALLBACK(update_conversation_switched), NULL);
+						handle, G_CALLBACK(update_conversation_switched), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "chat-left", handle,
-						PURPLE_CALLBACK(update_chat), NULL);
+						G_CALLBACK(update_chat), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "chat-joined", handle,
-						PURPLE_CALLBACK(update_chat), NULL);
+						G_CALLBACK(update_chat), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "chat-topic-changed", handle,
-						PURPLE_CALLBACK(update_chat_topic), NULL);
+						G_CALLBACK(update_chat_topic), NULL);
 	purple_signal_connect_priority(purple_conversations_get_handle(), "conversation-updated", handle,
-						PURPLE_CALLBACK(pidgin_conv_updated), NULL,
+						G_CALLBACK(pidgin_conv_updated), NULL,
 						PURPLE_SIGNAL_PRIORITY_LOWEST);
 	purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", handle,
-			PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL);
+			G_CALLBACK(wrote_msg_update_unseen_cb), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", handle,
-			PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL);
+			G_CALLBACK(wrote_msg_update_unseen_cb), NULL);
 }
 
 void
diff --git a/pidgin/gtkrequest.c b/pidgin/gtkrequest.c
--- a/pidgin/gtkrequest.c
+++ b/pidgin/gtkrequest.c
@@ -1866,7 +1866,7 @@ create_datasheet_field(PurpleRequestFiel
 	datasheet_fill(sheet, model);
 	purple_signal_connect(sheet, "record-changed",
 		pidgin_request_get_handle(),
-		PURPLE_CALLBACK(datasheet_update), model);
+		G_CALLBACK(datasheet_update), model);
 
 	sel = gtk_tree_view_get_selection(view);
 	g_signal_connect(G_OBJECT(sel), "changed",
diff --git a/pidgin/gtksavedstatuses.c b/pidgin/gtksavedstatuses.c
--- a/pidgin/gtksavedstatuses.c
+++ b/pidgin/gtksavedstatuses.c
@@ -583,16 +583,16 @@ pidgin_status_window_show(void)
 
 	purple_signal_connect(purple_savedstatuses_get_handle(),
 			"savedstatus-changed", status_window,
-			PURPLE_CALLBACK(current_status_changed), dialog);
+			G_CALLBACK(current_status_changed), dialog);
 	purple_signal_connect(purple_savedstatuses_get_handle(),
 			"savedstatus-added", status_window,
-			PURPLE_CALLBACK(saved_status_updated_cb), dialog);
+			G_CALLBACK(saved_status_updated_cb), dialog);
 	purple_signal_connect(purple_savedstatuses_get_handle(),
 			"savedstatus-deleted", status_window,
-			PURPLE_CALLBACK(saved_status_updated_cb), dialog);
+			G_CALLBACK(saved_status_updated_cb), dialog);
 	purple_signal_connect(purple_savedstatuses_get_handle(),
 			"savedstatus-modified", status_window,
-			PURPLE_CALLBACK(saved_status_updated_cb), dialog);
+			G_CALLBACK(saved_status_updated_cb), dialog);
 
 	gtk_widget_show_all(win);
 }
diff --git a/pidgin/gtkstatusbox.c b/pidgin/gtkstatusbox.c
--- a/pidgin/gtkstatusbox.c
+++ b/pidgin/gtkstatusbox.c
@@ -1424,36 +1424,36 @@ pidgin_status_box_init (PidginStatusBox 
 
 	handle = purple_savedstatuses_get_handle();
 	purple_signal_connect(handle, "savedstatus-changed", status_box,
-	                      PURPLE_CALLBACK(current_savedstatus_changed_cb),
+	                      G_CALLBACK(current_savedstatus_changed_cb),
 	                      status_box);
 	purple_signal_connect(handle, "savedstatus-added", status_box,
-	                      PURPLE_CALLBACK(saved_status_updated_cb), status_box);
+	                      G_CALLBACK(saved_status_updated_cb), status_box);
 	purple_signal_connect(handle, "savedstatus-deleted", status_box,
-	                      PURPLE_CALLBACK(saved_status_updated_cb), status_box);
+	                      G_CALLBACK(saved_status_updated_cb), status_box);
 	purple_signal_connect(handle, "savedstatus-modified", status_box,
-	                      PURPLE_CALLBACK(saved_status_updated_cb), status_box);
+	                      G_CALLBACK(saved_status_updated_cb), status_box);
 
 	handle = purple_accounts_get_handle();
 	purple_signal_connect(handle, "account-enabled", status_box,
-	                      PURPLE_CALLBACK(account_enabled_cb), status_box);
+	                      G_CALLBACK(account_enabled_cb), status_box);
 	purple_signal_connect(handle, "account-disabled", status_box,
-	                      PURPLE_CALLBACK(account_enabled_cb), status_box);
+	                      G_CALLBACK(account_enabled_cb), status_box);
 	purple_signal_connect(handle, "account-status-changed", status_box,
-	                      PURPLE_CALLBACK(account_status_changed_cb),
+	                      G_CALLBACK(account_status_changed_cb),
 	                      status_box);
 
 	handle = purple_connections_get_handle();
 	purple_signal_connect(handle, "signing-on", status_box,
-	                      PURPLE_CALLBACK(connection_start_cb),
+	                      G_CALLBACK(connection_start_cb),
 	                      status_box);
 	purple_signal_connect(handle, "signed-on", status_box,
-	                      PURPLE_CALLBACK(connection_finish_cb),
+	                      G_CALLBACK(connection_finish_cb),
 	                      status_box);
 	purple_signal_connect(handle, "signing-off", status_box,
-	                      PURPLE_CALLBACK(connection_finish_cb),
+	                      G_CALLBACK(connection_finish_cb),
 	                      status_box);
 	purple_signal_connect(handle, "connection-error", status_box,
-	                      PURPLE_CALLBACK(connection_error_cb), status_box);
+	                      G_CALLBACK(connection_error_cb), status_box);
 
 	monitor = g_network_monitor_get_default();
 	g_signal_connect(G_OBJECT(monitor), "network-changed",
diff --git a/pidgin/gtkutils.c b/pidgin/gtkutils.c
--- a/pidgin/gtkutils.c
+++ b/pidgin/gtkutils.c
@@ -879,14 +879,14 @@ pidgin_setup_screenname_autocomplete(
 	gtk_entry_completion_set_text_column(completion, COMPLETION_DISPLAYED_COLUMN);
 
 	purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
-						PURPLE_CALLBACK(repopulate_autocomplete), data);
+						G_CALLBACK(repopulate_autocomplete), data);
 	purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
-						PURPLE_CALLBACK(repopulate_autocomplete), data);
+						G_CALLBACK(repopulate_autocomplete), data);
 
 	purple_signal_connect(purple_accounts_get_handle(), "account-added", entry,
-						PURPLE_CALLBACK(repopulate_autocomplete), data);
+						G_CALLBACK(repopulate_autocomplete), data);
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
-						PURPLE_CALLBACK(repopulate_autocomplete), data);
+						G_CALLBACK(repopulate_autocomplete), data);
 
 	g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
 }
diff --git a/pidgin/pidginapplication.c b/pidgin/pidginapplication.c
--- a/pidgin/pidginapplication.c
+++ b/pidgin/pidginapplication.c
@@ -753,10 +753,10 @@ pidgin_application_startup(GApplication 
 	 */
 	handle = purple_connections_get_handle();
 	purple_signal_connect(handle, "online", application,
-	                      PURPLE_CALLBACK(pidgin_application_online_cb),
+	                      G_CALLBACK(pidgin_application_online_cb),
 	                      application);
 	purple_signal_connect(handle, "offline", application,
-	                      PURPLE_CALLBACK(pidgin_application_offline_cb),
+	                      G_CALLBACK(pidgin_application_offline_cb),
 	                      application);
 
 	/* connect to account-signed-on and account-signed-off to toggle actions
@@ -764,10 +764,10 @@ pidgin_application_startup(GApplication 
 	 */
 	handle = purple_accounts_get_handle();
 	purple_signal_connect(handle, "account-signed-on", application,
-	                      PURPLE_CALLBACK(pidgin_application_signed_on_cb),
+	                      G_CALLBACK(pidgin_application_signed_on_cb),
 	                      application);
 	purple_signal_connect(handle, "account-signed-off", application,
-	                      PURPLE_CALLBACK(pidgin_application_signed_off_cb),
+	                      G_CALLBACK(pidgin_application_signed_off_cb),
 	                      application);
 
 }
diff --git a/pidgin/pidginstatusmanager.c b/pidgin/pidginstatusmanager.c
--- a/pidgin/pidginstatusmanager.c
+++ b/pidgin/pidginstatusmanager.c
@@ -254,16 +254,16 @@ pidgin_status_manager_init(PidginStatusM
 
 	handle = purple_savedstatuses_get_handle();
 	purple_signal_connect(handle, "savedstatus-changed", manager,
-	                      PURPLE_CALLBACK(pidgin_status_manager_savedstatus_changed_cb),
+	                      G_CALLBACK(pidgin_status_manager_savedstatus_changed_cb),
 	                      manager);
 	purple_signal_connect(handle, "savedstatus-added", manager,
-	                      PURPLE_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
+	                      G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
 	                      manager);
 	purple_signal_connect(handle, "savedstatus-deleted", manager,
-	                      PURPLE_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
+	                      G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
 	                      manager);
 	purple_signal_connect(handle, "savedstatus-modified", manager,
-	                      PURPLE_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
+	                      G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
 	                      manager);
 }
 
diff --git a/pidgin/plugins/disco/gtkdisco.c b/pidgin/plugins/disco/gtkdisco.c
--- a/pidgin/plugins/disco/gtkdisco.c
+++ b/pidgin/plugins/disco/gtkdisco.c
@@ -235,8 +235,8 @@ static void browse_button_cb(GtkWidget *
 	dialog->prompt_handle = purple_request_input(my_plugin, _("Server name request"), _("Enter an XMPP Server"),
 			_("Select an XMPP server to query"),
 			server, FALSE, FALSE, NULL,
-			_("Find Services"), PURPLE_CALLBACK(discolist_ok_cb),
-			_("Cancel"), PURPLE_CALLBACK(discolist_cancel_cb),
+			_("Find Services"), G_CALLBACK(discolist_ok_cb),
+			_("Cancel"), G_CALLBACK(discolist_cancel_cb),
 			purple_request_cpar_from_connection(pc), pdl);
 
 	g_free(server);
diff --git a/pidgin/plugins/disco/xmppdisco.c b/pidgin/plugins/disco/xmppdisco.c
--- a/pidgin/plugins/disco/xmppdisco.c
+++ b/pidgin/plugins/disco/xmppdisco.c
@@ -126,7 +126,7 @@ xmpp_iq_received(PurpleConnection *pc, c
 		PurpleProtocol *protocol = purple_connection_get_protocol(pc);
 		iq_listening = FALSE;
 		purple_signal_disconnect(protocol, "jabber-receiving-iq", my_plugin,
-		                         PURPLE_CALLBACK(xmpp_iq_received));
+		                         G_CALLBACK(xmpp_iq_received));
 	}
 
 	/* Om nom nom nom */
@@ -152,7 +152,7 @@ xmpp_iq_register_callback(PurpleConnecti
 
 		iq_listening = TRUE;
 		purple_signal_connect(protocol, "jabber-receiving-iq", my_plugin,
-		                      PURPLE_CALLBACK(xmpp_iq_received), NULL);
+		                      G_CALLBACK(xmpp_iq_received), NULL);
 	}
 }
 
@@ -654,7 +654,7 @@ xmpp_disco_load(GPluginPlugin *plugin, G
 	pidgin_disco_dialog_register(plugin);
 
 	purple_signal_connect(purple_connections_get_handle(), "signing-off",
-	                      plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
+	                      plugin, G_CALLBACK(signed_off_cb), NULL);
 
 	iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 
diff --git a/pidgin/plugins/gestures/gestures.c b/pidgin/plugins/gestures/gestures.c
--- a/pidgin/plugins/gestures/gestures.c
+++ b/pidgin/plugins/gestures/gestures.c
@@ -257,7 +257,7 @@ gestures_load(GPluginPlugin *plugin, GEr
 
 	purple_signal_connect(purple_conversations_get_handle(),
 						"conversation-created",
-						plugin, PURPLE_CALLBACK(new_conv_cb), NULL);
+						plugin, G_CALLBACK(new_conv_cb), NULL);
 
 	return TRUE;
 }
diff --git a/pidgin/plugins/gtkbuddynote.c b/pidgin/plugins/gtkbuddynote.c
--- a/pidgin/plugins/gtkbuddynote.c
+++ b/pidgin/plugins/gtkbuddynote.c
@@ -73,7 +73,7 @@ static gboolean
 gtk_buddy_note_load(GPluginPlugin *plugin, GError **error)
 {
 	purple_signal_connect(pidgin_blist_get_handle(), "drawing-tooltip",
-	                      plugin, PURPLE_CALLBACK(append_to_tooltip), NULL);
+	                      plugin, G_CALLBACK(append_to_tooltip), NULL);
 	return TRUE;
 }
 
diff --git a/pidgin/plugins/iconaway.c b/pidgin/plugins/iconaway.c
--- a/pidgin/plugins/iconaway.c
+++ b/pidgin/plugins/iconaway.c
@@ -78,7 +78,7 @@ static gboolean
 icon_away_load(GPluginPlugin *plugin, GError **error)
 {
 	purple_signal_connect(purple_accounts_get_handle(), "account-status-changed",
-						plugin, PURPLE_CALLBACK(iconify_windows), NULL);
+						plugin, G_CALLBACK(iconify_windows), NULL);
 
 	return TRUE;
 }
diff --git a/pidgin/plugins/notify.c b/pidgin/plugins/notify.c
--- a/pidgin/plugins/notify.c
+++ b/pidgin/plugins/notify.c
@@ -871,19 +871,19 @@ notify_load(GPluginPlugin *plugin, GErro
 	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_switch", TRUE);
 
 	purple_signal_connect(gtk_conv_handle, "displayed-im-msg", plugin,
-	                    PURPLE_CALLBACK(message_displayed_cb), NULL);
+	                    G_CALLBACK(message_displayed_cb), NULL);
 	purple_signal_connect(gtk_conv_handle, "displayed-chat-msg", plugin,
-	                    PURPLE_CALLBACK(message_displayed_cb), NULL);
+	                    G_CALLBACK(message_displayed_cb), NULL);
 	purple_signal_connect(gtk_conv_handle, "conversation-switched", plugin,
-	                    PURPLE_CALLBACK(conv_switched), NULL);
+	                    G_CALLBACK(conv_switched), NULL);
 	purple_signal_connect(conv_handle, "sent-im-msg", plugin,
-	                    PURPLE_CALLBACK(im_sent_im), NULL);
+	                    G_CALLBACK(im_sent_im), NULL);
 	purple_signal_connect(conv_handle, "sent-chat-msg", plugin,
-	                    PURPLE_CALLBACK(chat_sent_im), NULL);
+	                    G_CALLBACK(chat_sent_im), NULL);
 	purple_signal_connect(conv_handle, "conversation-created", plugin,
-	                    PURPLE_CALLBACK(conv_created), NULL);
+	                    G_CALLBACK(conv_created), NULL);
 	purple_signal_connect(conv_handle, "deleting-conversation", plugin,
-	                    PURPLE_CALLBACK(deleting_conv), NULL);
+	                    G_CALLBACK(deleting_conv), NULL);
 
 	while (convs) {
 		PurpleConversation *conv = (PurpleConversation *)convs->data;
diff --git a/pidgin/plugins/spellchk.c b/pidgin/plugins/spellchk.c
--- a/pidgin/plugins/spellchk.c
+++ b/pidgin/plugins/spellchk.c
@@ -2311,7 +2311,7 @@ spell_check_load(GPluginPlugin *plugin, 
 	}
 
 	purple_signal_connect(conv_handle, "conversation-created",
-			    plugin, PURPLE_CALLBACK(spellchk_new_attach), NULL);
+			    plugin, G_CALLBACK(spellchk_new_attach), NULL);
 
 	return TRUE;
 }
diff --git a/pidgin/plugins/transparency.c b/pidgin/plugins/transparency.c
--- a/pidgin/plugins/transparency.c
+++ b/pidgin/plugins/transparency.c
@@ -606,14 +606,14 @@ transparency_load(GPluginPlugin *plugin,
 
 	conv_handle = purple_conversations_get_handle();
 	purple_signal_connect(conv_handle, "conversation-created", plugin,
-	                      PURPLE_CALLBACK(new_conversation_cb), NULL);
+	                      G_CALLBACK(new_conversation_cb), NULL);
 
 	/* Set callback to remove window from the list, if the window is destroyed */
 	purple_signal_connect(conv_handle, "deleting-conversation", plugin,
-	                      PURPLE_CALLBACK(conversation_delete_cb), NULL);
+	                      G_CALLBACK(conversation_delete_cb), NULL);
 
 	purple_signal_connect(conv_handle, "conversation-updated", plugin,
-	                      PURPLE_CALLBACK(conv_updated_cb), NULL);
+	                      G_CALLBACK(conv_updated_cb), NULL);
 
 	update_existing_convs();
 
@@ -623,7 +623,7 @@ transparency_load(GPluginPlugin *plugin,
 	} else {
 		purple_signal_connect(pidgin_blist_get_handle(),
 			"gtkblist-created", plugin,
-			PURPLE_CALLBACK(blist_created_cb), NULL);
+			G_CALLBACK(blist_created_cb), NULL);
 	}
 
 	return TRUE;
diff --git a/pidgin/plugins/unity.c b/pidgin/plugins/unity.c
--- a/pidgin/plugins/unity.c
+++ b/pidgin/plugins/unity.c
@@ -607,24 +607,24 @@ unity_load(GPluginPlugin *plugin, GError
 	status_changed_cb(saved_status);
 
 	purple_signal_connect(savedstat_handle, "savedstatus-changed", plugin,
-			PURPLE_CALLBACK(status_changed_cb), NULL);
+			G_CALLBACK(status_changed_cb), NULL);
 
 	launcher = unity_launcher_entry_get_for_desktop_id("pidgin.desktop");
 	g_object_ref(launcher);
 	launcher_count = purple_prefs_get_int("/plugins/gtk/unity/launcher_count");
 
 	purple_signal_connect(gtk_conv_handle, "displayed-im-msg", plugin,
-			PURPLE_CALLBACK(message_displayed_cb), NULL);
+			G_CALLBACK(message_displayed_cb), NULL);
 	purple_signal_connect(gtk_conv_handle, "displayed-chat-msg", plugin,
-			PURPLE_CALLBACK(message_displayed_cb), NULL);
+			G_CALLBACK(message_displayed_cb), NULL);
 	purple_signal_connect(conv_handle, "sent-im-msg", plugin,
-			PURPLE_CALLBACK(im_sent_im), NULL);
+			G_CALLBACK(im_sent_im), NULL);
 	purple_signal_connect(conv_handle, "sent-chat-msg", plugin,
-			PURPLE_CALLBACK(chat_sent_im), NULL);
+			G_CALLBACK(chat_sent_im), NULL);
 	purple_signal_connect(conv_handle, "conversation-created", plugin,
-			PURPLE_CALLBACK(conv_created), NULL);
+			G_CALLBACK(conv_created), NULL);
 	purple_signal_connect(conv_handle, "deleting-conversation", plugin,
-			PURPLE_CALLBACK(deleting_conv), NULL);
+			G_CALLBACK(deleting_conv), NULL);
 
 	manager = purple_conversation_manager_get_default();
 	convs = purple_conversation_manager_get_all(manager);
diff --git a/pidgin/plugins/xmppconsole/xmppconsole.c b/pidgin/plugins/xmppconsole/xmppconsole.c
--- a/pidgin/plugins/xmppconsole/xmppconsole.c
+++ b/pidgin/plugins/xmppconsole/xmppconsole.c
@@ -748,10 +748,10 @@ xmpp_console_load(GPluginPlugin *plugin,
 
 		purple_signal_connect(xmpp, "jabber-receiving-xmlnode",
 			xmpp_console_handle,
-			PURPLE_CALLBACK(purple_xmlnode_received_cb), NULL);
+			G_CALLBACK(purple_xmlnode_received_cb), NULL);
 		purple_signal_connect(xmpp, "jabber-sending-text",
 			xmpp_console_handle,
-			PURPLE_CALLBACK(purple_xmlnode_sent_cb), NULL);
+			G_CALLBACK(purple_xmlnode_sent_cb), NULL);
 	}
 
 	if (!any_registered) {
@@ -761,9 +761,9 @@ xmpp_console_load(GPluginPlugin *plugin,
 	}
 
 	purple_signal_connect(purple_connections_get_handle(), "signing-on",
-		plugin, PURPLE_CALLBACK(signing_on_cb), NULL);
+		plugin, G_CALLBACK(signing_on_cb), NULL);
 	purple_signal_connect(purple_connections_get_handle(), "signed-off",
-		plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
+		plugin, G_CALLBACK(signed_off_cb), NULL);
 
 	return TRUE;
 }
