From 0fc45eb2976d5f0ee3b71f65d4d64650ab60b10f Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 23 Jun 2022 14:27:06 +0200 Subject: settings-widget: Fix duplicate device when bluetoothd restarts As recommended in the BluetoothClient documentation: " Note that #BluetoothClient::device-removed will not be called for each individual device as the model is cleared when the #BluetoothClient:default-adapter property changes. " Closes: #116 --- lib/bluetooth-settings-widget.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/bluetooth-settings-widget.c b/lib/bluetooth-settings-widget.c index 3fd3b251..462f65bc 100644 --- a/lib/bluetooth-settings-widget.c +++ b/lib/bluetooth-settings-widget.c @@ -1341,6 +1341,14 @@ default_adapter_changed (BluetoothClient *client, g_debug ("Default adapter changed to: %s", default_adapter ? default_adapter : "(none)"); + if (default_adapter == NULL && self->device_list != NULL) { + GtkWidget *child; + + g_debug ("Emptying list box as default adapter removed"); + while ((child = gtk_widget_get_first_child (self->device_list))) + gtk_list_box_remove (GTK_LIST_BOX (self->device_list), child); + } + g_object_set (G_OBJECT (client), "default-adapter-setup-mode", default_adapter != NULL, NULL); g_signal_emit (G_OBJECT (self), signals[ADAPTER_STATUS_CHANGED], 0); -- cgit v1.2.1