Mercurial > pidgin
diff src/conversation.h @ 12618:204bd8fac61f
[gaim-migrate @ 14954]
SF Patch #1355796 from Sadrul
This fixes the custom smiley bug where your text gets smilies from the other party in the conversation.
This is a bit of a hack, but it fix things until such time as the smiley tree stuff can be reworked.
" From the kwiki:
If someone uses an MSN smiley, it shows up when I type
the textual representation of it. For example, someone
set a smiley (a rainbow flashy question mark) for ? and
it showed up (on my side, I have no idea about theirs)
for every ? I typed. /luke as I understand this report,
the problem is that the custom smiley should be
restricted to exactly one conversation but is in fact
spanning the account/
* (sadrul) It appears what happens is, the custom
smiley is added to the smiley-tree for that
conversation-imhtml. So whenever any new message is
going to be added to the imhtml, it looks up the
smiley-tree first, and since the "?" (or anything else)
matches the smiley, it converts it to the smiley. At
first glance, it seems the fix would be non-trivial. It
will probably be necessary to distinguish between
custom-smileys (and also messages added to the imhtml)
of the sender and the receiver.
==== end ====
What this patch does is, it temporarily replaces the
smiley-tree for the conversation-imhtml with the
smiley-tree of the conversation-entrybox. I think this
will work because the smiley-trees of both these
imhtml-s are initially the same. When a custom smiley
is received, it is added the smiley-tree of the
conversation-imhtml. So temporarily restoring the
smiley-tree with the original smiley-tree (that in
conv-entrybox) should fix the problem."
committer: Tailor Script <tailor@pidgin.im>
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Thu, 22 Dec 2005 04:07:21 +0000 |
| parents | b1717befbb26 |
| children | 851b0bd7eb52 |
line wrap: on
line diff
--- a/src/conversation.h Thu Dec 22 04:07:00 2005 +0000 +++ b/src/conversation.h Thu Dec 22 04:07:21 2005 +0000 @@ -164,7 +164,7 @@ gboolean (*has_focus)(GaimConversation *conv); /* Custom Smileys */ - gboolean (*custom_smiley_add)(GaimConversation *conv, const char *smile); + gboolean (*custom_smiley_add)(GaimConversation *conv, const char *smile, gboolean remote); void (*custom_smiley_write)(GaimConversation *conv, const char *smile, const guchar *data, gsize size); void (*custom_smiley_close)(GaimConversation *conv, const char *smile); @@ -769,6 +769,7 @@ * @param smile The text associated with the smiley * @param cksum_type The type of checksum. * @param chksum The checksum, as a NUL terminated base64 string. + * @param remote @c TRUE if the custom smiley is set by the remote user (buddy). * @return @c TRUE if an icon is expected, else FALSE. Note that * it is an error to never call gaim_conv_custom_smiley_close if * this function returns @c TRUE, but an error to call it if @@ -776,7 +777,8 @@ */ gboolean gaim_conv_custom_smiley_add(GaimConversation *conv, const char *smile, - const char *cksum_type, const char *chksum); + const char *cksum_type, const char *chksum, + gboolean remote); /**
