memset(&ucsdata, 0, sizeof(ucsdata));
- term = term_init(&cfg, &ucsdata, NULL);
- logctx = log_init(NULL, &cfg);
- term_provide_logctx(term, logctx);
-
cfgtopalette();
/*
font_height = 20;
extra_width = 25;
extra_height = 28;
- term_size(term, cfg.height, cfg.width, cfg.savelines);
- guess_width = extra_width + font_width * term->cols;
- guess_height = extra_height + font_height * term->rows;
+ guess_width = extra_width + font_width * cfg.width;
+ guess_height = extra_height + font_height * cfg.height;
{
RECT r;
get_fullscreen_rect(&r);
NULL, NULL, inst, NULL);
}
+ /*
+ * Initialise the terminal. (We have to do this _after_
+ * creating the window, since the terminal is the first thing
+ * which will call schedule_timer(), which will in turn call
+ * timer_change_notify() which will expect hwnd to exist.
+ */
+ term = term_init(&cfg, &ucsdata, NULL);
+ logctx = log_init(NULL, &cfg);
+ term_provide_logctx(term, logctx);
+ term_size(term, cfg.height, cfg.width, cfg.savelines);
+
/*
* Initialise the fonts, simultaneously correcting the guesses
* for font_{width,height}.
logpal = NULL;
init_palette();
- term->has_focus = (GetForegroundWindow() == hwnd);
+ term_set_focus(term, GetForegroundWindow() == hwnd);
UpdateWindow(hwnd);
if (GetMessage(&msg, NULL, 0, 0) == 1) {
continue;
/* The messages seem unreliable; especially if we're being tricky */
- term->has_focus = (GetForegroundWindow() == hwnd);
+ term_set_focus(term, GetForegroundWindow() == hwnd);
net_pending_errors();
net_pending_errors();
return 0;
case WM_SETFOCUS:
- term->has_focus = TRUE;
+ term_set_focus(term, TRUE);
CreateCaret(hwnd, caretbm, font_width, font_height);
ShowCaret(hwnd);
flash_window(0); /* stop */
break;
case WM_KILLFOCUS:
show_mouseptr(1);
- term->has_focus = FALSE;
+ term_set_focus(term, FALSE);
DestroyCaret();
caret_x = caret_y = -1; /* ensure caret is replaced next time */
term_update(term);