mirror of
https://github.com/reactos/reactos.git
synced 2025-06-10 12:24:48 +00:00
[EXPLORER] Implement NoWinKeys and HideClock restrictions (#7926)
This commit is contained in:
parent
85afe48c3e
commit
8b6907f2a6
5 changed files with 59 additions and 33 deletions
|
@ -367,6 +367,11 @@ CStartMenuSite_CreateInstance(IN OUT ITrayWindow *Tray, const IID & riid, PVOID
|
||||||
/* TrayClockWnd */
|
/* TrayClockWnd */
|
||||||
HRESULT CTrayClockWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv);
|
HRESULT CTrayClockWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv);
|
||||||
|
|
||||||
|
static inline BOOL GetHideClock()
|
||||||
|
{
|
||||||
|
return g_TaskbarSettings.sr.HideClock || SHRestricted(REST_HIDECLOCK);
|
||||||
|
}
|
||||||
|
|
||||||
/* TrayNotifyWnd */
|
/* TrayNotifyWnd */
|
||||||
#define TNWM_GETMINIMUMSIZE (WM_USER + 0x100)
|
#define TNWM_GETMINIMUMSIZE (WM_USER + 0x100)
|
||||||
#define TNWM_CHANGETRAYPOS (WM_USER + 0x104)
|
#define TNWM_CHANGETRAYPOS (WM_USER + 0x104)
|
||||||
|
|
|
@ -666,7 +666,7 @@ LRESULT CTrayClockWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
||||||
|
|
||||||
m_tooltip.AddTool(&ti);
|
m_tooltip.AddTool(&ti);
|
||||||
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!GetHideClock())
|
||||||
{
|
{
|
||||||
ResetTime();
|
ResetTime();
|
||||||
}
|
}
|
||||||
|
@ -694,26 +694,17 @@ LRESULT CTrayClockWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa
|
||||||
LRESULT CTrayClockWnd::OnTaskbarSettingsChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CTrayClockWnd::OnTaskbarSettingsChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
BOOL bRealign = FALSE;
|
BOOL bRealign = FALSE;
|
||||||
|
BOOL bHideClock = GetHideClock();
|
||||||
TaskbarSettings* newSettings = (TaskbarSettings*)lParam;
|
TaskbarSettings* newSettings = (TaskbarSettings*)lParam;
|
||||||
if (newSettings->bShowSeconds != g_TaskbarSettings.bShowSeconds)
|
|
||||||
{
|
|
||||||
g_TaskbarSettings.bShowSeconds = newSettings->bShowSeconds;
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
|
||||||
{
|
|
||||||
bRealign = TRUE;
|
|
||||||
|
|
||||||
ResetTime();
|
if (newSettings->sr.HideClock != !IsWindowVisible())
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (newSettings->sr.HideClock != g_TaskbarSettings.sr.HideClock)
|
|
||||||
{
|
{
|
||||||
g_TaskbarSettings.sr.HideClock = newSettings->sr.HideClock;
|
g_TaskbarSettings.sr.HideClock = newSettings->sr.HideClock;
|
||||||
ShowWindow(g_TaskbarSettings.sr.HideClock ? SW_HIDE : SW_SHOW);
|
bHideClock = GetHideClock();
|
||||||
|
ShowWindow(bHideClock ? SW_HIDE : SW_SHOW);
|
||||||
bRealign = TRUE;
|
bRealign = TRUE;
|
||||||
|
|
||||||
if (g_TaskbarSettings.sr.HideClock)
|
if (bHideClock)
|
||||||
{
|
{
|
||||||
/* Disable all timers */
|
/* Disable all timers */
|
||||||
if (IsTimerEnabled)
|
if (IsTimerEnabled)
|
||||||
|
@ -733,6 +724,16 @@ LRESULT CTrayClockWnd::OnTaskbarSettingsChanged(UINT uMsg, WPARAM wParam, LPARAM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newSettings->bShowSeconds != g_TaskbarSettings.bShowSeconds)
|
||||||
|
{
|
||||||
|
g_TaskbarSettings.bShowSeconds = newSettings->bShowSeconds;
|
||||||
|
if (!bHideClock)
|
||||||
|
{
|
||||||
|
bRealign = TRUE;
|
||||||
|
ResetTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (newSettings->bPreferDate != g_TaskbarSettings.bPreferDate)
|
if (newSettings->bPreferDate != g_TaskbarSettings.bPreferDate)
|
||||||
{
|
{
|
||||||
g_TaskbarSettings.bPreferDate = newSettings->bPreferDate;
|
g_TaskbarSettings.bPreferDate = newSettings->bPreferDate;
|
||||||
|
@ -766,7 +767,7 @@ HRESULT CTrayClockWnd::Initialize(IN HWND hWndParent)
|
||||||
/* Create the window. The tray window is going to move it to the correct
|
/* Create the window. The tray window is going to move it to the correct
|
||||||
position and resize it as needed. */
|
position and resize it as needed. */
|
||||||
DWORD dwStyle = WS_CHILD | WS_CLIPSIBLINGS;
|
DWORD dwStyle = WS_CHILD | WS_CLIPSIBLINGS;
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!GetHideClock())
|
||||||
dwStyle |= WS_VISIBLE;
|
dwStyle |= WS_VISIBLE;
|
||||||
|
|
||||||
Create(hWndParent, 0, NULL, dwStyle);
|
Create(hWndParent, 0, NULL, dwStyle);
|
||||||
|
|
|
@ -139,8 +139,9 @@ public:
|
||||||
SIZE clockSize = { 0, 0 };
|
SIZE clockSize = { 0, 0 };
|
||||||
SIZE traySize = { 0, 0 };
|
SIZE traySize = { 0, 0 };
|
||||||
SIZE showDesktopSize = { 0, 0 };
|
SIZE showDesktopSize = { 0, 0 };
|
||||||
|
BOOL bHideClock = GetHideClock();
|
||||||
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!bHideClock)
|
||||||
{
|
{
|
||||||
if (IsHorizontal)
|
if (IsHorizontal)
|
||||||
{
|
{
|
||||||
|
@ -197,7 +198,7 @@ public:
|
||||||
{
|
{
|
||||||
pSize->cx = 2 * TRAY_NOTIFY_WND_SPACING_X;
|
pSize->cx = 2 * TRAY_NOTIFY_WND_SPACING_X;
|
||||||
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!bHideClock)
|
||||||
pSize->cx += TRAY_NOTIFY_WND_SPACING_X + trayClockMinSize.cx;
|
pSize->cx += TRAY_NOTIFY_WND_SPACING_X + trayClockMinSize.cx;
|
||||||
|
|
||||||
if (g_TaskbarSettings.bShowDesktopButton)
|
if (g_TaskbarSettings.bShowDesktopButton)
|
||||||
|
@ -210,7 +211,7 @@ public:
|
||||||
{
|
{
|
||||||
pSize->cy = 2 * TRAY_NOTIFY_WND_SPACING_Y;
|
pSize->cy = 2 * TRAY_NOTIFY_WND_SPACING_Y;
|
||||||
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!bHideClock)
|
||||||
pSize->cy += TRAY_NOTIFY_WND_SPACING_Y + trayClockMinSize.cy;
|
pSize->cy += TRAY_NOTIFY_WND_SPACING_Y + trayClockMinSize.cy;
|
||||||
|
|
||||||
if (g_TaskbarSettings.bShowDesktopButton)
|
if (g_TaskbarSettings.bShowDesktopButton)
|
||||||
|
@ -303,7 +304,7 @@ public:
|
||||||
swpFlags);
|
swpFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!g_TaskbarSettings.sr.HideClock)
|
if (!GetHideClock())
|
||||||
{
|
{
|
||||||
POINT ptClock = { rcClient.left, rcClient.top };
|
POINT ptClock = { rcClient.left, rcClient.top };
|
||||||
SIZE clockSize = { rcClient.right - rcClient.left, rcClient.bottom - rcClient.top };
|
SIZE clockSize = { rcClient.right - rcClient.left, rcClient.bottom - rcClient.top };
|
||||||
|
@ -482,6 +483,8 @@ public:
|
||||||
SendMessage(WM_NOTIFY, 0, (LPARAM) &nmh);
|
SendMessage(WM_NOTIFY, 0, (LPARAM) &nmh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_TaskbarSettings.bHideInactiveIcons = newSettings->bHideInactiveIcons;
|
||||||
|
|
||||||
return OnClockMessage(uMsg, wParam, lParam, bHandled);
|
return OnClockMessage(uMsg, wParam, lParam, bHandled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -276,11 +276,16 @@ public:
|
||||||
|
|
||||||
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
|
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
|
||||||
{
|
{
|
||||||
CheckDlgButton(IDC_TASKBARPROP_CLOCK, (!g_TaskbarSettings.sr.HideClock) ? BST_CHECKED : BST_UNCHECKED);
|
::EnableWindow(GetDlgItem(IDC_TASKBARPROP_CLOCK), !SHRestricted(REST_HIDECLOCK));
|
||||||
|
CheckDlgButton(IDC_TASKBARPROP_CLOCK, (!GetHideClock()) ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(IDC_TASKBARPROP_SECONDS, g_TaskbarSettings.bShowSeconds ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(IDC_TASKBARPROP_SECONDS, g_TaskbarSettings.bShowSeconds ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(IDC_TASKBARPROP_HIDEICONS, g_TaskbarSettings.bHideInactiveIcons ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(IDC_TASKBARPROP_HIDEICONS, g_TaskbarSettings.bHideInactiveIcons ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(IDC_TASKBARPROP_DESKTOP, g_TaskbarSettings.bShowDesktopButton ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(IDC_TASKBARPROP_DESKTOP, g_TaskbarSettings.bShowDesktopButton ? BST_CHECKED : BST_UNCHECKED);
|
||||||
|
|
||||||
|
// TODO: bHideInactiveIcons is not implemented yet, just disable for now
|
||||||
|
CheckDlgButton(IDC_TASKBARPROP_HIDEICONS, BST_UNCHECKED);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_TASKBARPROP_HIDEICONS), FALSE);
|
||||||
|
|
||||||
_UpdateDialog();
|
_UpdateDialog();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2391,18 +2391,29 @@ ChangePos:
|
||||||
/* Set the initial lock state in the band site */
|
/* Set the initial lock state in the band site */
|
||||||
m_TrayBandSite->Lock(g_TaskbarSettings.bLock);
|
m_TrayBandSite->Lock(g_TaskbarSettings.bLock);
|
||||||
|
|
||||||
RegisterHotKey(m_hWnd, IDHK_RUN, MOD_WIN, 'R');
|
static const UINT winkeys[] =
|
||||||
RegisterHotKey(m_hWnd, IDHK_MINIMIZE_ALL, MOD_WIN, 'M');
|
{
|
||||||
RegisterHotKey(m_hWnd, IDHK_RESTORE_ALL, MOD_WIN|MOD_SHIFT, 'M');
|
MAKELONG(IDHK_RUN, MAKEWORD('R', MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_HELP, MOD_WIN, VK_F1);
|
MAKELONG(IDHK_MINIMIZE_ALL, MAKEWORD('M', MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_EXPLORE, MOD_WIN, 'E');
|
MAKELONG(IDHK_RESTORE_ALL, MAKEWORD('M', MOD_WIN|MOD_SHIFT)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_FIND, MOD_WIN, 'F');
|
MAKELONG(IDHK_HELP, MAKEWORD(VK_F1, MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_FIND_COMPUTER, MOD_WIN|MOD_CONTROL, 'F');
|
MAKELONG(IDHK_EXPLORE, MAKEWORD('E', MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_NEXT_TASK, MOD_WIN, VK_TAB);
|
MAKELONG(IDHK_FIND, MAKEWORD('F', MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_PREV_TASK, MOD_WIN|MOD_SHIFT, VK_TAB);
|
MAKELONG(IDHK_FIND_COMPUTER, MAKEWORD('F', MOD_WIN|MOD_CONTROL)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_SYS_PROPERTIES, MOD_WIN, VK_PAUSE);
|
MAKELONG(IDHK_NEXT_TASK, MAKEWORD(VK_TAB, MOD_WIN)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_DESKTOP, MOD_WIN, 'D');
|
MAKELONG(IDHK_PREV_TASK, MAKEWORD(VK_TAB, MOD_WIN|MOD_SHIFT)),
|
||||||
RegisterHotKey(m_hWnd, IDHK_PAGER, MOD_WIN, 'B');
|
MAKELONG(IDHK_SYS_PROPERTIES, MAKEWORD(VK_PAUSE, MOD_WIN)),
|
||||||
|
MAKELONG(IDHK_DESKTOP, MAKEWORD('D', MOD_WIN)),
|
||||||
|
MAKELONG(IDHK_PAGER, MAKEWORD('B', MOD_WIN)),
|
||||||
|
};
|
||||||
|
if (!SHRestricted(REST_NOWINKEYS))
|
||||||
|
{
|
||||||
|
for (UINT i = 0; i < _countof(winkeys); ++i)
|
||||||
|
{
|
||||||
|
UINT mod = HIBYTE(HIWORD(winkeys[i])), key = LOBYTE(HIWORD(winkeys[i]));
|
||||||
|
RegisterHotKey(m_hWnd, LOWORD(winkeys[i]), mod, key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -2454,6 +2465,7 @@ ChangePos:
|
||||||
CheckTrayWndPosition();
|
CheckTrayWndPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Note: We rely on CDesktopBrowser to get this message and call SHSettingsChanged
|
||||||
if (m_DesktopWnd)
|
if (m_DesktopWnd)
|
||||||
::SendMessageW(m_DesktopWnd, uMsg, wParam, lParam);
|
::SendMessageW(m_DesktopWnd, uMsg, wParam, lParam);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue