# HG changeset patch # User Sean Egan # Date 1162342659 0 # Node ID 3a23706f9f4bcff597bbb72542b922227ad34617 # Parent a73b2b332ec2d4445a672c575db3da811d4e6311 [gaim-migrate @ 17642] Show icon pref. No way to change it yet (other than your editor) committer: Tailor Script diff -r a73b2b332ec2 -r 3a23706f9f4b gtk/gtkdocklet-x11.c --- a/gtk/gtkdocklet-x11.c Tue Oct 31 23:01:39 2006 +0000 +++ b/gtk/gtkdocklet-x11.c Wed Nov 01 00:57:39 2006 +0000 @@ -208,8 +208,11 @@ { g_return_if_fail(docklet != NULL); + if (embed_timeout) + g_source_remove(embed_timeout); + gaim_gtk_docklet_remove(); - + g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_x11_destroyed_cb), NULL); gtk_widget_destroy(GTK_WIDGET(docklet)); diff -r a73b2b332ec2 -r 3a23706f9f4b gtk/gtkdocklet.c --- a/gtk/gtkdocklet.c Tue Oct 31 23:01:39 2006 +0000 +++ b/gtk/gtkdocklet.c Wed Nov 01 00:57:39 2006 +0000 @@ -120,6 +120,18 @@ /* determine if any ims have unseen messages */ convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT); + if (!strcmp(gaim_prefs_get_string("/gaim/gtk/docklet/show"), "pending")) { + if (convs && ui_ops->create && !visibility_manager) { + ui_ops->create(); + return FALSE; + } else if (!convs && ui_ops->destroy && visibility_manager) { + ui_ops->destroy(); + return FALSE; + } else if (!visibility_manager) { + return FALSE; + } + } + if (convs != NULL) { pending = TRUE; @@ -561,7 +573,8 @@ gaim_gtk_docklet_embedded() { if (!visibility_manager) { - gaim_gtk_blist_visibility_manager_add(); + if (strcmp(gaim_prefs_get_string("/gaim/gtk/docklet/show"),"pending")) + gaim_gtk_blist_visibility_manager_add(); visibility_manager = TRUE; } docklet_update_status(); @@ -574,7 +587,12 @@ { if (visibility_manager) { gaim_gtk_blist_visibility_manager_remove(); + if (docklet_blinking_timer) { + g_source_remove(docklet_blinking_timer); + docklet_blinking_timer = 0; + } visibility_manager = FALSE; + status = DOCKLET_STATUS_OFFLINE; } } @@ -604,8 +622,9 @@ gaim_prefs_add_string("/gaim/gtk/docklet/show", "always"); docklet_ui_init(); - if (ui_ops && ui_ops->create) + if (!strcmp(gaim_prefs_get_string("/gaim/gtk/docklet/show"), "always") && ui_ops && ui_ops->create) ui_ops->create(); + gaim_signal_connect(conn_handle, "signed-on", docklet_handle, GAIM_CALLBACK(docklet_signed_on_cb), NULL); gaim_signal_connect(conn_handle, "signed-off", @@ -631,6 +650,6 @@ void gaim_gtk_docklet_uninit() { - if (ui_ops && ui_ops->destroy) + if (visibility_manager && ui_ops && ui_ops->destroy) ui_ops->destroy(); }