diff -r c3a6408c5f0e -r 3d4554cea133 gtk/gtkdocklet.c --- a/gtk/gtkdocklet.c Thu Nov 02 02:57:25 2006 +0000 +++ b/gtk/gtkdocklet.c Thu Nov 02 21:09:12 2006 +0000 @@ -127,11 +127,12 @@ } else if (!convs && ui_ops->destroy && visibility_manager) { ui_ops->destroy(); return FALSE; - } else if (!visibility_manager) { - return FALSE; } } + if (!visibility_manager) + return FALSE; + if (convs != NULL) { pending = TRUE; @@ -292,6 +293,23 @@ docklet_update_status(); } +static void +docklet_show_pref_changed_cb(const char *name, GaimPrefType type, + gconstpointer value, gpointer data) +{ + const char *val = value; + if (!strcmp(val, "always")) { + if (!visibility_manager && ui_ops->create) + ui_ops->create(); + } else if (!strcmp(val, "never")) { + if (visibility_manager && ui_ops->destroy) + ui_ops->destroy(); + } else { + docklet_update_status(); + } + +} + /************************************************************************** * docklet pop-up menu **************************************************************************/ @@ -620,6 +638,8 @@ gaim_prefs_add_none("/gaim/gtk/docklet"); gaim_prefs_add_bool("/gaim/gtk/docklet/blink", FALSE); gaim_prefs_add_string("/gaim/gtk/docklet/show", "always"); + gaim_prefs_connect_callback(docklet_handle, "/gaim/gtk/docklet/show", + docklet_show_pref_changed_cb, NULL); docklet_ui_init(); if (!strcmp(gaim_prefs_get_string("/gaim/gtk/docklet/show"), "always") && ui_ops && ui_ops->create)