~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rene Post's other patch: PuTTYgen was generating double file dialogs
[sgt/putty]
/
terminal.c
diff --git
a/terminal.c
b/terminal.c
index
8e012f5
..
5f6cdb1
100644
(file)
--- a/
terminal.c
+++ b/
terminal.c
@@
-321,8
+321,15
@@
void term_reconfig(Terminal *term, Config *cfg)
term->alt_wrap = term->wrap = term->cfg.wrap_mode;
if (reset_decom)
term->alt_om = term->dec_om = term->cfg.dec_om;
term->alt_wrap = term->wrap = term->cfg.wrap_mode;
if (reset_decom)
term->alt_om = term->dec_om = term->cfg.dec_om;
- if (reset_bce)
+ if (reset_bce)
{
term->use_bce = term->cfg.bce;
term->use_bce = term->cfg.bce;
+ if (term->use_bce)
+ term->erase_char = (' ' | ATTR_ASCII |
+ (term->curr_attr &
+ (ATTR_FGMASK | ATTR_BGMASK)));
+ else
+ term->erase_char = ERASE_CHAR;
+ }
if (reset_blink)
term->blink_is_real = term->cfg.blinktext;
if (reset_charclass)
if (reset_blink)
term->blink_is_real = term->cfg.blinktext;
if (reset_charclass)
@@
-2604,7
+2611,8
@@
void term_out(Terminal *term)
*/
break;
case 20:
*/
break;
case 20:
- if (term->ldisc) {
+ if (term->ldisc &&
+ !term->cfg.no_remote_qtitle) {
p = get_window_title(term->frontend, TRUE);
len = strlen(p);
ldisc_send(term->ldisc, "\033]L", 3, 0);
p = get_window_title(term->frontend, TRUE);
len = strlen(p);
ldisc_send(term->ldisc, "\033]L", 3, 0);
@@
-2613,7
+2621,8
@@
void term_out(Terminal *term)
}
break;
case 21:
}
break;
case 21:
- if (term->ldisc) {
+ if (term->ldisc &&
+ !term->cfg.no_remote_qtitle) {
p = get_window_title(term->frontend,FALSE);
len = strlen(p);
ldisc_send(term->ldisc, "\033]l", 3, 0);
p = get_window_title(term->frontend,FALSE);
len = strlen(p);
ldisc_send(term->ldisc, "\033]l", 3, 0);
@@
-4511,7
+4520,7
@@
void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
case PK_END: xkey = 'E'; break;
case PK_PAGEUP: xkey = 'I'; break;
case PK_PAGEDOWN: xkey = 'G'; break;
case PK_END: xkey = 'E'; break;
case PK_PAGEUP: xkey = 'I'; break;
case PK_PAGEDOWN: xkey = 'G'; break;
- default:
break; /* else gcc warns `enum value not used'
*/
+ default:
xkey=0; break; /* else gcc warns `enum value not used'
*/
}
p += sprintf((char *) p, "\x1B%c", xkey);
goto done;
}
p += sprintf((char *) p, "\x1B%c", xkey);
goto done;
@@
-4524,7
+4533,7
@@
void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
case PK_END: code = 4; break;
case PK_PAGEUP: code = 5; break;
case PK_PAGEDOWN: code = 6; break;
case PK_END: code = 4; break;
case PK_PAGEUP: code = 5; break;
case PK_PAGEDOWN: code = 6; break;
- default: break; /* else gcc warns `enum value not used' */
+ default:
code = 0;
break; /* else gcc warns `enum value not used' */
}
p += sprintf((char *) p, "\x1B[%d~", code);
goto done;
}
p += sprintf((char *) p, "\x1B[%d~", code);
goto done;
@@
-4568,7
+4577,7
@@
void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
case PK_RIGHT: xkey = 'C'; break;
case PK_LEFT: xkey = 'D'; break;
case PK_REST: xkey = 'G'; break; /* centre key on number pad */
case PK_RIGHT: xkey = 'C'; break;
case PK_LEFT: xkey = 'D'; break;
case PK_REST: xkey = 'G'; break; /* centre key on number pad */
- default: break; /* else gcc warns `enum value not used' */
+ default:
xkey = 0;
break; /* else gcc warns `enum value not used' */
}
if (term->vt52_mode)
p += sprintf((char *) p, "\x1B%c", xkey);
}
if (term->vt52_mode)
p += sprintf((char *) p, "\x1B%c", xkey);
@@
-4705,13
+4714,8
@@
int term_ldisc(Terminal *term, int option)
return FALSE;
}
return FALSE;
}
-/*
- * from_backend(), to get data from the backend for the terminal.
- */
-int from_backend(void *vterm, int is_stderr, const char *data, int len)
+int term_data(Terminal *term, int is_stderr, const char *data, int len)
{
{
- Terminal *term = (Terminal *)vterm;
-
assert(len > 0);
bufchain_add(&term->inbuf, data, len);
assert(len > 0);
bufchain_add(&term->inbuf, data, len);