# HG changeset patch # User Stu Tomlinson # Date 1097939242 0 # Node ID 60db14d54914abd9e168a60058137c5464badab4 # Parent a9521c791afeea73d4d4f2f7415a11e822cae8de [gaim-migrate @ 11131] "This patch that makes received-im-msg and received-chat-msg signals correspond with each other. My motivation was to add flags to received-chat-msg, but I also added conv to received-im-msg to make the signals match each other." -- Nathan Fredrickson (noif) I also updated the receiving-im-msg and receiving-chat-msg signals to match. Now I can finally reject patch 909745 with "this should be a plugin", which I've wanted to be able to say for a while. Yay :) committer: Tailor Script diff -r a9521c791afe -r 60db14d54914 doc/conversation-signals.dox --- a/doc/conversation-signals.dox Sat Oct 16 01:05:40 2004 +0000 +++ b/doc/conversation-signals.dox Sat Oct 16 15:07:22 2004 +0000 @@ -124,7 +124,7 @@ @signaldef receiving-im-msg @signalproto gboolean (*receiving_im_msg)(GaimAccount *account, char **sender, - char **message, int *flags); + char **message, GaimConversation *conv, int *flags); @endsignalproto @signaldesc Emitted when an IM is received. The callback can replace the name of the @@ -137,20 +137,22 @@ @param account The account the message was received on. @param sender A pointer to the username of the sender. @param message A pointer to the message that was sent. - @param flags The message flags. + @param conv The IM conversation. + @param flags A pointer to the IM message flags. @endsignaldef @signaldef received-im-msg @signalproto -void (*received_im_msg)(GaimAccount *account, char *sender, - char *message, int flags); +void (*received_im_msg)(GaimAccount *account, char *sender, char *message, + GaimConversation *conv, int flags); @endsignalproto @signaldesc Emitted after an IM is received. @param account The account the message was received on. @param sender The username of the sender. @param message The message that was sent. - @param flags The message flags. + @param conv The IM conversation. + @param flags The IM message flags. @endsignaldef @signaldef writing-chat-msg @@ -241,11 +243,11 @@ @signaldef receiving-chat-msg @signalproto gboolean (*receiving_chat_msg)(GaimAccount *account, char **sender, - char **message, GaimConversation *conv); + char **message, GaimConversation *conv, int *flags); @endsignalproto @signaldesc Emitted when a chat message is received. The callback can replace the - name of the sender or the messageby modifying the pointer to the + name of the sender, the message, or the flags by modifying the pointer to the strings. This can also be used to cancel displaying a message by returning @c TRUE. @note @@ -255,12 +257,13 @@ @param sender A pointer to the username of the sender. @param message A pointer to the message that was sent. @param conv The chat conversation. + @param flags A pointer to the chat message flags @endsignaldef @signaldef received-chat-msg @signalproto -void (*received_chat_msg)(GaimAccount *account, char *sender, - char *message, GaimConversation *conv); +void (*received_chat_msg)(GaimAccount *account, char *sender, char *message, + GaimConversation *conv, int flags); @endsignalproto @signaldesc Emitted after a chat message is received. @@ -268,6 +271,7 @@ @param sender The username of the sender. @param message The message that was sent. @param conv The chat conversation. + @param flags The chat message flags. @endsignaldef @signaldef conversation-switching diff -r a9521c791afe -r 60db14d54914 plugins/ChangeLog.API --- a/plugins/ChangeLog.API Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/ChangeLog.API Sat Oct 16 15:07:22 2004 +0000 @@ -9,6 +9,12 @@ * Changed: gtk_imhtml_toolbar now descends from GtkHBox making it easier to add your own widgets to it + Signals: + * Changed: "received-im-msg and "received-chat-msg" to match, both + now pass a conversation pointer and flags + * Changed: "receiving-im-msg" and "receving-chat-msg" to match, both + now pass a conversation pointer and a pointer to the flags. + version 1.0.0 (09/17/2004): * Added: get_chat_name to the GaimPluginProtocolInfo struct * Changed: gaim_blist_update_buddy_presence(), presence changed to diff -r a9521c791afe -r 60db14d54914 plugins/docklet/docklet.c --- a/plugins/docklet/docklet.c Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/docklet/docklet.c Sat Oct 16 15:07:22 2004 +0000 @@ -426,8 +426,8 @@ } static gboolean -gaim_conv_im_recv(GaimAccount *account, char *sender, - char *message, int flags, void *data) +gaim_conv_im_recv(GaimAccount *account, char *sender, char *message, + GaimConversation *conv, int flags, void *data) { /* if message queuing while away is enabled, this event could be the first message so we need to see if the status (and hence icon) needs changing. diff -r a9521c791afe -r 60db14d54914 plugins/gaiminc.c --- a/plugins/gaiminc.c Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/gaiminc.c Sat Oct 16 15:07:22 2004 +0000 @@ -20,7 +20,8 @@ } static gboolean -reverse(GaimAccount *account, char **who, char **message, int *flags) +reverse(GaimAccount *account, char **who, char **message, + GaimConversation *conv, int *flags) { /* this will drive you insane. whenever you receive a message, * the text of the message (HTML and all) will be reversed. */ diff -r a9521c791afe -r 60db14d54914 plugins/notify.c --- a/plugins/notify.c Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/notify.c Sat Oct 16 15:07:22 2004 +0000 @@ -213,10 +213,8 @@ static gboolean im_recv_im(GaimAccount *account, char *sender, char *message, - int *flags) + GaimConversation *conv, int *flags) { - GaimConversation *conv = gaim_find_conversation_with_account(sender, account); - notify(conv, TRUE); return FALSE; @@ -224,7 +222,7 @@ static gboolean chat_recv_im(GaimAccount *account, char *sender, char *message, - GaimConversation *conv) + GaimConversation *conv, int *flags) { notify(conv, TRUE); diff -r a9521c791afe -r 60db14d54914 plugins/signals-test.c --- a/plugins/signals-test.c Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/signals-test.c Sat Oct 16 15:07:22 2004 +0000 @@ -216,22 +216,22 @@ static gboolean receiving_im_msg_cb(GaimAccount *account, char **sender, char **buffer, - int *flags, void *data) + GaimConversation *conv, int *flags, void *data) { - gaim_debug_misc("signals test", "receiving-im-msg (%s, %s, %s, %d)\n", + gaim_debug_misc("signals test", "receiving-im-msg (%s, %s, %s, %s, %d)\n", gaim_account_get_username(account), *sender, *buffer, - *flags); + gaim_conversation_get_name(conv), *flags); return FALSE; } static void received_im_msg_cb(GaimAccount *account, char *sender, char *buffer, - int flags, void *data) + GaimConversation *conv, int flags, void *data) { - gaim_debug_misc("signals test", "received-im-msg (%s, %s, %s, %d)\n", + gaim_debug_misc("signals test", "received-im-msg (%s, %s, %s, %s, %d)\n", gaim_account_get_username(account), sender, buffer, - flags); + gaim_conversation_get_name(conv), flags); } static gboolean @@ -286,24 +286,24 @@ static gboolean receiving_chat_msg_cb(GaimAccount *account, char **sender, char **buffer, - GaimConversation *chat, void *data) + GaimConversation *chat, int *flags, void *data) { gaim_debug_misc("signals test", - "receiving-chat-msg (%s, %s, %s, %s)\n", + "receiving-chat-msg (%s, %s, %s, %s, %d)\n", gaim_account_get_username(account), *sender, *buffer, - gaim_conversation_get_name(chat)); + gaim_conversation_get_name(chat), *flags); return FALSE; } static void received_chat_msg_cb(GaimAccount *account, char *sender, char *buffer, - GaimConversation *chat, void *data) + GaimConversation *chat, int flags, void *data) { gaim_debug_misc("signals test", - "received-chat-msg (%s, %s, %s, %s)\n", + "received-chat-msg (%s, %s, %s, %s, %d)\n", gaim_account_get_username(account), sender, buffer, - gaim_conversation_get_name(chat)); + gaim_conversation_get_name(chat), flags); } static void diff -r a9521c791afe -r 60db14d54914 plugins/tcl/signal-test.tcl --- a/plugins/tcl/signal-test.tcl Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/tcl/signal-test.tcl Sat Oct 16 15:07:22 2004 +0000 @@ -46,22 +46,22 @@ gaim::debug -info "tcl signal" "quitting" } -gaim::signal connect [gaim::conversation handle] receiving-chat-msg { account who what id } { - gaim::debug -info "tcl signal" "receiving-chat-msg [gaim::account username $account] $id $who \"$what\"" +gaim::signal connect [gaim::conversation handle] receiving-chat-msg { account who what id flags } { + gaim::debug -info "tcl signal" "receiving-chat-msg [gaim::account username $account] $id $flags $who \"$what\"" return 0 } -gaim::signal connect [gaim::conversation handle] receiving-im-msg { account who what flags } { - gaim::debug -info "tcl signal" "receiving-im-msg [gaim::account username $account] $flags $who \"$what\"" +gaim::signal connect [gaim::conversation handle] receiving-im-msg { account who what id flags } { + gaim::debug -info "tcl signal" "receiving-im-msg [gaim::account username $account] $id $flags $who \"$what\"" return 0 } -gaim::signal connect [gaim::conversation handle] received-chat-msg { account who what id } { - gaim::debug -info "tcl signal" "received-chat-msg [gaim::account username $account] $id $who \"$what\"" +gaim::signal connect [gaim::conversation handle] received-chat-msg { account who what id flags } { + gaim::debug -info "tcl signal" "received-chat-msg [gaim::account username $account] $id $flags $who \"$what\"" } -gaim::signal connect [gaim::conversation handle] received-im-msg { account who what flags } { - gaim::debug -info "tcl signal" "received-im-msg [gaim::account username $account] $flags $who \"$what\"" +gaim::signal connect [gaim::conversation handle] received-im-msg { account who what id flags } { + gaim::debug -info "tcl signal" "received-im-msg [gaim::account username $account] $id $flags $who \"$what\"" } gaim::signal connect [gaim::conversation handle] sending-chat-msg { account what id } { diff -r a9521c791afe -r 60db14d54914 plugins/timestamp.c --- a/plugins/timestamp.c Sat Oct 16 01:05:40 2004 +0000 +++ b/plugins/timestamp.c Sat Oct 16 15:07:22 2004 +0000 @@ -93,14 +93,11 @@ static gboolean timestamp_receiving_msg(GaimAccount *account, char **sender, char **buffer, - int *flags, void *data) + GaimConversation *conv, int *flags, void *data) { - GaimConversation* conv; - - conv = gaim_find_conversation_with_account(*sender, account); - if (conv != NULL) - return timestamp_displaying_conv_msg(account, conv, buffer, data); - return FALSE; + g_return_val_if_fail(conv != NULL, FALSE); + + return timestamp_displaying_conv_msg(account, conv, buffer, data); } diff -r a9521c791afe -r 60db14d54914 src/conversation.c --- a/src/conversation.c Sat Oct 16 01:05:40 2004 +0000 +++ b/src/conversation.c Sat Oct 16 15:07:22 2004 +0000 @@ -2793,21 +2793,25 @@ gaim_value_new(GAIM_TYPE_STRING)); gaim_signal_register(handle, "receiving-im-msg", - gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, - gaim_value_new(GAIM_TYPE_BOOLEAN), 4, + gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, + gaim_value_new(GAIM_TYPE_BOOLEAN), 5, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new_outgoing(GAIM_TYPE_STRING), gaim_value_new_outgoing(GAIM_TYPE_STRING), + gaim_value_new(GAIM_TYPE_SUBTYPE, + GAIM_SUBTYPE_CONVERSATION), gaim_value_new_outgoing(GAIM_TYPE_UINT)); gaim_signal_register(handle, "received-im-msg", - gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT, - NULL, 4, + gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT, + NULL, 5, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new(GAIM_TYPE_STRING), gaim_value_new(GAIM_TYPE_STRING), + gaim_value_new(GAIM_TYPE_SUBTYPE, + GAIM_SUBTYPE_CONVERSATION), gaim_value_new(GAIM_TYPE_UINT)); gaim_signal_register(handle, "writing-chat-msg", @@ -2861,24 +2865,26 @@ gaim_value_new(GAIM_TYPE_UINT)); gaim_signal_register(handle, "receiving-chat-msg", - gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, - gaim_value_new(GAIM_TYPE_BOOLEAN), 4, + gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, + gaim_value_new(GAIM_TYPE_BOOLEAN), 5, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new_outgoing(GAIM_TYPE_STRING), gaim_value_new_outgoing(GAIM_TYPE_STRING), gaim_value_new(GAIM_TYPE_SUBTYPE, - GAIM_SUBTYPE_CONVERSATION)); + GAIM_SUBTYPE_CONVERSATION), + gaim_value_new_outgoing(GAIM_TYPE_UINT)); gaim_signal_register(handle, "received-chat-msg", - gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER, - NULL, 4, + gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT, + NULL, 5, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new(GAIM_TYPE_STRING), gaim_value_new(GAIM_TYPE_STRING), gaim_value_new(GAIM_TYPE_SUBTYPE, - GAIM_SUBTYPE_CONVERSATION)); + GAIM_SUBTYPE_CONVERSATION), + gaim_value_new(GAIM_TYPE_UINT)); gaim_signal_register(handle, "conversation-switching", gaim_marshal_VOID__POINTER_POINTER, NULL, 2, diff -r a9521c791afe -r 60db14d54914 src/prpl.h --- a/src/prpl.h Sat Oct 16 01:05:40 2004 +0000 +++ b/src/prpl.h Sat Oct 16 15:07:22 2004 +0000 @@ -47,8 +47,8 @@ typedef enum { GAIM_CONV_CHAT_WHISPER = 0x0001, /**< Whispered message.*/ - GAIM_CONV_CHAT_DELAYED = 0x0002 /**< Delayed message. */ - + GAIM_CONV_CHAT_DELAYED = 0x0002, /**< Delayed message. */ + GAIM_CONV_CHAT_ALERT = 0x0004 /**< Alert message. */ } GaimConvChatFlags; typedef enum { diff -r a9521c791afe -r 60db14d54914 src/server.c --- a/src/server.c Sat Oct 16 01:05:40 2004 +0000 +++ b/src/server.c Sat Oct 16 15:07:22 2004 +0000 @@ -807,7 +807,7 @@ plugin_return = GPOINTER_TO_INT( gaim_signal_emit_return_1(gaim_conversations_get_handle(), "receiving-im-msg", gc->account, - &angel, &buffy, &imflags)); + &angel, &buffy, cnv, &imflags)); if (!buffy || !angel || plugin_return) { if (buffy) @@ -821,7 +821,7 @@ message = buffy; gaim_signal_emit(gaim_conversations_get_handle(), "received-im-msg", gc->account, - name, message, imflags); + name, message, cnv, imflags); /* Make sure URLs are clickable */ buffy = gaim_markup_linkify(message); @@ -1277,7 +1277,7 @@ plugin_return = GPOINTER_TO_INT( gaim_signal_emit_return_1(gaim_conversations_get_handle(), "receiving-chat-msg", g->account, - &angel, &buffy, conv)); + &angel, &buffy, conv, &chatflags)); if (!buffy || !angel || plugin_return) { if (buffy) @@ -1290,7 +1290,7 @@ message = buffy; gaim_signal_emit(gaim_conversations_get_handle(), "received-chat-msg", g->account, - who, message, conv); + who, message, conv, chatflags); /* Make sure URLs are clickable */ buf = gaim_markup_linkify(message); @@ -1299,6 +1299,8 @@ msgflags |= GAIM_MESSAGE_WHISPER; if (chatflags & GAIM_CONV_CHAT_DELAYED) msgflags |= GAIM_MESSAGE_DELAYED; + if (chatflags & GAIM_CONV_CHAT_ALERT) + msgflags |= GAIM_MESSAGE_NICK; gaim_conv_chat_write(chat, who, buf, msgflags, mtime); diff -r a9521c791afe -r 60db14d54914 src/signals.c --- a/src/signals.c Sat Oct 16 01:05:40 2004 +0000 +++ b/src/signals.c Sat Oct 16 15:07:22 2004 +0000 @@ -686,6 +686,21 @@ } void +gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(GaimCallback cb, + va_list args, + void *data, + void **return_val) +{ + void *arg1 = va_arg(args, void *); + void *arg2 = va_arg(args, void *); + void *arg3 = va_arg(args, void *); + void *arg4 = va_arg(args, void *); + guint arg5 = va_arg(args, guint); + + ((void (*)(void *, void *, void *, void *, guint, void *))cb)(arg1, arg2, arg3, arg4, arg5, data); +} + +void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb, va_list args, void *data, diff -r a9521c791afe -r 60db14d54914 src/signals.h --- a/src/signals.h Sat Oct 16 01:05:40 2004 +0000 +++ b/src/signals.h Sat Oct 16 15:07:22 2004 +0000 @@ -237,6 +237,8 @@ GaimCallback cb, va_list args, void *data, void **return_val); void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT( GaimCallback cb, va_list args, void *data, void **return_val); +void gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT( + GaimCallback cb, va_list args, void *data, void **return_val); void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT( GaimCallback cb, va_list args, void *data, void **return_val);