HBRUSH hbHeader;\r
HBRUSH hbSelection;\r
\r
+ DWORD UIState;\r
BOOL Changed : 1;\r
BOOL DayTimerSet : 1;\r
- BOOL HideFocus : 1;\r
BOOL HasFocus : 1;\r
} MONTHCALWND, *PMONTHCALWND;\r
\r
IN OUT PVOID data)\r
{\r
LRESULT Ret = 0;\r
- \r
+\r
if (infoPtr->hNotify != NULL)\r
{\r
LPNMHDR pnmh = (LPNMHDR)data;\r
- \r
+\r
pnmh->hwndFrom = infoPtr->hSelf;\r
pnmh->idFrom = GetWindowLongPtr(infoPtr->hSelf,\r
GWLP_ID);\r
pnmh->code = code;\r
- \r
+\r
Ret = SendMessage(infoPtr->hNotify,\r
WM_NOTIFY,\r
(WPARAM)pnmh->idFrom,\r
TCHAR szBuf[64];\r
UINT i;\r
\r
+ infoPtr->UIState = SendMessage(GetAncestor(infoPtr->hSelf,\r
+ GA_PARENT),\r
+ WM_QUERYUISTATE,\r
+ 0,\r
+ 0);\r
+\r
/* cache the configuration */\r
infoPtr->FirstDayOfWeek = MonthCalFirstDayOfWeek();\r
\r
\r
if (Day == infoPtr->Day && crOldText != CLR_INVALID)\r
{\r
- if (infoPtr->HasFocus && !infoPtr->HideFocus)\r
+ if (infoPtr->HasFocus && !(infoPtr->UIState & UISF_HIDEFOCUS))\r
{\r
COLORREF crOldBk;\r
\r
}\r
break;\r
}\r
+\r
case VK_LEFT:\r
{\r
if (infoPtr->Day > 1)\r
{\r
/* change the UI status */\r
SendMessage(GetAncestor(hwnd,\r
- GA_ROOT),\r
+ GA_PARENT),\r
WM_CHANGEUISTATE,\r
MAKEWPARAM(UIS_INITIALIZE,\r
0),\r
\r
case WM_UPDATEUISTATE:\r
{\r
- BOOL OldHideFocus = infoPtr->HideFocus;\r
+ DWORD OldUIState = infoPtr->UIState;\r
switch (LOWORD(wParam))\r
{\r
case UIS_SET:\r
- if (HIWORD(wParam) & UISF_HIDEFOCUS)\r
- infoPtr->HideFocus = TRUE;\r
+ infoPtr->UIState |= HIWORD(wParam);\r
break;\r
\r
case UIS_CLEAR:\r
- if (HIWORD(wParam) & UISF_HIDEFOCUS)\r
- infoPtr->HideFocus = FALSE;\r
+ infoPtr->UIState &= ~HIWORD(wParam);\r
break;\r
}\r
\r
- if (infoPtr->HideFocus != OldHideFocus)\r
+ if (infoPtr->UIState != OldUIState)\r
{\r
MonthCalRepaintDay(infoPtr,\r
infoPtr->Day);\r
RegisterMonthCalControl(IN HINSTANCE hInstance)\r
{\r
WNDCLASS wc = {0};\r
- \r
+\r
wc.style = CS_DBLCLKS;\r
wc.lpfnWndProc = MonthCalWndProc;\r
wc.cbWndExtra = sizeof(PMONTHCALWND);\r
(LPWSTR)IDC_ARROW);\r
wc.hbrBackground = (HBRUSH)(MONTHCAL_CTRLBG + 1);\r
wc.lpszClassName = szMonthCalWndClass;\r
- \r
+\r
return RegisterClass(&wc) != 0;\r
}\r
\r
#define NDEBUG
#include <debug.h>
+static const WCHAR szCheckListWndClass[] = L"CHECKLIST_ACLUI";
+
#define CI_TEXT_MARGIN_WIDTH (8)
#define CI_TEXT_MARGIN_HEIGHT (3)
#define CI_TEXT_SELECTIONMARGIN (1)
INT ItemHeight;
- BOOL HasFocus;
PCHECKITEM FocusedCheckItem;
UINT FocusedCheckItemBox;
- BOOL FocusedPushed;
- BOOL FocusVisible;
COLORREF TextColor[2];
INT CheckBoxLeft[2];
- BOOL QuickSearchEnabled;
PCHECKITEM QuickSearchHitItem;
WCHAR QuickSearchText[65];
UINT QuickSearchSetFocusDelay;
UINT QuickSearchResetDelay;
DWORD CaretWidth;
- BOOL ShowingCaret;
+
+ DWORD UIState;
#if SUPPORT_UXTHEME
PCHECKITEM HoveredCheckItem;
HTHEME ThemeHandle;
#endif
+
+ BOOL HasFocus : 1;
+ BOOL FocusedPushed : 1;
+ BOOL QuickSearchEnabled : 1;
+ BOOL ShowingCaret : 1;
} CHECKLISTWND, *PCHECKLISTWND;
static VOID EscapeQuickSearch(IN PCHECKLISTWND infoPtr);
((Item->State & CIS_ALLOW) ? DFCS_CHECKED : 0) |
(IsPushed ? DFCS_PUSHED : 0));
}
- if (Item == infoPtr->FocusedCheckItem && infoPtr->FocusVisible &&
+ if (Item == infoPtr->FocusedCheckItem && !(infoPtr->UIState & UISF_HIDEFOCUS) &&
infoPtr->HasFocus &&
infoPtr->FocusedCheckItemBox != CLB_DENY)
{
((Item->State & CIS_DENY) ? DFCS_CHECKED : 0) |
(IsPushed ? DFCS_PUSHED : 0));
}
- if (infoPtr->HasFocus && infoPtr->FocusVisible &&
+ if (infoPtr->HasFocus && !(infoPtr->UIState & UISF_HIDEFOCUS) &&
Item == infoPtr->FocusedCheckItem &&
infoPtr->FocusedCheckItemBox == CLB_DENY)
{
{
Ret = (LRESULT)RetChangeControlFont(infoPtr,
(HFONT)wParam,
- (BOOL)lParam);
+ (BOOL)LOWORD(lParam));
break;
}
Shift,
&NewFocusBox);
- if (!infoPtr->FocusVisible)
- {
- /* change the UI status */
- SendMessage(GetAncestor(hwnd,
- GA_ROOT),
- WM_CHANGEUISTATE,
- MAKEWPARAM(UIS_INITIALIZE,
- UISF_HIDEFOCUS),
- 0);
- }
+ /* update the UI status */
+ SendMessage(GetAncestor(hwnd,
+ GA_PARENT),
+ WM_CHANGEUISTATE,
+ MAKEWPARAM(UIS_INITIALIZE,
+ 0),
+ 0);
ChangeCheckItemFocus(infoPtr,
NewFocus,
case WM_UPDATEUISTATE:
{
- if (HIWORD(wParam) & UISF_HIDEFOCUS)
+ DWORD OldUIState = infoPtr->UIState;
+
+ switch (LOWORD(wParam))
{
- BOOL OldFocusVisible = infoPtr->FocusVisible;
-
- infoPtr->FocusVisible = (LOWORD(wParam) == UIS_CLEAR);
+ case UIS_SET:
+ infoPtr->UIState |= HIWORD(wParam);
+ break;
+
+ case UIS_CLEAR:
+ infoPtr->UIState &= ~(HIWORD(wParam));
+ break;
+ }
- if (infoPtr->FocusVisible != OldFocusVisible &&
- infoPtr->FocusedCheckItem != NULL)
+ if (OldUIState != infoPtr->UIState)
+ {
+ if (infoPtr->FocusedCheckItem != NULL)
{
UpdateCheckItemBox(infoPtr,
infoPtr->FocusedCheckItem,
}
#endif
- infoPtr->FocusVisible = !(SendMessage(hwnd,
- WM_QUERYUISTATE,
- 0,
- 0) & UISF_HIDEFOCUS);
+ infoPtr->UIState = SendMessage(hwnd,
+ WM_QUERYUISTATE,
+ 0,
+ 0);
}
else
{
(LPWSTR)IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
- wc.lpszClassName = L"CHECKLIST_ACLUI";
+ wc.lpszClassName = szCheckListWndClass;
return RegisterClass(&wc) != 0;
}
VOID
-UnregisterCheckListControl(VOID)
+UnregisterCheckListControl(HINSTANCE hInstance)
{
- UnregisterClass(L"CHECKLIST_ACLUI",
- NULL);
+ UnregisterClass(szCheckListWndClass,
+ hInstance);
}
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("ibrowser.lnk"), _T("ibrowser.exe"), IDS_CMT_IBROWSER);
CreateShortcut(CSIDL_PROGRAMS, NULL, _T("Get Firefox.lnk"), _T("getfirefox.exe"), IDS_CMT_GETFIREFOX);
+ /* create administritive tools startmenu shortcuts */
+ CreateShortcut(CSIDL_ADMINTOOLS, NULL, _T("Services.lnk"), _T("servman.exe"), IDS_CMT_SERVMAN);
+
/* create and fill Accessories subfolder */
if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_ACCESSORIES, sAccessories, 256)) {
CreateShortcut(CSIDL_PROGRAMS, sAccessories, _T("Calculator.lnk"), _T("calc.exe"), IDS_CMT_CALC);