mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-06-30 11:02:48 -05:00
Make the `vtmode' config option work under X. In the process I've
had to move another of its values out into wincfg.c - paradoxically, this was the `font has X encoding' option! (Because the Unix font handling code expects to be able to tell for _itself_ whether it has a font with X-encoded line drawing glyphs.) [originally from svn r3145]
This commit is contained in:
@ -2394,7 +2394,8 @@ void setup_fonts_ucs(struct gui_data *inst)
|
||||
inst->font_height = inst->fonts[0]->ascent + inst->fonts[0]->descent;
|
||||
|
||||
inst->direct_to_font = init_ucs(&inst->ucsdata,
|
||||
inst->cfg.line_codepage, font_charset);
|
||||
inst->cfg.line_codepage, font_charset,
|
||||
inst->cfg.vtmode);
|
||||
}
|
||||
|
||||
void set_geom_hints(struct gui_data *inst)
|
||||
@ -2531,7 +2532,8 @@ void change_settings_menuitem(GtkMenuItem *item, gpointer data)
|
||||
strcmp(oldcfg.boldfont.name, cfg2.boldfont.name) ||
|
||||
strcmp(oldcfg.widefont.name, cfg2.widefont.name) ||
|
||||
strcmp(oldcfg.wideboldfont.name, cfg2.wideboldfont.name) ||
|
||||
strcmp(oldcfg.line_codepage, cfg2.line_codepage)) {
|
||||
strcmp(oldcfg.line_codepage, cfg2.line_codepage) ||
|
||||
oldcfg.vtmode != cfg2.vtmode) {
|
||||
setup_fonts_ucs(inst);
|
||||
need_size = 1;
|
||||
} else
|
||||
|
@ -115,7 +115,7 @@ void (*putty_signal(int sig, void (*func)(int)))(int);
|
||||
*/
|
||||
struct unicode_data;
|
||||
int init_ucs(struct unicode_data *ucsdata,
|
||||
char *line_codepage, int font_charset);
|
||||
char *line_codepage, int font_charset, int vtmode);
|
||||
|
||||
/*
|
||||
* Spare function exported directly from uxnet.c.
|
||||
|
@ -13,17 +13,6 @@
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
*
|
||||
* - Go through all the config options and ensure they can all be
|
||||
* configured and reconfigured properly.
|
||||
* + icon title appears to be a non-option on Unix.
|
||||
* + Why the hell did I faff about disabling two of the vtmode
|
||||
* options? The rest aren't used either in pterm! Work out
|
||||
* whether they should be, and how they can be.
|
||||
* + Refresh in the codepage combo is badly broken.
|
||||
* + `Don't translate line drawing chars' ?? What is this crap?
|
||||
* It does nothing at all, and where's the option to paste as
|
||||
* lqqqk? What was I smoking?
|
||||
*
|
||||
* - Better control of the individual config box features.
|
||||
* + SSH packet logging shouldn't be mentioned in pterm, and in
|
||||
|
14
unix/uxucs.c
14
unix/uxucs.c
@ -107,7 +107,7 @@ int wc_to_mb(int codepage, int flags, wchar_t *wcstr, int wclen,
|
||||
* Return value is TRUE if pterm is to run in direct-to-font mode.
|
||||
*/
|
||||
int init_ucs(struct unicode_data *ucsdata,
|
||||
char *linecharset, int font_charset)
|
||||
char *linecharset, int font_charset, int vtmode)
|
||||
{
|
||||
int i, ret = 0;
|
||||
|
||||
@ -176,8 +176,18 @@ int init_ucs(struct unicode_data *ucsdata,
|
||||
0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524, 0x2534, 0x252c,
|
||||
0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00b7, 0x0020
|
||||
};
|
||||
static const wchar_t unitab_xterm_poorman[32] =
|
||||
L"*#****o~**+++++-----++++|****L. ";
|
||||
|
||||
const wchar_t *ptr;
|
||||
|
||||
if (vtmode == VT_POORMAN)
|
||||
ptr = unitab_xterm_poorman;
|
||||
else
|
||||
ptr = unitab_xterm_std;
|
||||
|
||||
if (i >= 0x5F && i < 0x7F)
|
||||
ucsdata->unitab_xterm[i] = unitab_xterm_std[i & 0x1F];
|
||||
ucsdata->unitab_xterm[i] = ptr[i & 0x1F];
|
||||
else
|
||||
ucsdata->unitab_xterm[i] = ucsdata->unitab_line[i];
|
||||
}
|
||||
|
Reference in New Issue
Block a user