[gnome-control-center] bluetooth: Don't change the switch status when transitioning
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] bluetooth: Don't change the switch status when transitioning
- Date: Sun, 10 Jan 2016 15:00:12 +0000 (UTC)
commit 4a009da483e96ea1763855f419da64c9e2468a34
Author: Bastien Nocera <hadess hadess net>
Date: Sun Jan 10 15:51:25 2016 +0100
bluetooth: Don't change the switch status when transitioning
When transitioning from an enabled platform rfkill to disabled, the
Bluetooth adapter's power will lag behind. Make sure to not change the
switch's status when we get into this temporary state.
https://bugzilla.gnome.org/show_bug.cgi?id=760168
panels/bluetooth/cc-bluetooth-panel.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
---
diff --git a/panels/bluetooth/cc-bluetooth-panel.c b/panels/bluetooth/cc-bluetooth-panel.c
index 61e96f1..e5d4cbc 100644
--- a/panels/bluetooth/cc-bluetooth-panel.c
+++ b/panels/bluetooth/cc-bluetooth-panel.c
@@ -134,12 +134,14 @@ static void
cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
{
GObject *toggle;
- gboolean sensitive, powered;
+ gboolean sensitive, powered, change_powered;
const char *page;
g_debug ("Updating airplane mode: has_airplane_mode %d, hardware_airplane_mode %d, BT airplane_mode
%d, airplane_mode %d",
self->priv->has_airplane_mode, self->priv->hardware_airplane_mode,
self->priv->bt_airplane_mode, self->priv->airplane_mode);
+ change_powered = TRUE;
+
if (self->priv->has_airplane_mode == FALSE) {
g_debug ("No Bluetooth available");
sensitive = FALSE;
@@ -159,7 +161,7 @@ cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
!bluetooth_settings_widget_get_default_adapter_powered (BLUETOOTH_SETTINGS_WIDGET
(self->priv->widget))) {
g_debug ("Default adapter is unpowered, but should be available");
sensitive = TRUE;
- powered = FALSE;
+ change_powered = FALSE;
page = BLUETOOTH_DISABLED_PAGE;
} else {
g_debug ("Bluetooth is available and powered");
@@ -171,9 +173,11 @@ cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
gtk_widget_set_sensitive (WID ("box_power") , sensitive);
toggle = G_OBJECT (WID ("switch_bluetooth"));
- g_signal_handlers_block_by_func (toggle, power_callback, self);
- gtk_switch_set_active (GTK_SWITCH (toggle), powered);
- g_signal_handlers_unblock_by_func (toggle, power_callback, self);
+ if (change_powered) {
+ g_signal_handlers_block_by_func (toggle, power_callback, self);
+ gtk_switch_set_active (GTK_SWITCH (toggle), powered);
+ g_signal_handlers_unblock_by_func (toggle, power_callback, self);
+ }
gtk_stack_set_visible_child_name (GTK_STACK (self->priv->stack), page);
}
@@ -341,6 +345,8 @@ cc_bluetooth_panel_init (CcBluetoothPanel *self)
airplane_mode_changed (NULL, NULL, NULL, self);
g_signal_connect (self->priv->rfkill, "g-properties-changed",
G_CALLBACK (airplane_mode_changed), self);
+ g_signal_connect_swapped (G_OBJECT (self->priv->widget), "adapter-status-changed",
+ G_CALLBACK (cc_bluetooth_panel_update_power), self);
g_signal_connect (G_OBJECT (WID ("switch_bluetooth")), "notify::active",
G_CALLBACK (power_callback), self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]