Mercurial > pidgin
annotate src/eventloop.c @ 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 | 57fccea36e36 |
children |
rev | line source |
---|---|
8273 | 1 /** |
2 * @file eventloop.c Gaim Event Loop API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Gaim is the legal property of its developers, whose names are too numerous | |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
10 * | |
11 * This program is free software; you can redistribute it and/or modify | |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
25 #include "eventloop.h" | |
26 | |
27 static GaimEventLoopUiOps *eventloop_ui_ops = NULL; | |
28 | |
29 guint | |
30 gaim_timeout_add(guint interval, GSourceFunc function, gpointer data) | |
31 { | |
32 GaimEventLoopUiOps *ops = gaim_eventloop_get_ui_ops(); | |
33 | |
34 return ops->timeout_add(interval, function, data); | |
35 } | |
36 | |
8387
98c9a35541ed
[gaim-migrate @ 9115]
Christian Hammond <chipx86@chipx86.com>
parents:
8287
diff
changeset
|
37 guint |
8287
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
38 gaim_timeout_remove(guint tag) |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
39 { |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
40 GaimEventLoopUiOps *ops = gaim_eventloop_get_ui_ops(); |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
41 |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
42 return ops->timeout_remove(tag); |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
43 } |
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8280
diff
changeset
|
44 |
8280
084ed9f7ac19
[gaim-migrate @ 9004]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
45 guint |
8273 | 46 gaim_input_add(int source, GaimInputCondition condition, GaimInputFunction func, gpointer user_data) |
47 { | |
48 GaimEventLoopUiOps *ops = gaim_eventloop_get_ui_ops(); | |
49 | |
50 return ops->input_add(source, condition, func, user_data); | |
51 } | |
52 | |
8797 | 53 guint |
8280
084ed9f7ac19
[gaim-migrate @ 9004]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
54 gaim_input_remove(guint tag) |
8273 | 55 { |
56 GaimEventLoopUiOps *ops = gaim_eventloop_get_ui_ops(); | |
57 | |
58 return ops->input_remove(tag); | |
59 } | |
60 | |
61 void | |
62 gaim_eventloop_set_ui_ops(GaimEventLoopUiOps *ops) | |
63 { | |
64 eventloop_ui_ops = ops; | |
65 } | |
66 | |
67 GaimEventLoopUiOps * | |
68 gaim_eventloop_get_ui_ops(void) | |
69 { | |
11291 | 70 g_return_val_if_fail(eventloop_ui_ops != NULL, NULL); |
8273 | 71 |
72 return eventloop_ui_ops; | |
73 } |