diff plugins/tcl/tcl_signals.c @ 13815:724e4c08391a

[gaim-migrate @ 16247] This cleans up a few missed account and conversation cases, and moves GaimConnections to the typed pointer references. committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Sat, 10 Jun 2006 19:16:58 +0000
parents a84523152a24
children ad8ddfa756ad
line wrap: on
line diff
--- a/plugins/tcl/tcl_signals.c	Sat Jun 10 19:03:24 2006 +0000
+++ b/plugins/tcl/tcl_signals.c	Sat Jun 10 19:16:58 2006 +0000
@@ -134,6 +134,22 @@
 		tcl_callbacks = g_list_remove_all(tcl_callbacks, NULL);
 }
 
+static GaimStringref *ref_type(GaimSubType type)
+{
+	switch (type) {
+	case GAIM_SUBTYPE_ACCOUNT:
+		return GaimTclRefAccount;
+	case GAIM_SUBTYPE_CONNECTION:
+		return GaimTclRefConnection;
+	case GAIM_SUBTYPE_CONVERSATION:
+		return GaimTclRefConversation;
+	case GAIM_SUBTYPE_STATUS:
+		return GaimTclRefStatus;
+	default:
+		return NULL;
+	}
+}
+
 static void *tcl_signal_callback(va_list args, struct tcl_signal_handler *handler)
 {
 	GString *name, *val;
@@ -256,12 +272,13 @@
 			case GAIM_SUBTYPE_UNKNOWN:
 				gaim_debug(GAIM_DEBUG_ERROR, "tcl", "subtype unknown\n");
 			case GAIM_SUBTYPE_ACCOUNT:
+			case GAIM_SUBTYPE_CONNECTION:
 			case GAIM_SUBTYPE_CONVERSATION:
+			case GAIM_SUBTYPE_STATUS:
 				if (gaim_value_is_outgoing(handler->argtypes[i]))
 					gaim_debug_error("tcl", "pointer subtypes do not currently support outgoing arguments\n");
-				arg = gaim_tcl_ref_new(GaimTclRefAccount, va_arg(args, void *));
+				arg = gaim_tcl_ref_new(ref_type(gaim_value_get_subtype(handler->argtypes[i])), va_arg(args, void *));
 				break;
-			case GAIM_SUBTYPE_CONNECTION:
 			case GAIM_SUBTYPE_PLUGIN:
 			case GAIM_SUBTYPE_XFER:
 				/* pointers again */