[empathy] Force an unset presence type to appear as offline in the presence chooser and status icon.



commit 1020f57c4a8ea74b7738b6a8e20d299cdd65115d
Author: Jonny Lamb <jonnylamb gnome org>
Date:   Thu Nov 12 10:58:34 2009 +0000

    Force an unset presence type to appear as offline in the presence chooser and status icon.
    
    An unset presence type *does* make sense, but not in these
    contexts. As an aside, there is no icon for an unset presence, so
    nothing is displayed, which is bad.
    
    Fixes bug #597819

 libempathy-gtk/empathy-presence-chooser.c |    6 ++++++
 src/empathy-status-icon.c                 |    7 +++++++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c
index 678ec83..33e5332 100644
--- a/libempathy-gtk/empathy-presence-chooser.c
+++ b/libempathy-gtk/empathy-presence-chooser.c
@@ -951,6 +951,12 @@ presence_chooser_presence_changed_cb (EmpathyPresenceChooser *chooser)
 	status = empathy_idle_get_status (priv->idle);
 	flash_state = empathy_idle_get_flash_state (priv->idle);
 
+	/* An unset presence here doesn't make any sense. Force it to appear as
+	 * offline. */
+	if (state == TP_CONNECTION_PRESENCE_TYPE_UNSET) {
+		state = TP_CONNECTION_PRESENCE_TYPE_OFFLINE;
+	}
+
 	/* look through the model and attempt to find a matching state */
 	model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser));
 	for (valid = gtk_tree_model_get_iter_first (model, &iter);
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index 21cb2dd..c2faaea 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -239,6 +239,13 @@ status_icon_update_icon (EmpathyStatusIcon *icon)
 		TpConnectionPresenceType state;
 
 		state = empathy_idle_get_state (priv->idle);
+
+		/* An unset presence type here doesn't make sense. Force it
+		 * to be offline. */
+		if (state == TP_CONNECTION_PRESENCE_TYPE_UNSET) {
+			state = TP_CONNECTION_PRESENCE_TYPE_OFFLINE;
+		}
+
 		icon_name = empathy_icon_name_for_presence (state);
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]