From: <dat...@us...> - 2006-05-12 02:50:28
|
Revision: 16179 Author: datallah Date: 2006-05-11 19:50:23 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16179&view=rev Log Message: ----------- Fix Registry key leakage. Modified Paths: -------------- trunk/plugins/win32/winprefs/winprefs.c Modified: trunk/plugins/win32/winprefs/winprefs.c =================================================================== --- trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:34:07 UTC (rev 16178) +++ trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:50:23 UTC (rev 16179) @@ -382,7 +382,7 @@ GtkWidget *vbox; GtkWidget *button; char* gtk_version = NULL; - HKEY hKey = HKEY_CURRENT_USER; + HKEY hKey; ret = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(ret), 12); @@ -409,6 +409,7 @@ if(ERROR_SUCCESS == RegQueryValueEx(hKey, "Gaim", 0, NULL, NULL, NULL)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); } + RegCloseKey(hKey); } g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_autostart), NULL); gtk_widget_show(button); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-12 03:45:51
|
Revision: 16180 Author: datallah Date: 2006-05-11 20:45:47 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16180&view=rev Log Message: ----------- Fix a docking bug. When gaim exits while the Buddy List is docked, but minimized to the docklet, the next time gaim is started, the sectionof the screen that would be used by the docked Buddy List will be empty - not any more. Modified Paths: -------------- trunk/plugins/win32/winprefs/winprefs.c Modified: trunk/plugins/win32/winprefs/winprefs.c =================================================================== --- trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:50:23 UTC (rev 16179) +++ trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 03:45:47 UTC (rev 16180) @@ -59,6 +59,7 @@ static GaimPlugin *handle = NULL; static GtkAppBar *blist_ab = NULL; static GtkWidget *blist = NULL; +static guint blist_visible_cb_id = 0; /* flash info */ @@ -109,11 +110,11 @@ static void blist_dock_cb(gboolean val) { if(val) { - gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Docking..\n"); + gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Docking...\n"); if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) != BLIST_TOP_NEVER) blist_set_ontop(TRUE); } else { - gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking..\n"); + gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking...\n"); if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS) blist_set_ontop(TRUE); else @@ -150,6 +151,34 @@ blist_set_dockable(FALSE); } +/* Listen for the first time the window stops being withdrawn */ +static void blist_visible_cb(const char *pref, GaimPrefType type, + gconstpointer value, gpointer user_data) { + if(gaim_prefs_get_bool(pref)) { + gtk_appbar_dock(blist_ab, + gaim_prefs_get_int(PREF_DBLIST_SIDE)); + + if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) + == BLIST_TOP_DOCKED) + blist_set_ontop(TRUE); + + /* We only need to be notified about this once */ + gaim_prefs_disconnect_callback(blist_visible_cb_id); + } +} + +/* This needs to be delayed otherwise, when the blist is originally created and + * hidden, it'll trigger the blist_visible_cb */ +static gboolean listen_for_blist_visible_cb(gpointer data) { + if (handle != NULL) + blist_visible_cb_id = + gaim_prefs_connect_callback(handle, + "/gaim/gtk/blist/list_visible", + blist_visible_cb, NULL); + + return FALSE; +} + static void blist_create_cb(GaimBuddyList *gaim_blist, void *data) { gaim_debug_info(WINPREFS_PLUGIN_ID, "buddy list created\n"); @@ -159,10 +188,16 @@ blist_set_dockable(TRUE); if(gaim_prefs_get_bool(PREF_DBLIST_DOCKED)) { blist_ab->undocked_height = gaim_prefs_get_int(PREF_DBLIST_HEIGHT); - gtk_appbar_dock(blist_ab, - gaim_prefs_get_int(PREF_DBLIST_SIDE)); - if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_DOCKED) - blist_set_ontop(TRUE); + if(!(gdk_window_get_state(blist->window) + & GDK_WINDOW_STATE_WITHDRAWN)) { + gtk_appbar_dock(blist_ab, + gaim_prefs_get_int(PREF_DBLIST_SIDE)); + if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) + == BLIST_TOP_DOCKED) + blist_set_ontop(TRUE); + } else { + g_idle_add(listen_for_blist_visible_cb, NULL); + } } } @@ -374,6 +409,8 @@ blist_set_dockable(FALSE); blist_set_ontop(FALSE); + handle = NULL; + return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-08-18 22:59:17
|
Revision: 16852 Author: datallah Date: 2006-08-18 15:59:12 -0700 (Fri, 18 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16852&view=rev Log Message: ----------- Our very own Nathan Walp wrote this patch to allow people to make their chat windows do the flashy-flashy thing. Modified Paths: -------------- trunk/plugins/win32/winprefs/winprefs.c Modified: trunk/plugins/win32/winprefs/winprefs.c =================================================================== --- trunk/plugins/win32/winprefs/winprefs.c 2006-08-18 22:51:18 UTC (rev 16851) +++ trunk/plugins/win32/winprefs/winprefs.c 2006-08-18 22:59:12 UTC (rev 16852) @@ -52,6 +52,7 @@ static const char *PREF_DBLIST_SIDE = "/plugins/gtk/win32/winprefs/dblist_side"; static const char *PREF_BLIST_ON_TOP = "/plugins/gtk/win32/winprefs/blist_on_top"; static const char *PREF_IM_BLINK = "/plugins/gtk/win32/winprefs/im_blink"; +static const char *PREF_CHAT_BLINK = "/plugins/gtk/win32/winprefs/chat_blink"; /* Deprecated */ static const char *PREF_DBLIST_ON_TOP = "/plugins/gtk/win32/winprefs/dblist_on_top"; @@ -317,8 +318,7 @@ /* FlashWindowEx is only supported by Win98+ and WinNT5+. If it's not supported we do it our own way */ static gboolean -wgaim_conv_im_blink(GaimAccount *account, const char *who, char **message, - GaimConversation *conv, int flags, void *data) +wgaim_conv_blink(GaimConversation *conv, int flags) { GaimGtkWindow *win; GtkWidget *window; @@ -327,9 +327,6 @@ if(flags & GAIM_MESSAGE_SEND || flags & GAIM_MESSAGE_SYSTEM) return FALSE; - if(!gaim_prefs_get_bool(PREF_IM_BLINK)) - return FALSE; - if(conv == NULL) { gaim_debug_info("winprefs", "gar!\n"); return FALSE; @@ -368,7 +365,28 @@ return FALSE; } +static gboolean +wgaim_conv_im_blink(GaimAccount *account, const char *who, char **message, + GaimConversation *conv, int flags, void *data) +{ + if(!gaim_prefs_get_bool(PREF_IM_BLINK)) + return FALSE; + return wgaim_conv_blink(conv, flags); + +} + +static gboolean +wgaim_conv_chat_blink(GaimAccount *account, const char *who, char **message, + GaimConversation *conv, int flags, void *data) +{ + if(!gaim_prefs_get_bool(PREF_CHAT_BLINK)) + return FALSE; + + return wgaim_conv_blink(conv, flags); +} + + /* * EXPORTED FUNCTIONS */ @@ -394,6 +412,10 @@ "displaying-im-msg", plugin, GAIM_CALLBACK(wgaim_conv_im_blink), NULL); + gaim_signal_connect(gaim_gtk_conversations_get_handle(), + "displaying-chat-msg", plugin, GAIM_CALLBACK(wgaim_conv_chat_blink), + NULL); + gaim_signal_connect((void*)gaim_get_core(), "quitting", plugin, GAIM_CALLBACK(gaim_quit_cb), NULL); @@ -467,8 +489,10 @@ /* Conversations */ vbox = gaim_gtk_make_frame(ret, _("Conversations")); - gaim_gtk_prefs_checkbox(_("_Flash window when messages are received"), + gaim_gtk_prefs_checkbox(_("_Flash window when IMs are received"), PREF_IM_BLINK, vbox); + gaim_gtk_prefs_checkbox(_("_Flash window when chat messages are received"), + PREF_CHAT_BLINK, vbox); gtk_widget_show_all(ret); return ret; @@ -517,6 +541,7 @@ gaim_prefs_add_int(PREF_DBLIST_HEIGHT, 0); gaim_prefs_add_int(PREF_DBLIST_SIDE, 0); gaim_prefs_add_bool(PREF_IM_BLINK, TRUE); + gaim_prefs_add_bool(PREF_CHAT_BLINK, FALSE); /* Convert old preferences */ if(gaim_prefs_exists(PREF_DBLIST_ON_TOP)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |