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:
parent
f80f9d4299
commit
4f3def030a
1
putty.h
1
putty.h
@ -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
|
||||
|
||||
/*
|
||||
|
@ -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];
|
||||
|
12
window.c
12
window.c
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user