aboutsummaryrefslogtreecommitdiff
path: root/src/service.c
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2017-05-15 14:54:40 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-05-15 14:54:40 +0200
commitf223d5a98db5fc1505ffcd04941093856ba0b3fb (patch)
tree095af07e858cfc07600cc79bf1fb62bed2f5f935 /src/service.c
parentc2b69b84d7f698a5f4cc4aec29d6b131aba86ada (diff)
downloadayatana-indicator-power-f223d5a98db5fc1505ffcd04941093856ba0b3fb.tar.gz
ayatana-indicator-power-f223d5a98db5fc1505ffcd04941093856ba0b3fb.tar.bz2
ayatana-indicator-power-f223d5a98db5fc1505ffcd04941093856ba0b3fb.zip
Fix bug that chose the wrong header icon if a connected device has a charge but its charging/discharging state is unknown. (LP: #1470080).
Diffstat (limited to 'src/service.c')
-rw-r--r--src/service.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/service.c b/src/service.c
index 679dc5e..76a0db9 100644
--- a/src/service.c
+++ b/src/service.c
@@ -243,7 +243,25 @@ device_compare_func (gconstpointer ga, gconstpointer gb)
}
}
- if (!ret) /* neither device is charging nor discharging... */
+ /* neither device is charging nor discharging... */
+
+ /* unless there's no other option,
+ don't choose a device with an unknown state.
+ https://bugs.launchpad.net/ubuntu/+source/indicator-power/+bug/1470080 */
+ state = UP_DEVICE_STATE_UNKNOWN;
+ if (!ret && ((a_state == state) || (b_state == state)))
+ {
+ if (a_state != state) /* b is unknown */
+ {
+ ret = -1;
+ }
+ else if (b_state != state) /* a is unknown */
+ {
+ ret = 1;
+ }
+ }
+
+ if (!ret)
{
const int weight_a = get_device_kind_weight (a);
const int weight_b = get_device_kind_weight (b);