default_protocol = DEFAULT_PROTOCOL;
default_port = DEFAULT_PORT;
+ cfg.logtype = LGTYP_NONE;
do_defaults(NULL, &cfg);
tolower(p[2]) == 'h') {
default_protocol = cfg.protocol = PROT_SSH;
default_port = cfg.port = 22;
- } else if (q == p + 3 &&
- tolower(p[0]) == 'l' &&
- tolower(p[1]) == 'o' &&
- tolower(p[2]) == 'g') {
- logfile = "putty.log";
} else if (q == p + 7 &&
tolower(p[0]) == 'c' &&
tolower(p[1]) == 'l' &&
caretbm = CreateBitmap(font_width, font_height, 1, 1, bits);
sfree(bits);
}
+ CreateCaret(hwnd, caretbm, font_width, font_height);
/*
* Initialise the scroll bar.
*/
ShowWindow (hwnd, show);
+ /*
+ * Open the initial log file if there is one.
+ */
+ logfopen();
+
/*
* Set the palette up.
*/
static int ignore_clip = FALSE;
static int just_reconfigged = FALSE;
static int resizing = FALSE;
+ static int need_backend_resize = FALSE;
switch (message) {
case WM_TIMER:
case IDM_RECONF:
{
int prev_alwaysontop = cfg.alwaysontop;
+ char oldlogfile[FILENAME_MAX];
+ int oldlogtype;
+ int need_setwpos = FALSE;
+ int old_fwidth, old_fheight;
+
+ strcpy(oldlogfile, cfg.logfilename);
+ oldlogtype = cfg.logtype;
+ cfg.width = cols;
+ cfg.height = rows;
+ old_fwidth = font_width;
+ old_fheight = font_height;
+ GetWindowText(hwnd, cfg.wintitle, sizeof(cfg.wintitle));
+
if (!do_reconfig(hwnd))
break;
+
+ if (strcmp(oldlogfile, cfg.logfilename) ||
+ oldlogtype != cfg.logtype) {
+ logfclose(); /* reset logging */
+ logfopen();
+ }
+
just_reconfigged = TRUE;
{
int i;
SetWindowLong(hwnd, GWL_EXSTYLE, nexflag);
SendMessage (hwnd, WM_IGNORE_SIZE, 0, 0);
+
SetWindowPos(hwnd, NULL, 0,0,0,0,
SWP_NOACTIVATE|SWP_NOCOPYBITS|
SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|
}
}
+ if (cfg.height != rows ||
+ cfg.width != cols ||
+ old_fwidth != font_width ||
+ old_fheight != font_height ||
+ cfg.savelines != savelines)
+ need_setwpos = TRUE;
term_size(cfg.height, cfg.width, cfg.savelines);
InvalidateRect(hwnd, NULL, TRUE);
- SetWindowPos (hwnd, NULL, 0, 0,
- extra_width + font_width * cfg.width,
- extra_height + font_height * cfg.height,
- SWP_NOACTIVATE | SWP_NOCOPYBITS |
- SWP_NOMOVE | SWP_NOZORDER);
+ if (need_setwpos) {
+ force_normal(hwnd);
+ SetWindowPos (hwnd, NULL, 0, 0,
+ extra_width + font_width * cfg.width,
+ extra_height + font_height * cfg.height,
+ SWP_NOACTIVATE | SWP_NOCOPYBITS |
+ SWP_NOMOVE | SWP_NOZORDER);
+ }
+ set_title(cfg.wintitle);
if (IsIconic(hwnd)) {
SetWindowText (hwnd,
cfg.win_name_always ? window_name : icon_name);
return 0;
case WM_SETFOCUS:
has_focus = TRUE;
- CreateCaret(hwnd, caretbm, 0, 0);
+ CreateCaret(hwnd, caretbm, font_width, font_height);
ShowCaret(hwnd);
compose_state = 0;
term_out();
case WM_ENTERSIZEMOVE:
EnableSizeTip(1);
resizing = TRUE;
+ need_backend_resize = FALSE;
break;
case WM_EXITSIZEMOVE:
EnableSizeTip(0);
resizing = FALSE;
- back->size();
+ if (need_backend_resize)
+ back->size();
break;
case WM_SIZING:
{
*/
if (!resizing)
back->size();
+ else
+ need_backend_resize = TRUE;
just_reconfigged = FALSE;
}
}
int scan, left_alt = 0, key_down, shift_state;
int r, i, code;
unsigned char * p = output;
+ static int alt_state = 0;
+
+ HKL kbd_layout = GetKeyboardLayout(0);
static WORD keys[3];
static int compose_char = 0;
static WPARAM compose_key = 0;
-
+
r = GetKeyboardState(keystate);
if (!r) memset(keystate, 0, sizeof(keystate));
else
debug(("*"));
debug((", S%02x", scan=(HIWORD(lParam) & 0xFF) ));
- ch = MapVirtualKey(wParam, 2);
+ ch = MapVirtualKeyEx(wParam, 2, kbd_layout);
if (ch>=' ' && ch<='~') debug((", '%c'", ch));
else if (ch) debug((", $%02x", ch));
return -1;
}
if (left_alt && wParam == VK_SPACE && cfg.alt_space) {
+ alt_state = 0;
PostMessage(hwnd, WM_CHAR, ' ', 0);
SendMessage (hwnd, WM_SYSCOMMAND, SC_KEYMENU, 0);
return -1;
if(cfg.xlat_capslockcyr)
keystate[VK_CAPITAL] = 0;
- r = ToAscii (wParam, scan, keystate, keys, 0);
+ r = ToAsciiEx(wParam, scan, keystate, keys, 0, kbd_layout);
if(r>0)
{
p = output;
/* ALT alone may or may not want to bring up the System menu */
if (wParam == VK_MENU) {
if (cfg.alt_only) {
- static int alt_state = 0;
if (message == WM_SYSKEYDOWN)
alt_state = 1;
else if (message == WM_SYSKEYUP && alt_state)