1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00

Add an invisible System Caret for blind-helper-software to track

[originally from svn r627]
This commit is contained in:
Simon Tatham 2000-09-25 16:17:53 +00:00
parent f80f9d4299
commit 4f3def030a
3 changed files with 15 additions and 1 deletions

View File

@ -249,6 +249,7 @@ void connection_fatal(char *, ...);
void fatalbox (char *, ...);
void beep (int);
void begin_session(void);
void sys_cursor(int x, int y);
#define OPTIMISE_IS_SCROLL 1
/*

View File

@ -211,6 +211,7 @@ void term_update(void) {
seen_disp_event = seen_key_event = 0;
}
do_paint (ctx, TRUE);
sys_cursor(curs_x, curs_y + (scrtop - disptop) / (cols+1));
free_ctx (ctx);
}
}
@ -1695,7 +1696,7 @@ static int linecmp (unsigned long *a, unsigned long *b) {
* 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];

View File

@ -1269,11 +1269,13 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
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;
@ -1447,6 +1449,16 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
return DefWindowProc (hwnd, message, wParam, lParam);
}
/*
* 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.