mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
80c4856bba
Allow the user to turn off "Advanced Text Service". [HKEY_CURRENT_USER\Software\Microsoft\CTF] "Disable Thread Input Manager"=dword:00000001 Implement AdvancedSettingsPageProc procedure. Modify IDS_REBOOT_NOW resource string. CORE-19268
105 lines
2.7 KiB
C
105 lines
2.7 KiB
C
/*
|
|
* PROJECT: input.dll
|
|
* FILE: dll/cpl/input/advanced_settings_page.c
|
|
* PURPOSE: input.dll
|
|
* PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org)
|
|
* Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
|
*/
|
|
|
|
#include "input.h"
|
|
|
|
BOOL g_bTextServiceIsOff = FALSE;
|
|
|
|
BOOL LoadAdvancedSettings(HWND hwndDlg)
|
|
{
|
|
HKEY hKey;
|
|
LRESULT error;
|
|
DWORD dwType;
|
|
DWORD dwValue;
|
|
DWORD cbValue = sizeof(dwValue);
|
|
|
|
error = RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\CTF", 0, KEY_READ, &hKey);
|
|
if (error != ERROR_SUCCESS)
|
|
return FALSE;
|
|
|
|
error = RegQueryValueExW(hKey,
|
|
L"Disable Thread Input Manager",
|
|
NULL,
|
|
&dwType,
|
|
(LPBYTE)&dwValue,
|
|
&cbValue);
|
|
if ((error != ERROR_SUCCESS) || (dwType != REG_DWORD) || (cbValue != sizeof(dwValue)))
|
|
dwValue = FALSE; /* Default */
|
|
|
|
RegCloseKey(hKey);
|
|
|
|
CheckDlgButton(hwndDlg, IDC_TURNOFFTEXTSVCS_CB, (dwValue ? BST_CHECKED : BST_UNCHECKED));
|
|
g_bTextServiceIsOff = !!dwValue;
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL SaveAdvancedSettings(HWND hwndDlg)
|
|
{
|
|
HKEY hKey;
|
|
LRESULT error;
|
|
const DWORD dwValue = g_bTextServiceIsOff;
|
|
const DWORD cbValue = sizeof(dwValue);
|
|
|
|
error = RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\CTF", 0, KEY_WRITE, &hKey);
|
|
if (error != ERROR_SUCCESS)
|
|
return FALSE;
|
|
|
|
error = RegSetValueExW(hKey, L"Disable Thread Input Manager", 0, REG_DWORD,
|
|
(const BYTE *)&dwValue, cbValue);
|
|
|
|
RegCloseKey(hKey);
|
|
return (error == ERROR_SUCCESS);
|
|
}
|
|
|
|
static INT_PTR OnNotifyAdvancedSettingsPage(HWND hwndDlg, LPARAM lParam)
|
|
{
|
|
LPNMHDR header = (LPNMHDR)lParam;
|
|
|
|
switch (header->code)
|
|
{
|
|
case PSN_APPLY:
|
|
{
|
|
BOOL bOff = (IsDlgButtonChecked(hwndDlg, IDC_TURNOFFTEXTSVCS_CB) == BST_CHECKED);
|
|
g_bRebootNeeded |= (g_bTextServiceIsOff && !bOff);
|
|
g_bTextServiceIsOff = bOff;
|
|
|
|
/* Write advanced settings */
|
|
SaveAdvancedSettings(hwndDlg);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
INT_PTR CALLBACK
|
|
AdvancedSettingsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch (uMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
LoadAdvancedSettings(hwndDlg);
|
|
return TRUE;
|
|
|
|
case WM_NOTIFY:
|
|
return OnNotifyAdvancedSettingsPage(hwndDlg, lParam);
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
switch (LOWORD(wParam))
|
|
{
|
|
case IDC_TURNOFFTEXTSVCS_CB:
|
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|