https://git.reactos.org/?p=reactos.git;a=commitdiff;h=07a76b3dec662f32f883a119a339333c523f7eb1
commit 07a76b3dec662f32f883a119a339333c523f7eb1 Author: George Bișoc <george.bi...@reactos.org> AuthorDate: Mon Aug 12 14:08:12 2024 +0200 Commit: George Bișoc <george.bi...@reactos.org> CommitDate: Tue Aug 13 14:17:04 2024 +0200 [STOBJECT] Do not report the remaining battery capacity if it is unknown Support for system batteries in ReactOS is really minimal to the point of non-existing. We are detecting the presence of any upcoming battery but since there's lacking in critical code that deals with communication between PO and the battery class driver as the battery systray icon uses GetSystemPowerStatus to gather battery info which in turn inquires the power manager via NtPowerInformation(SystemBatteryState), we have to report to the user that the remaining capacity is unknown rather than returning a pseudo capacity value. Technically this so called "pesudo" value is just a construct denoted as BATTERY_PERCENTAGE_UNKNOWN. Not reporting the actual remaining capacity makes sense, as there could be a scenario where the battery may not properly report its real datum, therefore it's best to be honest to the user what's really going on. CORE-19452 CORE-18969 --- dll/shellext/stobject/power.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dll/shellext/stobject/power.cpp b/dll/shellext/stobject/power.cpp index 9d80665dc87..ecae456b66e 100644 --- a/dll/shellext/stobject/power.cpp +++ b/dll/shellext/stobject/power.cpp @@ -90,6 +90,12 @@ static HICON DynamicLoadIcon(HINSTANCE hinst) } if (((PowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY) == 0) && + (PowerStatus.BatteryLifePercent == BATTERY_PERCENTAGE_UNKNOWN)) + { + hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_BATTCAP_ERR)); + g_strTooltip.LoadStringW(IDS_PWR_UNKNOWN_REMAINING); + } + else if (((PowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY) == 0) && ((PowerStatus.BatteryFlag & BATTERY_FLAG_CHARGING) == BATTERY_FLAG_CHARGING)) { index = Quantize(PowerStatus.BatteryLifePercent);