mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 05:26:58 +00:00
[0.4.14][TIMEDATE] Fix the way the current time-zone is found in the list. (#5649)
port back: 0.4.15-dev-6588-gd9cd760173
[TIMEDATE] Fix the way the current time-zone is found in the list. (#5649) which fixes regression CORE-18666 'Wrong timezone saved/displayed' which was introduced by 0.4.14-dev-1522-gaa69236646
no increase in binary size luckily: timedate.cpl 0.4.14rls RosBEWin2.1.6 GCC4.7.2dbg 368.128 -> 368.128
This commit is contained in:
parent
d307cdba0e
commit
b54a6fe33c
|
@ -1,12 +1,10 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Timedate Control Panel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: dll/cpl/timedate/timezone.c
|
||||
* PURPOSE: Time Zone property page
|
||||
* COPYRIGHT: Copyright 2004-2005 Eric Kohl
|
||||
* Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
|
||||
* Copyright 2006 Christoph v. Wittich <Christoph@ActiveVB.de>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "timedate.h"
|
||||
|
@ -168,36 +166,45 @@ ShowTimeZoneList(HWND hwnd)
|
|||
{
|
||||
TIME_ZONE_INFORMATION TimeZoneInfo;
|
||||
PTIMEZONE_ENTRY Entry;
|
||||
BOOL bDoAdvancedTest;
|
||||
DWORD dwIndex;
|
||||
DWORD i;
|
||||
DWORD dwCount;
|
||||
DWORD dwIndex = 0;
|
||||
BOOL bFound = FALSE;
|
||||
|
||||
GetTimeZoneInformation(&TimeZoneInfo);
|
||||
bDoAdvancedTest = (!*TimeZoneInfo.StandardName);
|
||||
if (GetTimeZoneInformation(&TimeZoneInfo) == TIME_ZONE_ID_INVALID)
|
||||
ZeroMemory(&TimeZoneInfo, sizeof(TimeZoneInfo));
|
||||
|
||||
dwIndex = 0;
|
||||
i = 0;
|
||||
Entry = TimeZoneListHead;
|
||||
while (Entry != NULL)
|
||||
for (Entry = TimeZoneListHead; Entry != NULL; Entry = Entry->Next)
|
||||
{
|
||||
SendMessageW(hwnd,
|
||||
CB_ADDSTRING,
|
||||
0,
|
||||
(LPARAM)Entry->Description);
|
||||
dwCount = SendMessageW(hwnd,
|
||||
CB_ADDSTRING,
|
||||
0,
|
||||
(LPARAM)Entry->Description);
|
||||
if (dwCount == CB_ERR || dwCount == CB_ERRSPACE)
|
||||
continue;
|
||||
|
||||
if ( (!bDoAdvancedTest && *Entry->StandardName &&
|
||||
wcscmp(Entry->StandardName, TimeZoneInfo.StandardName) == 0) ||
|
||||
( (Entry->TimezoneInfo.Bias == TimeZoneInfo.Bias) &&
|
||||
(Entry->TimezoneInfo.StandardBias == TimeZoneInfo.StandardBias) &&
|
||||
(Entry->TimezoneInfo.DaylightBias == TimeZoneInfo.DaylightBias) &&
|
||||
(memcmp(&Entry->TimezoneInfo.StandardDate, &TimeZoneInfo.StandardDate, sizeof(SYSTEMTIME)) == 0) &&
|
||||
(memcmp(&Entry->TimezoneInfo.DaylightDate, &TimeZoneInfo.DaylightDate, sizeof(SYSTEMTIME)) == 0) ) )
|
||||
if (bFound)
|
||||
continue;
|
||||
|
||||
if (*TimeZoneInfo.StandardName && *Entry->StandardName)
|
||||
{
|
||||
dwIndex = i;
|
||||
if (wcscmp(Entry->StandardName, TimeZoneInfo.StandardName) == 0)
|
||||
{
|
||||
dwIndex = dwCount;
|
||||
bFound = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((Entry->TimezoneInfo.Bias == TimeZoneInfo.Bias) &&
|
||||
(Entry->TimezoneInfo.StandardBias == TimeZoneInfo.StandardBias) &&
|
||||
(Entry->TimezoneInfo.DaylightBias == TimeZoneInfo.DaylightBias) &&
|
||||
(memcmp(&Entry->TimezoneInfo.StandardDate, &TimeZoneInfo.StandardDate, sizeof(SYSTEMTIME)) == 0) &&
|
||||
(memcmp(&Entry->TimezoneInfo.DaylightDate, &TimeZoneInfo.DaylightDate, sizeof(SYSTEMTIME)) == 0))
|
||||
{
|
||||
dwIndex = dwCount;
|
||||
bFound = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
Entry = Entry->Next;
|
||||
}
|
||||
|
||||
SendMessageW(hwnd,
|
||||
|
@ -285,7 +292,7 @@ TimeZonePageProc(HWND hwndDlg,
|
|||
case WM_DRAWITEM:
|
||||
{
|
||||
LPDRAWITEMSTRUCT lpDrawItem;
|
||||
lpDrawItem = (LPDRAWITEMSTRUCT) lParam;
|
||||
lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||
if(lpDrawItem->CtlID == IDC_WORLD_BACKGROUND)
|
||||
{
|
||||
HDC hdcMem;
|
||||
|
|
Loading…
Reference in a new issue