Author: czeidler Date: 2010-12-05 01:48:56 +0100 (Sun, 05 Dec 2010) New Revision: 39732 Changeset: http://dev.haiku-os.org/changeset/39732 Ticket: http://dev.haiku-os.org/ticket/6952 Modified: haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp Log: Patch by Alexander von Gluck. Detect not-present / empty batteries. Fix #6952. Modified: haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp =================================================================== --- haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp 2010-12-05 00:41:53 UTC (rev 39731) +++ haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp 2010-12-05 00:48:56 UTC (rev 39732) @@ -1,10 +1,11 @@ /* - * Copyright 2006-2009, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2010, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: * Axel Dörfler, axeld@xxxxxxxxxxxxxxxx * Clemens Zeidler, haiku@xxxxxxxxxxxxxxxxxx + * Alexander von Gluck, kallisti5@xxxxxxxxxxx */ @@ -177,8 +178,10 @@ rect.left - 1, floorf(rect.bottom - rect.Height() / 4))); int32 percent = fPercent; - if (percent > 100 || percent < 0 || !fHasBattery) + if (percent > 100) percent = 100; + else if (percent < 0 || !fHasBattery) + percent = 0; if (percent > 0) { rect.InsetBy(gap, gap); @@ -332,18 +335,18 @@ _GetBatteryInfo(&fBatteryInfo, fBatteryID); - if (fBatteryInfo.full_capacity != 0) + fHasBattery = (fBatteryInfo.state & BATTERY_CRITICAL_STATE) == 0; + + if (fBatteryInfo.full_capacity > 0 && fHasBattery) { fPercent = (100 * fBatteryInfo.capacity) / fBatteryInfo.full_capacity; - - fTimeLeft = fBatteryInfo.time_left; - if ((fBatteryInfo.state & BATTERY_CHARGING) != 0) - fOnline = true; - else + fOnline = (fBatteryInfo.state & BATTERY_CHARGING) != 0; + fTimeLeft = fBatteryInfo.time_left; + } else { + fPercent = 0; fOnline = false; + fTimeLeft = false; + } - // TODO: if critical really means that, its name should be changed... - fHasBattery = (fBatteryInfo.state & BATTERY_CRITICAL_STATE) == 0 - && fPercent >= 0; if (fInDeskbar) { // make sure the tray icon is large enough