# HG changeset patch # User Mark Doliner # Date 1139761857 0 # Node ID c97c76d9d34792884f8a4284f94b681f7105be61 # Parent 70809b5c5f86f5f5d6bc6bc3d52c3b19858a6770 [gaim-migrate @ 15610] Don't create duplicate primtive statuses without messages when using the docklet, either. And I renamed a function and made it only look for transient statuses. committer: Tailor Script diff -r 70809b5c5f86 -r c97c76d9d347 plugins/docklet/docklet.c --- a/plugins/docklet/docklet.c Sun Feb 12 16:28:17 2006 +0000 +++ b/plugins/docklet/docklet.c Sun Feb 12 16:30:57 2006 +0000 @@ -374,9 +374,12 @@ primitive = GPOINTER_TO_INT(user_data); - /* Create a new transient saved status */ - saved_status = gaim_savedstatus_new(NULL, primitive); - gaim_savedstatus_set_type(saved_status, primitive); + /* Try to lookup an already existing transient saved status */ + saved_status = gaim_savedstatus_find_transient_by_type_and_message(primitive, NULL); + + /* Create a new transient saved status if we weren't able to find one */ + if (saved_status == NULL) + saved_status = gaim_savedstatus_new(NULL, primitive); /* Set the status for each account */ gaim_savedstatus_activate(saved_status); diff -r 70809b5c5f86 -r c97c76d9d347 src/gtkmain.c --- a/src/gtkmain.c Sun Feb 12 16:28:17 2006 +0000 +++ b/src/gtkmain.c Sun Feb 12 16:30:57 2006 +0000 @@ -736,7 +736,7 @@ GaimSavedStatus *saved_status; /* If we've used this type+message before, lookup the transient status */ - saved_status = gaim_savedstatus_find_by_type_and_message( + saved_status = gaim_savedstatus_find_transient_by_type_and_message( GAIM_STATUS_OFFLINE, NULL); /* If this type+message is unique then create a new transient saved status */ diff -r 70809b5c5f86 -r c97c76d9d347 src/gtkstatusbox.c --- a/src/gtkstatusbox.c Sun Feb 12 16:28:17 2006 +0000 +++ b/src/gtkstatusbox.c Sun Feb 12 16:30:57 2006 +0000 @@ -1262,7 +1262,7 @@ if (changed) { /* If we've used this type+message before, lookup the transient status */ - saved_status = gaim_savedstatus_find_by_type_and_message( + saved_status = gaim_savedstatus_find_transient_by_type_and_message( GPOINTER_TO_INT(data), message); /* If this type+message is unique then create a new transient saved status */ diff -r 70809b5c5f86 -r c97c76d9d347 src/savedstatuses.c --- a/src/savedstatuses.c Sun Feb 12 16:28:17 2006 +0000 +++ b/src/savedstatuses.c Sun Feb 12 16:30:57 2006 +0000 @@ -804,8 +804,8 @@ } GaimSavedStatus * -gaim_savedstatus_find_by_type_and_message(GaimStatusPrimitive type, - const char *message) +gaim_savedstatus_find_transient_by_type_and_message(GaimStatusPrimitive type, + const char *message) { GList *iter; GaimSavedStatus *status; @@ -813,7 +813,7 @@ for (iter = saved_statuses; iter != NULL; iter = iter->next) { status = (GaimSavedStatus *)iter->data; - if ((status->type == type) && + if ((status->type == type) && gaim_savedstatus_is_transient(status) && (((status->message == NULL) && (message == NULL)) || ((status->message != NULL) && (message != NULL) && !strcmp(status->message, message)))) { diff -r 70809b5c5f86 -r c97c76d9d347 src/savedstatuses.h --- a/src/savedstatuses.h Sun Feb 12 16:28:17 2006 +0000 +++ b/src/savedstatuses.h Sun Feb 12 16:30:57 2006 +0000 @@ -217,7 +217,7 @@ * * @return The saved status if found, or NULL. */ -GaimSavedStatus *gaim_savedstatus_find_by_type_and_message(GaimStatusPrimitive type, const char *message); +GaimSavedStatus *gaim_savedstatus_find_transient_by_type_and_message(GaimStatusPrimitive type, const char *message); /** * Determines if a given saved status is "transient."