diff options
-rw-r--r-- | src/empathy-debug-window.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/src/empathy-debug-window.c b/src/empathy-debug-window.c index 75cb6df19..c0ef73a43 100644 --- a/src/empathy-debug-window.c +++ b/src/empathy-debug-window.c @@ -111,12 +111,17 @@ typedef struct /* Service (CM, Client) chooser store */ GtkListStore *service_store; + /* Counters on services detected and added */ + guint services_detected; + guint name_owner_cb_count; + /* Debug to show upon creation */ gchar *select_name; /* Misc. */ gboolean dispose_run; TpAccountManager *am; + GtkListStore *all_active_buffer; } EmpathyDebugWindowPriv; static const gchar * @@ -792,6 +797,9 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy, FillServiceChooserData *data = (FillServiceChooserData *) user_data; EmpathyDebugWindow *self = EMPATHY_DEBUG_WINDOW (data->debug_window); EmpathyDebugWindowPriv *priv = GET_PRIV (data->debug_window); + GtkTreeIter iter; + + priv->name_owner_cb_count++; if (error != NULL) { @@ -801,7 +809,6 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy, if (!debug_window_service_is_in_model (data->debug_window, out, NULL, FALSE)) { - GtkTreeIter iter; char *name; GtkListStore *active_buffer, *pause_buffer; @@ -840,6 +847,20 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy, g_free (name); } + if (priv->services_detected == priv->name_owner_cb_count) + { + /* Time to add "All" selection to service_store */ + gtk_list_store_prepend (priv->service_store, &iter); + gtk_list_store_set (priv->service_store, &iter, + COL_NAME, "All", + COL_ACTIVE_BUFFER, NULL, + -1); + + priv->all_active_buffer = new_list_store_for_service (); + + gtk_combo_box_set_active (GTK_COMBO_BOX (priv->chooser), 0); + } + OUT: fill_service_chooser_data_free (data); } @@ -854,6 +875,7 @@ debug_window_list_connection_names_cb (const gchar * const *names, GObject *weak_object) { EmpathyDebugWindow *debug_window = (EmpathyDebugWindow *) user_data; + EmpathyDebugWindowPriv *priv = GET_PRIV (debug_window); guint i; TpDBusDaemon *dbus; GError *error2 = NULL; @@ -881,6 +903,8 @@ debug_window_list_connection_names_cb (const gchar * const *names, tp_cli_dbus_daemon_call_get_name_owner (dbus, -1, names[i], debug_window_get_name_owner_cb, data, NULL, NULL); + + priv->services_detected ++; } g_object_unref (dbus); @@ -1018,6 +1042,8 @@ add_client (EmpathyDebugWindow *self, tp_cli_dbus_daemon_call_get_name_owner (priv->dbus, -1, name, debug_window_get_name_owner_cb, data, NULL, NULL); + + priv->services_detected ++; } static void @@ -1062,6 +1088,10 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *debug_window) return; } + /* Keep a count of the services detected and added */ + priv->services_detected = 0; + priv->name_owner_cb_count = 0; + /* Add CMs to list */ tp_list_connection_names (priv->dbus, debug_window_list_connection_names_cb, debug_window, NULL, NULL); @@ -1082,8 +1112,6 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *debug_window) g_object_unref (active_buffer); g_object_unref (pause_buffer); - gtk_combo_box_set_active (GTK_COMBO_BOX (priv->chooser), 0); - /* add clients */ tp_dbus_daemon_list_names (priv->dbus, 2000, list_names_cb, NULL, NULL, G_OBJECT (debug_window)); @@ -1782,6 +1810,8 @@ am_prepared_cb (GObject *am, priv->view_visible = FALSE; + priv->all_active_buffer = NULL; + debug_window_set_toolbar_sensitivity (EMPATHY_DEBUG_WINDOW (object), FALSE); debug_window_fill_service_chooser (EMPATHY_DEBUG_WINDOW (object)); gtk_widget_show (GTK_WIDGET (object)); @@ -1872,6 +1902,8 @@ debug_window_dispose (GObject *object) priv->am = NULL; } + tp_clear_object (&priv->all_active_buffer); + (G_OBJECT_CLASS (empathy_debug_window_parent_class)->dispose) (object); } |