I introduced a bug with the new queuing stuff which can cause
conversation windows not to appear and am looking for ideas on how to
fix it. The problem is that new gtk conversations created under queuing
conditions are hidden until explicitly shown. I noted that this would be
necessary in the patch, but overlooked that this would be impossible
from non-gtk plugins.
This bug can currently be seen with buddy pounces. It could be "fixed"
in gtkpounce.c by presenting the conversations, but wouldn't really
solve the real problem. To reproduce:
1) set "Hide new messages" pref to "Always"
2) add a pounce with action "Open an IM window"
3) trigger the pounce
4) no conversation window appears (it does exist though)
Here are a few ideas for fixing the problem:
1) Introduce a second parameter to gaim_conversation_new() that
specifies why the conversation is being created (in response to an
incoming message, in response to a user request, something else). A huge
downside is changing gaim_conversation_new() everywhere, this could be
mitigated somewhat by using a second function which takes this new
parameter and gaim_conversation_new() could just call the new function
with an acceptable default.
2) Add a timer to newly created hidden conversations that will present
it if it is hidden for some small amount of time without having an
incoming message written to it. This is less intrusive, but would create
an unnecessary delay before conversation windows would appear (only
under queuing conditions).
3) Rip out the new queuing system and replace it with a real message
queue. This wouldn't be a whole lot of work, but would lose the benefits
of writing "queued" messages to the conversations.
I'm not really happy about any of these, so I'm hoping someone else
might have a better suggestion.
/me prepares to avoid projectiles in #gaim :-)
Casey Harkins wrote:
> I introduced a bug with the new queuing stuff which can cause
> conversation windows not to appear and am looking for ideas on how to
> fix it. The problem is that new gtk conversations created under queuing
> conditions are hidden until explicitly shown. I noted that this would be
> necessary in the patch, but overlooked that this would be impossible
> from non-gtk plugins.
4) Keep track account/sender of incoming messages which have no
conversation (via received-im-msg signal), then when the conversation is
created with that account/sender hide it, otherwise show it.
I should've thought of that earlier. Sorry to bother the list. :-)