Index: client.c =================================================================== RCS file: /cvsroot/bluez/gnome/common/client.c,v retrieving revision 1.37 diff -u -p -r1.37 client.c --- client.c 29 Jan 2008 17:00:58 -0000 1.37 +++ client.c 31 Jan 2008 14:56:56 -0000 @@ -60,6 +60,8 @@ static int client_table_signals[LAST_SIG G_DEFINE_TYPE(BluetoothClient, bluetooth_client, G_TYPE_OBJECT) +static void update_adapter(DBusGProxy *object, GtkTreeIter *iter, BluetoothClient *client); + static gboolean find_iter_for_object(DBusGProxy *object, BluetoothClient *client, GtkTreeIter *iter) @@ -87,6 +89,29 @@ static gboolean find_iter_for_object(DBu static void mode_changed(DBusGProxy *object, const char *mode, gpointer user_data) { + BluetoothClient *client = (BluetoothClient *) user_data; + BluetoothClientPrivate *priv = BLUETOOTH_CLIENT_GET_PRIVATE(client); + GtkTreeIter iter; + gboolean cont; + + cont = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(priv->store), &iter); + + while (cont == TRUE) { + DBusGProxy *o; + + gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, + COLUMN_OBJECT, &o, -1); + + if (object == o) { + gtk_tree_store_set(priv->store, &iter, + COLUMN_ACTIVE, TRUE, -1); + update_adapter(object, &iter, client); + + return; + } + + cont = gtk_tree_model_iter_next(GTK_TREE_MODEL(priv->store), &iter); + } } static void timeout_changed(DBusGProxy *object,