diff -Nur -x '*.orig' -x '*~' gnome-power-manager-2.22.1.netbook/src/gpm-cell-unit.c gnome-power-manager-2.22.1.netbook.new/src/gpm-cell-unit.c --- gnome-power-manager-2.22.1.netbook/src/gpm-cell-unit.c 2008-03-10 17:49:46.000000000 -0400 +++ gnome-power-manager-2.22.1.netbook.new/src/gpm-cell-unit.c 2008-09-17 16:17:40.000000000 -0400 @@ -50,6 +50,7 @@ unit->is_present = FALSE; unit->is_charging = FALSE; unit->is_discharging = FALSE; + unit->on_ac = FALSE; return TRUE; } @@ -67,6 +68,7 @@ gpm_debug ("percent %i", unit->percentage); gpm_debug ("is charging %i", unit->is_charging); gpm_debug ("is discharging %i", unit->is_discharging); + gpm_debug ("on_ac %i", unit->on_ac); if (unit->charge_current > 0) { gpm_debug ("charge current %i", unit->charge_current); } @@ -140,7 +142,7 @@ g_return_val_if_fail (unit != NULL, FALSE); if (unit->is_charging == FALSE && - unit->is_discharging == FALSE && + (unit->on_ac == TRUE || unit->is_discharging == FALSE) && unit->percentage > GPM_CELL_UNIT_MIN_CHARGED_PERCENTAGE) { return TRUE; } @@ -178,7 +180,6 @@ } else if (unit->is_charging == TRUE) { index_str = gpm_cell_unit_get_icon_index (unit); filename = g_strdup_printf ("gpm-%s-%s-charging", prefix, index_str); - } else { index_str = gpm_cell_unit_get_icon_index (unit); filename = g_strdup_printf ("gpm-%s-%s", prefix, index_str); diff -Nur -x '*.orig' -x '*~' gnome-power-manager-2.22.1.netbook/src/gpm-cell-unit.h gnome-power-manager-2.22.1.netbook.new/src/gpm-cell-unit.h --- gnome-power-manager-2.22.1.netbook/src/gpm-cell-unit.h 2008-03-10 17:49:46.000000000 -0400 +++ gnome-power-manager-2.22.1.netbook.new/src/gpm-cell-unit.h 2008-09-17 16:11:01.000000000 -0400 @@ -57,6 +57,7 @@ gboolean is_present; gboolean is_charging; gboolean is_discharging; + gboolean on_ac; } GpmCellUnit; gboolean gpm_cell_unit_init (GpmCellUnit *unit); diff -Nur -x '*.orig' -x '*~' gnome-power-manager-2.22.1.netbook/src/gpm-engine.c gnome-power-manager-2.22.1.netbook.new/src/gpm-engine.c --- gnome-power-manager-2.22.1.netbook/src/gpm-engine.c 2008-03-10 17:49:46.000000000 -0400 +++ gnome-power-manager-2.22.1.netbook.new/src/gpm-engine.c 2008-09-17 16:35:07.000000000 -0400 @@ -387,6 +387,16 @@ unit_pda = gpm_cell_array_get_unit (collection->pda); unit_phone = gpm_cell_array_get_unit (collection->phone); + /* get the ac state */ + gboolean on_ac = gpm_ac_adapter_is_present (engine->priv->ac_adapter); + unit_primary->on_ac = on_ac; + unit_ups->on_ac = on_ac; + unit_mouse->on_ac = on_ac; + unit_keyboard->on_ac = on_ac; + unit_pda->on_ac = on_ac; + unit_phone->on_ac = on_ac; + + /* we try CRITICAL: PRIMARY, UPS, MOUSE, KEYBOARD */ gpm_debug ("Trying CRITICAL icon: primary, ups, mouse, keyboard"); if (unit_primary->is_present == TRUE) {