void fatalbox (char *, ...);
void beep (int);
void begin_session(void);
+void sys_cursor(int x, int y);
#define OPTIMISE_IS_SCROLL 1
/*
seen_disp_event = seen_key_event = 0;
}
do_paint (ctx, TRUE);
+ sys_cursor(curs_x, curs_y + (scrtop - disptop) / (cols+1));
free_ctx (ctx);
}
}
* Given a context, update the window. Out of paranoia, we don't
* allow WM_PAINT responses to do scrolling optimisations.
*/
-static void do_paint (Context ctx, int may_optimise){
+static void do_paint (Context ctx, int may_optimise){
int i, j, start, our_curs_y;
unsigned long attr, rv, cursor;
char ch[1024];
return 0;
case WM_SETFOCUS:
has_focus = TRUE;
+ CreateCaret(hwnd, NULL, font_width, font_height);
term_out();
term_update();
break;
case WM_KILLFOCUS:
has_focus = FALSE;
+ DestroyCaret();
term_out();
term_update();
break;
}
/*
+ * Move the system caret. (We maintain one, even though it's
+ * invisible, for the benefit of blind people: apparently some
+ * helper software tracks the system caret, so we should arrange to
+ * have one.)
+ */
+void sys_cursor(int x, int y) {
+ SetCaretPos(x * font_width, y * font_height);
+}
+
+/*
* Draw a line of text in the window, at given character
* coordinates, in given attributes.
*