summaryrefslogtreecommitdiff
path: root/src/usb-device-widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usb-device-widget.c')
-rw-r--r--src/usb-device-widget.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c
index 085f640..d3ea79a 100644
--- a/src/usb-device-widget.c
+++ b/src/usb-device-widget.c
@@ -478,6 +478,7 @@ static void _disconnect_cb(GObject *gobject, GAsyncResult *res, gpointer user_da
connect_cb_data_free(data);
}
+static void checkbox_clicked_cb(GtkWidget *check, gpointer user_data);
static void connect_cb(GObject *gobject, GAsyncResult *res, gpointer user_data)
{
SpiceUsbDeviceManager *manager = SPICE_USB_DEVICE_MANAGER(gobject);
@@ -500,7 +501,12 @@ static void connect_cb(GObject *gobject, GAsyncResult *res, gpointer user_data)
g_signal_emit(self, signals[CONNECT_FAILED], 0, device, err);
g_error_free(err);
+ /* don't trigger a disconnect if connect failed */
+ g_signal_handlers_block_by_func(GTK_TOGGLE_BUTTON(data->check),
+ checkbox_clicked_cb, self);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->check), FALSE);
+ g_signal_handlers_unblock_by_func(GTK_TOGGLE_BUTTON(data->check),
+ checkbox_clicked_cb, self);
}
connect_cb_data_free(data);