--- a/libpurple/savedstatuses.c Tue Apr 28 13:33:02 2009 +0000 +++ b/libpurple/savedstatuses.c Tue Apr 28 15:47:36 2009 +0000 @@ -870,15 +870,15 @@ /* Don't need to do anything */ return; - /* Changing our status makes us un-idle */ - if (!idleaway) - purple_idle_touch(); - old = purple_savedstatus_get_current(); saved_status = idleaway ? purple_savedstatus_get_idleaway() : purple_savedstatus_get_default(); purple_prefs_set_bool("/purple/savedstatus/isidleaway", idleaway); + /* Changing our status makes us un-idle */ + if (!idleaway) + purple_idle_touch(); + if (idleaway && (purple_savedstatus_get_type(old) != PURPLE_STATUS_AVAILABLE)) /* Our global status is already "away," so don't change anything */ return;