in src/propsheet/console.cpp [212:381]
BOOL UpdateStateInfo(HWND hDlg, UINT Item, int Value)
{
switch (Item)
{
case IDD_SCRBUF_WIDTH:
gpStateInfo->ScreenBufferSize.X = (SHORT)Value;
// If we're in V2 mode with wrap text on OR if the window is larger than the buffer, adjust the window to match.
if ((g_fForceV2 && gpStateInfo->fWrapText) || gpStateInfo->WindowSize.X > Value)
{
gpStateInfo->WindowSize.X = (SHORT)Value;
UpdateItem(hDlg, IDD_WINDOW_WIDTH, Value);
}
break;
case IDD_SCRBUF_HEIGHT:
gpStateInfo->ScreenBufferSize.Y = (SHORT)Value;
if (gpStateInfo->WindowSize.Y > Value)
{
gpStateInfo->WindowSize.Y = (SHORT)Value;
UpdateItem(hDlg, IDD_WINDOW_HEIGHT, Value);
}
break;
case IDD_WINDOW_WIDTH:
gpStateInfo->WindowSize.X = (SHORT)Value;
// If we're in V2 mode with wrap text on OR if the buffer is smaller than the window, adjust the buffer to match.
if ((g_fForceV2 && gpStateInfo->fWrapText) || gpStateInfo->ScreenBufferSize.X < Value)
{
gpStateInfo->ScreenBufferSize.X = (SHORT)Value;
UpdateItem(hDlg, IDD_SCRBUF_WIDTH, Value);
}
break;
case IDD_WINDOW_HEIGHT:
gpStateInfo->WindowSize.Y = (SHORT)Value;
if (gpStateInfo->ScreenBufferSize.Y < Value)
{
gpStateInfo->ScreenBufferSize.Y = (SHORT)Value;
UpdateItem(hDlg, IDD_SCRBUF_HEIGHT, Value);
}
break;
case IDD_WINDOW_POSX:
if (Value < 0)
{
gpStateInfo->WindowPosX = std::max(SHORT_MIN, Value);
}
else
{
gpStateInfo->WindowPosX = std::min(SHORT_MAX, Value);
}
break;
case IDD_WINDOW_POSY:
if (Value < 0)
{
gpStateInfo->WindowPosY = std::max(SHORT_MIN, Value);
}
else
{
gpStateInfo->WindowPosY = std::min(SHORT_MAX, Value);
}
break;
case IDD_AUTO_POSITION:
gpStateInfo->AutoPosition = Value;
break;
case IDD_COLOR_SCREEN_TEXT:
gpStateInfo->ScreenAttributes =
(gpStateInfo->ScreenAttributes & 0xF0) |
(Value & 0x0F);
break;
case IDD_COLOR_SCREEN_BKGND:
gpStateInfo->ScreenAttributes =
(gpStateInfo->ScreenAttributes & 0x0F) |
(WORD)(Value << 4);
break;
case IDD_COLOR_POPUP_TEXT:
gpStateInfo->PopupAttributes =
(gpStateInfo->PopupAttributes & 0xF0) |
(Value & 0x0F);
break;
case IDD_COLOR_POPUP_BKGND:
gpStateInfo->PopupAttributes =
(gpStateInfo->PopupAttributes & 0x0F) |
(WORD)(Value << 4);
break;
case IDD_COLOR_1:
case IDD_COLOR_2:
case IDD_COLOR_3:
case IDD_COLOR_4:
case IDD_COLOR_5:
case IDD_COLOR_6:
case IDD_COLOR_7:
case IDD_COLOR_8:
case IDD_COLOR_9:
case IDD_COLOR_10:
case IDD_COLOR_11:
case IDD_COLOR_12:
case IDD_COLOR_13:
case IDD_COLOR_14:
case IDD_COLOR_15:
case IDD_COLOR_16:
gpStateInfo->ColorTable[Item - IDD_COLOR_1] = Value;
break;
case IDD_LANGUAGELIST:
/*
* Value is a code page
*/
gpStateInfo->CodePage = Value;
break;
case IDD_QUICKEDIT:
gpStateInfo->QuickEdit = Value;
break;
case IDD_INSERT:
gpStateInfo->InsertMode = Value;
break;
case IDD_HISTORY_SIZE:
gpStateInfo->HistoryBufferSize = std::max(Value, 1);
break;
case IDD_HISTORY_NUM:
gpStateInfo->NumberOfHistoryBuffers = std::max(Value, 1);
break;
case IDD_HISTORY_NODUP:
gpStateInfo->HistoryNoDup = Value;
break;
case IDD_CURSOR_SMALL:
gpStateInfo->CursorSize = 25;
// Set the cursor to legacy style
gpStateInfo->CursorType = 0;
// Check the legacy radio button on the terminal page
if (g_hTerminalDlg != INVALID_HANDLE_VALUE)
{
CheckRadioButton(g_hTerminalDlg,
IDD_TERMINAL_LEGACY_CURSOR,
IDD_TERMINAL_SOLIDBOX,
IDD_TERMINAL_LEGACY_CURSOR);
}
break;
case IDD_CURSOR_MEDIUM:
gpStateInfo->CursorSize = 50;
// Set the cursor to legacy style
gpStateInfo->CursorType = 0;
// Check the legacy radio button on the terminal page
if (g_hTerminalDlg != INVALID_HANDLE_VALUE)
{
CheckRadioButton(g_hTerminalDlg,
IDD_TERMINAL_LEGACY_CURSOR,
IDD_TERMINAL_SOLIDBOX,
IDD_TERMINAL_LEGACY_CURSOR);
}
break;
case IDD_CURSOR_LARGE:
gpStateInfo->CursorSize = 100;
// Set the cursor to legacy style
gpStateInfo->CursorType = 0;
// Check the legacy radio button on the terminal page
if (g_hTerminalDlg != INVALID_HANDLE_VALUE)
{
CheckRadioButton(g_hTerminalDlg,
IDD_TERMINAL_LEGACY_CURSOR,
IDD_TERMINAL_SOLIDBOX,
IDD_TERMINAL_LEGACY_CURSOR);
}
break;
default:
return FALSE;
}
return TRUE;
}