Index: reactos/base/shell/explorer/precomp.h =================================================================== --- reactos/base/shell/explorer/precomp.h (revision 72030) +++ reactos/base/shell/explorer/precomp.h (working copy) @@ -119,6 +119,8 @@ */ #define TWM_OPENSTARTMENU (WM_USER + 260) +#define TWM_UPDATECLOCK (WM_USER + 261) +#define TWM_ISCLOCKHIDDEN (WM_USER + 262) extern const GUID IID_IShellDesktopTray; Index: reactos/base/shell/explorer/trayntfy.cpp =================================================================== --- reactos/base/shell/explorer/trayntfy.cpp (revision 72030) +++ reactos/base/shell/explorer/trayntfy.cpp (working copy) @@ -2,6 +2,7 @@ * ReactOS Explorer * * Copyright 2006 - 2007 Thomas Weidenmueller + * Copyright 2016 Katayama Hirofumi MZ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -1334,7 +1335,7 @@ m_clock->_Init(m_hWnd, !HideClock); m_pager = new CSysPagerWnd(); - m_pager->_Init(m_hWnd, !HideClock); + m_pager->_Init(m_hWnd, TRUE); OnThemeChanged(); @@ -1460,6 +1461,16 @@ szTrayNotify.cy, SWP_NOZORDER); } + else + { + m_pager->SetWindowPos( + NULL, + TRAY_NOTIFY_WND_SPACING_X, + TRAY_NOTIFY_WND_SPACING_Y, + szTrayNotify.cx, + szTrayNotify.cy, + SWP_NOZORDER); + } } LRESULT DrawBackground(HDC hdc) @@ -1550,9 +1561,15 @@ BOOL PrevHidden = HideClock; HideClock = (wParam == 0); - if (m_clock != NULL && PrevHidden != HideClock) + LoadAdvancedSettings(); + + if (m_clock != NULL) { - m_clock->ShowWindow(HideClock ? SW_HIDE : SW_SHOW); + if (PrevHidden != HideClock) + { + m_clock->ShowWindow(HideClock ? SW_HIDE : SW_SHOW); + } + m_clock->UpdateWnd(); } return (LRESULT) (!PrevHidden); Index: reactos/base/shell/explorer/trayprop.cpp =================================================================== --- reactos/base/shell/explorer/trayprop.cpp (revision 72030) +++ reactos/base/shell/explorer/trayprop.cpp (working copy) @@ -3,6 +3,7 @@ * * Copyright 2006 - 2007 Thomas Weidenmueller * 2015 Robert Naumann + * Copyright 2016 Katayama Hirofumi MZ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -30,6 +31,11 @@ HBITMAP hTrayBitmap; } PROPSHEET_INFO, *PPROPSHEET_INFO; +static HWND GetTrayWindow(void) +{ + HWND hTrayWnd = FindWindowW(L"Shell_TrayWnd", NULL); + return hTrayWnd; +} static BOOL UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) @@ -188,7 +194,14 @@ pPropInfo->hTaskbarWnd = hwnd; - // FIXME: check buttons + BOOL IsClockHidden = SendMessage(GetTrayWindow(), TWM_ISCLOCKHIDDEN, 0, 0); + + if (IsClockHidden) + EnableWindow(GetDlgItem(hwnd, IDC_TASKBARPROP_SECONDS), FALSE); + else + EnableWindow(GetDlgItem(hwnd, IDC_TASKBARPROP_SECONDS), TRUE); + + CheckDlgButton(hwnd, IDC_TASKBARPROP_CLOCK, IsClockHidden ? BST_UNCHECKED : BST_CHECKED); CheckDlgButton(hwnd, IDC_TASKBARPROP_SECONDS, AdvancedSettings.bShowSeconds ? BST_CHECKED : BST_UNCHECKED); UpdateTaskbarBitmap(pPropInfo); @@ -243,6 +256,7 @@ case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; + BOOL bShowClock; switch (pnmh->code) { @@ -252,6 +266,8 @@ case PSN_APPLY: AdvancedSettings.bShowSeconds = IsDlgButtonChecked(hwndDlg, IDC_TASKBARPROP_SECONDS); SaveSettingDword(szAdvancedSettingsKey, TEXT("ShowSeconds"), AdvancedSettings.bShowSeconds); + bShowClock = IsDlgButtonChecked(hwndDlg, IDC_TASKBARPROP_CLOCK); + ::PostMessage(GetTrayWindow(), TWM_UPDATECLOCK, bShowClock, 0); break; } Index: reactos/base/shell/explorer/traywnd.cpp =================================================================== --- reactos/base/shell/explorer/traywnd.cpp (revision 72030) +++ reactos/base/shell/explorer/traywnd.cpp (working copy) @@ -2,6 +2,7 @@ * ReactOS Explorer * * Copyright 2006 - 2007 Thomas Weidenmueller + * Copyright 2016 Katayama Hirofumi MZ * * this library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -1174,6 +1175,35 @@ m_Monitor = GetMonitorFromRect(&m_TrayRects[ABE_LEFT]); } + VOID RegSaveSettings() + { + TW_STRUCKRECTS2 sr; + + sr.cbSize = sizeof(sr); + sr.Unknown = 0; + sr.dwFlags = 0; + if (AutoHide) + sr.dwFlags |= ABS_AUTOHIDE; + if (AlwaysOnTop) + sr.dwFlags |= ABS_ALWAYSONTOP; + if (SmSmallIcons) + sr.dwFlags |= 0x4; + if (HideClock) + sr.dwFlags |= 0x8; + sr.Position = m_Position; + // FIXME: setting proper value + sr.Size.cx = 0; + sr.Size.cy = 0; + GetWindowRect(&sr.Rect); + + SHSetValueW(hkExplorer, + TEXT("StuckRects2"), + TEXT("Settings"), + REG_BINARY, + &sr, + sr.cbSize); + } + UINT TrackMenu( IN HMENU hMenu, IN POINT *ppt OPTIONAL, @@ -2602,6 +2632,19 @@ return TRUE; } + LRESULT OnUpdateClock(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) + { + HideClock = !wParam; + RegSaveSettings(); + ::PostMessage(m_TrayNotify, TNWM_SHOWCLOCK, !HideClock, 0); + return 0; + } + + LRESULT OnIsClockHidden(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) + { + return HideClock; + } + LRESULT DoExitWindows() { ExitWindowsDialog(m_hWnd); @@ -2869,6 +2912,8 @@ MESSAGE_HANDLER(WM_APP_TRAYDESTROY, OnAppTrayDestroy) MESSAGE_HANDLER(TWM_OPENSTARTMENU, OnOpenStartMenu) MESSAGE_HANDLER(TWM_DOEXITWINDOWS, OnDoExitWindows) + MESSAGE_HANDLER(TWM_UPDATECLOCK, OnUpdateClock) + MESSAGE_HANDLER(TWM_ISCLOCKHIDDEN, OnIsClockHidden) MESSAGE_HANDLER(WM_CLOSE, OnDoExitWindows) MESSAGE_HANDLER(WM_HOTKEY, OnHotkey) ALT_MSG_MAP(1)