Mercurial > pidgin
view plugins/autorecon.c @ 5145:fc09679bffbe
[gaim-migrate @ 5509]
(21:17:26) KingAnt: The thing Luke committed a few hours ago. I think it makes it so
Buddies->Get User Info gets the info of whoever is highlighted in the buddy list instead of
always opening the "enter screenname" box
(21:18:25) LSchiere: KingAnt: correct, as the commit message states, that's exactly what it
does
(21:18:29) Robot101: KingAnt: the menus don't act on buddies in the list
(21:18:34) Robot101: the buttons do, but the menus don't
(21:18:40) Robot101: so now it's inconsistent.
(21:18:47) KingAnt: That's what I was thinking
(21:18:51) Robot101: revert.
(21:18:53) LSchiere: kay
(21:19:09) KingAnt: Well, I was thinking more... if I want to get info of someone who's not
on my buddy list, I shouldn't have to unclick on people in the buddy list
(21:19:25) Robot101: that too!
(21:19:37) LSchiere: i always forget the menu, so that didn't occur to me: i'm used to
unclicking
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Thu, 17 Apr 2003 01:20:22 +0000 |
parents | 3b8e6c2b4a50 |
children | fefad67de2c7 |
line wrap: on
line source
#include "config.h" #ifndef GAIM_PLUGINS #define GAIM_PLUGINS #endif #include "gaim.h" #include "prpl.h" #ifdef _WIN32 #include "win32dep.h" #endif G_MODULE_IMPORT GSList *gaim_accounts; #define INITIAL 8000 #define MAXTIME 2048000 static GHashTable *hash = NULL; static guint tim = 0; static gboolean do_signon(gpointer data) { struct gaim_account *account = data; debug_printf("do_signon called\n"); if (g_slist_index(gaim_accounts, account) < 0) return FALSE; debug_printf("calling serv_login\n"); serv_login(account); debug_printf("done calling serv_login\n"); tim = 0; return FALSE; } static void reconnect(struct gaim_connection *gc, void *m) { if (!gc->wants_to_die) { int del; del = (int)g_hash_table_lookup(hash, gc->account); if (!del) del = INITIAL; else del = MIN(2 * del, MAXTIME); tim = g_timeout_add(del, do_signon, gc->account); g_hash_table_insert(hash, gc->account, (gpointer)del); } else { g_hash_table_remove(hash, gc->account); } } /* * EXPORTED FUNCTIONS */ struct gaim_plugin_description desc; G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { desc.api_version = PLUGIN_API_VERSION; desc.name = g_strdup(_("Autoreconnect")); desc.version = g_strdup(VERSION); desc.description = g_strdup(_("When you are kicked offline, this reconnects you.")); desc.authors = g_strdup("Eric Warmenhoven <eric@warmenhoven.org>"); desc.url = g_strdup(WEBSITE); return &desc; } G_MODULE_EXPORT char *name() { return _("Auto Reconnect"); } G_MODULE_EXPORT char *description() { return _("When you are kicked offline, this reconnects you."); } G_MODULE_EXPORT char *gaim_plugin_init(GModule *handle) { hash = g_hash_table_new(g_int_hash, g_int_equal); gaim_signal_connect(handle, event_signoff, reconnect, NULL); return NULL; } G_MODULE_EXPORT void gaim_plugin_remove() { if (tim) g_source_remove(tim); g_hash_table_destroy(hash); hash = NULL; tim = 0; }