diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2011-11-16 21:14:26 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2011-11-16 21:14:26 +0000 |
commit | 719a93c880bb75189371605a0773a1f9b77ed26a (patch) | |
tree | 47cd29735024b7e2361ff7038dc2095bc7ab1d9c /app/xterm | |
parent | e2b9e6a531074d39884bbfb9fceea5452477e6e1 (diff) |
Update to xterm 276. Tested by ajacoutot@, krw@, naddy@, shadchin@.
Diffstat (limited to 'app/xterm')
-rw-r--r-- | app/xterm/MANIFEST | 2 | ||||
-rw-r--r-- | app/xterm/fontutils.c | 253 | ||||
-rw-r--r-- | app/xterm/main.c | 23 | ||||
-rw-r--r-- | app/xterm/main.h | 8 | ||||
-rw-r--r-- | app/xterm/menu.c | 18 | ||||
-rw-r--r-- | app/xterm/misc.c | 21 | ||||
-rw-r--r-- | app/xterm/package/debian/changelog | 6 | ||||
-rw-r--r-- | app/xterm/package/xterm.spec | 4 | ||||
-rw-r--r-- | app/xterm/trace.c | 8 | ||||
-rw-r--r-- | app/xterm/util.c | 22 | ||||
-rw-r--r-- | app/xterm/version.h | 4 | ||||
-rw-r--r-- | app/xterm/xterm.h | 3 | ||||
-rw-r--r-- | app/xterm/xterm.log.html | 24 | ||||
-rw-r--r-- | app/xterm/xterm.man | 11 |
14 files changed, 263 insertions, 144 deletions
diff --git a/app/xterm/MANIFEST b/app/xterm/MANIFEST index d94167350..b17561bd0 100644 --- a/app/xterm/MANIFEST +++ b/app/xterm/MANIFEST @@ -1,4 +1,4 @@ -MANIFEST for xterm-275, version xterm-275 +MANIFEST for xterm-276, version xterm-276 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode diff --git a/app/xterm/fontutils.c b/app/xterm/fontutils.c index b22d63459..a689b910d 100644 --- a/app/xterm/fontutils.c +++ b/app/xterm/fontutils.c @@ -1,4 +1,4 @@ -/* $XTermId: fontutils.c,v 1.368 2011/09/11 13:22:34 tom Exp $ */ +/* $XTermId: fontutils.c,v 1.378 2011/10/10 23:46:00 tom Exp $ */ /* * Copyright 1998-2010,2011 by Thomas E. Dickey @@ -52,7 +52,7 @@ #include <ctype.h> #define SetFontWidth(screen,dst,src) (dst)->f_width = (src) -#define SetFontHeight(screen,dst,src) (dst)->f_height = (int)((screen)->scale_height * (float) (src)) +#define SetFontHeight(screen,dst,src) (dst)->f_height = dimRound((screen)->scale_height * (float) (src)) /* from X11/Xlibint.h - not all vendors install this file */ #define CI_NONEXISTCHAR(cs) (((cs)->width == 0) && \ @@ -116,8 +116,12 @@ typedef struct { char *end; } FontNameProperties; +#if OPT_RENDERFONT +static void fillInFaceSize(XtermWidget, int); +#endif + #if OPT_SHIFT_FONTS -static void lookupOneFontSize(XtermWidget, int); +static int lookupOneFontSize(XtermWidget, int); #endif #if OPT_WIDE_CHARS @@ -1256,6 +1260,25 @@ xtermLoadFont(XtermWidget xw, bad: if (tmpname) free(tmpname); + +#if OPT_RENDERFONT + if (x_strcasecmp(myfonts.f_n, DEFFONT)) { + int code; + + myfonts.f_n = DEFFONT; + TRACE(("...recovering for TrueType fonts\n")); + code = xtermLoadFont(xw, &myfonts, doresize, fontnum); + if (code) { + SetItemSensitivity(fontMenuEntries[fontnum].widget, + UsingRenderFont(xw)); + TRACE(("...recovered size %dx%d\n", + FontHeight(screen), + FontWidth(screen))); + } + return code; + } +#endif + releaseWindowGCs(xw, win); xtermCloseFonts(xw, fnts); @@ -1744,7 +1767,7 @@ xtermOpenXft(XtermWidget xw, const char *name, XftPattern * pat, const char *tag * (Newton Raphson). */ static double -mySquareRoot(double value) +dimSquareRoot(double value) { double result = 0.0; if (value > 0.0) { @@ -1863,18 +1886,22 @@ setFaceName(XtermWidget xw, const char *value) { TScreen *screen = TScreenOf(xw); int n; + Boolean changed = ((xw->misc.face_name == 0) + || strcmp(xw->misc.face_name, value)); - xw->misc.face_name = x_strdup(value); - for (n = 0; n < NMENUFONTS; ++n) { - xw->misc.face_size[n] = -1.0; - xtermCloseXft(screen, &(screen->renderFontNorm[n])); - xtermCloseXft(screen, &(screen->renderFontBold[n])); - xtermCloseXft(screen, &(screen->renderFontBold[n])); + if (changed) { + xw->misc.face_name = x_strdup(value); + for (n = 0; n < NMENUFONTS; ++n) { + xw->misc.face_size[n] = -1.0; + xtermCloseXft(screen, &(screen->renderFontNorm[n])); + xtermCloseXft(screen, &(screen->renderFontBold[n])); + xtermCloseXft(screen, &(screen->renderFontBold[n])); #if OPT_RENDERWIDE - xtermCloseXft(screen, &(screen->renderWideNorm[n])); - xtermCloseXft(screen, &(screen->renderWideBold[n])); - xtermCloseXft(screen, &(screen->renderWideItal[n])); + xtermCloseXft(screen, &(screen->renderWideNorm[n])); + xtermCloseXft(screen, &(screen->renderWideBold[n])); + xtermCloseXft(screen, &(screen->renderWideItal[n])); #endif + } } } #endif @@ -1916,66 +1943,14 @@ xtermComputeFontInfo(XtermWidget xw, if (norm == 0 && face_name) { XftPattern *pat; - double face_size = xw->misc.face_size[fontnum]; + double face_size; - TRACE(("xtermComputeFontInfo font %d: norm(face %s, size %f)\n", + TRACE(("xtermComputeFontInfo font %d: norm(face %s, size %.1f)\n", fontnum, face_name, xw->misc.face_size[fontnum])); - if (face_size <= 0.0) { -#if OPT_SHIFT_FONTS - /* - * If the user is switching font-sizes, make it follow by - * default the same ratios to the default as the fixed fonts - * would, for easy comparison. There will be some differences - * since the fixed fonts have a variety of height/width ratios, - * but this is simpler than adding another resource value - and - * as noted above, the data for the fixed fonts are available. - */ - lookupOneFontSize(xw, 0); - lookupOneFontSize(xw, fontnum); - if (fontnum == fontMenu_default) { - face_size = 14.0; - } else { - double ratio; - long num = screen->menu_font_sizes[fontnum]; - long den = screen->menu_font_sizes[0]; - - if (den <= 0) - den = 1; - ratio = mySquareRoot((double) num / (double) den); - - face_size = (ratio * xw->misc.face_size[0]); - TRACE(("scaled using %3ld/%ld = %.2f -> %f\n", - num, den, ratio, face_size)); - } -#else - switch (fontnum) { - case fontMenu_font1: - face_size = 8.0; - break; - case fontMenu_font2: - face_size = 10.0; - break; - case fontMenu_font3: - face_size = 12.0; - break; - default: - face_size = 14.0; - break; - case fontMenu_font4: - face_size = 16.0; - break; - case fontMenu_font5: - face_size = 18.0; - break; - case fontMenu_font6: - face_size = 20.0; - break; - } -#endif - xw->misc.face_size[fontnum] = (float) face_size; - } + fillInFaceSize(xw, fontnum); + face_size = xw->misc.face_size[fontnum]; /* * By observation (there is no documentation), XftPatternBuild is @@ -2742,7 +2717,7 @@ dec2ucs(unsigned ch) #endif /* OPT_WIDE_CHARS */ #if OPT_SHIFT_FONTS -static void +static int lookupOneFontSize(XtermWidget xw, int fontnum) { TScreen *screen = TScreenOf(xw); @@ -2752,13 +2727,23 @@ lookupOneFontSize(XtermWidget xw, int fontnum) memset(&fnt, 0, sizeof(fnt)); screen->menu_font_sizes[fontnum] = -1; - if (xtermOpenFont(xw, screen->MenuFontName(fontnum), &fnt, fwAlways, True)) { + if (xtermOpenFont(xw, + screen->MenuFontName(fontnum), + &fnt, + ((fontnum <= fontMenu_lastBuiltin) + ? fwAlways + : fwResource), + True)) { if (fontnum <= fontMenu_lastBuiltin - || strcmp(fnt.fn, DEFFONT)) + || strcmp(fnt.fn, DEFFONT)) { screen->menu_font_sizes[fontnum] = FontSize(fnt.fs); + if (screen->menu_font_sizes[fontnum] <= 0) + screen->menu_font_sizes[fontnum] = -1; + } xtermCloseFont(xw, &fnt); } } + return (screen->menu_font_sizes[fontnum] > 0); } /* @@ -2770,32 +2755,110 @@ lookupFontSizes(XtermWidget xw) int n; for (n = 0; n < NMENUFONTS; n++) { - lookupOneFontSize(xw, n); + (void) lookupOneFontSize(xw, n); } } #if OPT_RENDERFONT -#define NMENU_RENDERFONTS (NMENUFONTS - 2) /* no selection or escape */ +static void +fillInFaceSize(XtermWidget xw, int fontnum) +{ + TScreen *screen = TScreenOf(xw); + float value; + double face_size = xw->misc.face_size[fontnum]; + + if (face_size <= 0.0) { +#if OPT_SHIFT_FONTS + /* + * If the user is switching font-sizes, make it follow by + * default the same ratios to the default as the fixed fonts + * would, for easy comparison. There will be some differences + * since the fixed fonts have a variety of height/width ratios, + * but this is simpler than adding another resource value - and + * as noted above, the data for the fixed fonts are available. + */ + (void) lookupOneFontSize(xw, 0); + if (fontnum == fontMenu_default) { + sscanf(DEFFACESIZE, "%f", &value); + face_size = value; + } else if (lookupOneFontSize(xw, fontnum) + && (screen->menu_font_sizes[0] + != screen->menu_font_sizes[fontnum])) { + double ratio; + long num = screen->menu_font_sizes[fontnum]; + long den = screen->menu_font_sizes[0]; + + if (den <= 0) + den = 1; + ratio = dimSquareRoot((double) num / (double) den); + + face_size = (ratio * xw->misc.face_size[0]); + TRACE(("scaled[%d] using %3ld/%ld = %.2f -> %f\n", + fontnum, num, den, ratio, face_size)); + } else +#endif + { +#define LikeBitmap(s) (((s) / 78.0) * xw->misc.face_size[fontMenu_default]) + switch (fontnum) { + case fontMenu_font1: + face_size = LikeBitmap(2.0); + break; + case fontMenu_font2: + face_size = LikeBitmap(35.0); + break; + case fontMenu_font3: + face_size = LikeBitmap(60.0); + break; + default: + sscanf(DEFFACESIZE, "%f", &value); + face_size = value; + break; + case fontMenu_font4: + face_size = LikeBitmap(90.0); + break; + case fontMenu_font5: + face_size = LikeBitmap(135.0); + break; + case fontMenu_font6: + face_size = LikeBitmap(200.0); + break; + } + TRACE(("builtin[%d] -> %f\n", fontnum, face_size)); + } + xw->misc.face_size[fontnum] = (float) face_size; + } +} + +/* no selection or escape */ +#define NMENU_RENDERFONTS (fontMenu_lastBuiltin + 1) + +/* + * Workaround for breakage in font-packages - check if all of the bitmap font + * sizes are the same, and if we're using TrueType fonts. + */ static Boolean useFaceSizes(XtermWidget xw) { Boolean result = False; int n; + TRACE(("useFaceSizes {{\n")); if (UsingRenderFont(xw)) { - result = True; + Boolean nonzero = True; + for (n = 0; n < NMENU_RENDERFONTS; ++n) { if (xw->misc.face_size[n] <= 0.0) { - result = False; + nonzero = False; break; } } - if (!result) { + if (!nonzero) { Boolean broken_fonts = True; TScreen *screen = TScreenOf(xw); - long first = screen->menu_font_sizes[0]; + long first; lookupFontSizes(xw); + first = screen->menu_font_sizes[0]; for (n = 0; n < NMENUFONTS; n++) { if (screen->menu_font_sizes[n] > 0 && screen->menu_font_sizes[n] != first) { @@ -2804,46 +2867,21 @@ useFaceSizes(XtermWidget xw) } } - /* - * Workaround for breakage in font-packages - check if all of the - * bitmap font sizes are the same, and if we're using TrueType - * fonts. - */ if (broken_fonts) { - float lo_value = (float) 9.0e9; - float hi_value = (float) 0.0; - float value; TRACE(("bitmap fonts are broken - set faceSize resources\n")); for (n = 0; n < NMENUFONTS; n++) { - value = xw->misc.face_size[n]; - if (value > 0.0) { - if (lo_value > value) - lo_value = value; - if (hi_value < value) - hi_value = value; - } + fillInFaceSize(xw, n); } - if (hi_value <= 0.0) - sscanf(DEFFACESIZE, "%f", &value); - else - value = (float) ((hi_value + lo_value) / 2.0); - if (value <= 0) - value = (float) 14.0; - - for (n = 0; n < NMENUFONTS; n++) { - TRACE(("setting faceSize%d %.1f\n", n, value)); - xw->misc.face_size[n] = value; - value = (float) (value * 1.1); - } - result = True; } } + result = True; } + TRACE(("...}}useFaceSizes %d\n", result)); return result; } -#endif +#endif /* OPT_RENDERFONT */ /* * Find the index of a larger/smaller font (according to the sign of 'relative' @@ -2862,6 +2900,7 @@ lookupRelativeFontSize(XtermWidget xw, int old, int relative) TRACE(("...using FaceSize\n")); if (relative != 0) { for (n = 0; n < NMENU_RENDERFONTS; ++n) { + fillInFaceSize(xw, n); if (xw->misc.face_size[n] > 0 && xw->misc.face_size[n] != xw->misc.face_size[old]) { int cmp_0 = ((xw->misc.face_size[n] > diff --git a/app/xterm/main.c b/app/xterm/main.c index 44644797b..4cff21bf0 100644 --- a/app/xterm/main.c +++ b/app/xterm/main.c @@ -1,4 +1,4 @@ -/* $XTermId: main.c,v 1.667 2011/09/11 21:02:37 tom Exp $ */ +/* $XTermId: main.c,v 1.669 2011/10/09 14:14:51 tom Exp $ */ /* * Copyright 2002-2010,2011 by Thomas E. Dickey @@ -1402,7 +1402,7 @@ countArg(XrmOptionDescRec * item) return result; } -#define isOption(string) ((string)[0] == '-' || (string)[0] == '+') +#define isOption(string) (Boolean)((string)[0] == '-' || (string)[0] == '+') /* * Parse the argument list, more/less as XtInitialize, etc., would do, so we @@ -1459,36 +1459,37 @@ parseArg(int *num, char **argv, char **valuep) Boolean exact = False; int ambiguous1 = -1; int ambiguous2 = -1; + char *option; + char *value; #define ITEM(n) ((Cardinal)(n) < XtNumber(optionDescList) \ ? &optionDescList[n] \ : &opTable[(Cardinal)(n) - XtNumber(optionDescList)]) - if (argv[*num] != 0) { + if ((option = argv[*num]) != 0) { Boolean need_value; Boolean have_value = False; - TRACE(("parseArg %s\n", argv[*num])); - if (argv[(*num) + 1] != 0) { - char *value = argv[(*num) + 1]; + TRACE(("parseArg %s\n", option)); + if ((value = argv[(*num) + 1]) != 0) { have_value = (Boolean) ! isOption(value); } for (inlist = 0; inlist < limit; ++inlist) { XrmOptionDescRec *check = ITEM(inlist); - test = matchArg(check, argv[*num]); + test = matchArg(check, option); if (test < 0) continue; /* check for exact match */ if ((test + 1) == (int) strlen(check->option)) { if (check->argKind == XrmoptionStickyArg) { - if (strlen(argv[*num]) > strlen(check->option)) { + if (strlen(option) > strlen(check->option)) { exact = True; atbest = (int) inlist; break; } - } else if ((test + 1) == (int) strlen(argv[*num])) { + } else if ((test + 1) == (int) strlen(option)) { exact = True; atbest = (int) inlist; break; @@ -1497,7 +1498,9 @@ parseArg(int *num, char **argv, char **valuep) need_value = (Boolean) (test > 0 && countArg(check) > 0); - if (need_value ^ have_value) { + if (need_value && value != 0) { + ; + } else if (need_value ^ have_value) { TRACE(("...skipping, need %d vs have %d\n", need_value, have_value)); continue; } diff --git a/app/xterm/main.h b/app/xterm/main.h index 75a105ef5..bf4e333d0 100644 --- a/app/xterm/main.h +++ b/app/xterm/main.h @@ -1,7 +1,7 @@ -/* $XTermId: main.h,v 1.54 2010/06/20 20:22:32 tom Exp $ */ +/* $XTermId: main.h,v 1.56 2011/10/07 01:01:33 tom Exp $ */ /* - * Copyright 2000-2009,2010 by Thomas E. Dickey + * Copyright 2000-2010,2011 by Thomas E. Dickey * * All Rights Reserved * @@ -95,10 +95,6 @@ #define DEFFACESIZE "14.0" #endif -#ifndef DEFFACESIZE -#define DEFFACESIZE_AUTO "8.0" -#endif - #ifndef DEF_ALLOW_COLOR #define DEF_ALLOW_COLOR True #endif diff --git a/app/xterm/menu.c b/app/xterm/menu.c index b064a7287..c66b63fa5 100644 --- a/app/xterm/menu.c +++ b/app/xterm/menu.c @@ -1,4 +1,4 @@ -/* $XTermId: menu.c,v 1.297 2011/09/11 13:15:18 tom Exp $ */ +/* $XTermId: menu.c,v 1.300 2011/10/09 14:14:23 tom Exp $ */ /* * Copyright 1999-2010,2011 by Thomas E. Dickey @@ -2566,6 +2566,19 @@ HandleFontLoading(Widget w, #endif #if OPT_RENDERFONT +static void +update_fontmenu(XtermWidget xw) +{ + TScreen *screen = TScreenOf(xw); + int n; + + for (n = 0; n <= fontMenu_lastBuiltin; ++n) { + Boolean active = (Boolean) (xw->misc.render_font || + (screen->menu_font_sizes[n] >= 0)); + SetItemSensitivity(fontMenuEntries[n].widget, active); + } +} + void HandleRenderFont(Widget w, XEvent * event GCC_UNUSED, @@ -2578,6 +2591,8 @@ HandleRenderFont(Widget w, handle_vt_toggle(do_font_renderfont, xw->misc.render_font, params, *param_count, w); + + update_fontmenu(xw); } #endif @@ -3519,6 +3534,7 @@ update_font_renderfont(void) (term->misc.render_font == True)); SetItemSensitivity(fontMenuEntries[fontMenu_render_font].widget, !IsEmpty(term->misc.face_name)); + update_fontmenu(term); } #endif diff --git a/app/xterm/misc.c b/app/xterm/misc.c index 50dd097c7..d2c171794 100644 --- a/app/xterm/misc.c +++ b/app/xterm/misc.c @@ -1,4 +1,4 @@ -/* $XTermId: misc.c,v 1.548 2011/09/11 20:18:45 tom Exp $ */ +/* $XTermId: misc.c,v 1.550 2011/10/09 14:13:41 tom Exp $ */ /* * Copyright 1999-2010,2011 by Thomas E. Dickey @@ -4318,6 +4318,9 @@ Cleanup(int code) } #ifndef VMS +#ifndef PATH_MAX +#define PATH_MAX 512 /* ... is not defined consistently in Xos.h */ +#endif char * xtermFindShell(char *leaf, Bool warning) { @@ -4327,7 +4330,21 @@ xtermFindShell(char *leaf, Bool warning) char *result = leaf; TRACE(("xtermFindShell(%s)\n", leaf)); - if (*result != '\0' && strchr("+/-", *result) == 0) { + + if (!strncmp("./", result, (size_t) 2) + || !strncmp("../", result, (size_t) 3)) { + size_t need = PATH_MAX; + size_t used = strlen(result) + 2; + char *buffer = malloc(used + need); + if (buffer != 0) { + if (getcwd(buffer, need) != 0) { + sprintf(buffer + strlen(buffer), "/%s", result); + result = buffer; + } else { + free(buffer); + } + } + } else if (*result != '\0' && strchr("+/-", *result) == 0) { /* find it in $PATH */ if ((s = x_getenv("PATH")) != 0) { if ((tmp = TypeMallocN(char, strlen(leaf) + strlen(s) + 2)) != 0) { diff --git a/app/xterm/package/debian/changelog b/app/xterm/package/debian/changelog index 8cf2248b3..869a49b06 100644 --- a/app/xterm/package/debian/changelog +++ b/app/xterm/package/debian/changelog @@ -1,3 +1,9 @@ +xterm-dev (276) unstable; urgency=low + + * Regressions in #272, #274. + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 28 Sep 2011 17:34:20 -0400 + xterm-dev (275) unstable; urgency=low * Regressions in #272, #274. diff --git a/app/xterm/package/xterm.spec b/app/xterm/package/xterm.spec index c7104958a..c7566818d 100644 --- a/app/xterm/package/xterm.spec +++ b/app/xterm/package/xterm.spec @@ -1,7 +1,7 @@ -# $XTermId: xterm.spec,v 1.17 2011/09/11 13:46:07 tom Exp $ +# $XTermId: xterm.spec,v 1.18 2011/09/28 21:33:43 tom Exp $ Summary: A text-based Web browser Name: xterm-dev -Version: 275 +Version: 276 Release: 1 License: X11 Group: Applications/Internet diff --git a/app/xterm/trace.c b/app/xterm/trace.c index 6a6fbb772..c43b5f81c 100644 --- a/app/xterm/trace.c +++ b/app/xterm/trace.c @@ -1,4 +1,4 @@ -/* $XTermId: trace.c,v 1.131 2011/09/11 14:59:35 tom Exp $ */ +/* $XTermId: trace.c,v 1.132 2011/10/07 09:40:46 tom Exp $ */ /* * Copyright 1997-2010,2011 by Thomas E. Dickey @@ -106,9 +106,11 @@ Trace(const char *fmt,...) fprintf(trace_fp, "%s\n", xtermVersion()); TraceIds(NULL, 0); } + if (!trace_fp) { + fprintf(stderr, "Cannot open \"%s\"\n", name); + exit(EXIT_FAILURE); + } } - if (!trace_fp) - abort(); va_start(ap, fmt); vfprintf(trace_fp, fmt, ap); diff --git a/app/xterm/util.c b/app/xterm/util.c index ca6d48032..ec10f0c0a 100644 --- a/app/xterm/util.c +++ b/app/xterm/util.c @@ -1,4 +1,4 @@ -/* $XTermId: util.c,v 1.546 2011/08/31 00:10:07 tom Exp $ */ +/* $XTermId: util.c,v 1.548 2011/10/09 22:10:45 tom Exp $ */ /* * Copyright 1999-2010,2011 by Thomas E. Dickey @@ -2607,11 +2607,14 @@ xtermSetClipRectangles(Display * dpy, #define beginXftClipping(screen,px,py,plength) \ if (screen->use_clipping && (FontWidth(screen) > 2)) { \ XRectangle clip; \ + double adds = (screen->scale_height - 1.0) * FontHeight(screen); \ + int height = dimRound(adds + FontHeight(screen)); \ + int descnt = dimRound(adds / 2.0) + FontDescent(screen); \ int clip_x = px; \ - int clip_y = py - FontHeight(screen) + FontDescent(screen); \ + int clip_y = py - height + descnt; \ clip.x = 0; \ clip.y = 0; \ - clip.height = (unsigned short) (FontHeight(screen)); \ + clip.height = (unsigned short) height; \ clip.width = (unsigned short) (FontWidth(screen) * plength); \ XftDrawSetClipRectangles (screen->renderDraw, \ clip_x, clip_y, \ @@ -4014,3 +4017,16 @@ extendedBoolean(const char *value, FlagList * table, Cardinal limit) TRACE(("extendedBoolean(%s) = %d\n", value, result)); return result; } + +/* + * Something like round() from math library, but round() is less widely-used + * than xterm. Also, there are no negative numbers to complicate this. + */ +int +dimRound(double value) +{ + int result = (int) value; + if (result < value) + ++result; + return result; +} diff --git a/app/xterm/version.h b/app/xterm/version.h index ae3ab6eb4..e6214da23 100644 --- a/app/xterm/version.h +++ b/app/xterm/version.h @@ -1,4 +1,4 @@ -/* $XTermId: version.h,v 1.334 2011/09/11 14:59:33 tom Exp $ */ +/* $XTermId: version.h,v 1.335 2011/09/28 20:56:08 tom Exp $ */ /* * Copyright 1998-2010,2011 by Thomas E. Dickey @@ -36,7 +36,7 @@ * version of X to which this version of xterm has been built. The number in * parentheses is my patch number (Thomas E. Dickey). */ -#define XTERM_PATCH 275 +#define XTERM_PATCH 276 #ifndef __vendorversion__ #define __vendorversion__ "XTerm/OpenBSD" diff --git a/app/xterm/xterm.h b/app/xterm/xterm.h index 36d2bc04e..1e896b1b8 100644 --- a/app/xterm/xterm.h +++ b/app/xterm/xterm.h @@ -1,4 +1,4 @@ -/* $XTermId: xterm.h,v 1.661 2011/09/11 14:59:22 tom Exp $ */ +/* $XTermId: xterm.h,v 1.662 2011/10/09 21:58:44 tom Exp $ */ /* * Copyright 1999-2010,2011 by Thomas E. Dickey @@ -1231,6 +1231,7 @@ extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, unsigned extern int AddToRefresh (XtermWidget /* xw */); extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */); +extern int dimRound (double /* value */); extern int drawXtermText (XtermWidget /* xw */, unsigned /* flags */, GC /* gc */, int /* x */, int /* y */, int /* chrset */, IChar * /* text */, Cardinal /* len */, int /* on_wide */); extern int extendedBoolean(const char * /* value */, FlagList * /* table */, Cardinal /* limit */); extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */); diff --git a/app/xterm/xterm.log.html b/app/xterm/xterm.log.html index a1b7127b7..bfd361418 100644 --- a/app/xterm/xterm.log.html +++ b/app/xterm/xterm.log.html @@ -31,7 +31,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * ***************************************************************************** - $XTermId: xterm.log.html,v 1.1101 2011/09/12 00:50:25 tom Exp $ + $XTermId: xterm.log.html,v 1.1107 2011/10/11 00:55:31 tom Exp $ --> <HTML> <HEAD> @@ -58,6 +58,7 @@ Most of these are summarized in the XFree86 CHANGELOG is the latest version of this file. <UL> +<LI><A HREF="#xterm_276">Patch #276 - 2011/10/10</A> <LI><A HREF="#xterm_275">Patch #275 - 2011/09/11</A> <LI><A HREF="#xterm_274">Patch #274 - 2011/09/05</A> <LI><A HREF="#xterm_273">Patch #273 - 2011/08/25</A> @@ -336,6 +337,27 @@ is the latest version of this file. <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A> </UL> +<H1><A NAME="xterm_276">Patch #276 - 2011/10/10</A></H1> +<ul> + <li>modify clipping limits for TrueType fonts to account for the + <code>scaleHeight</code> resource setting, to work around another + problem due to recent FreeType changes. In this case, the + <code>DejaVu Sans Mono</code> set to pixelsize=13.5 + is truncated because the font descent is reduced by FreeType to + match an incorrect height metric (report by Adam Lee). + + <li>improve recovery when bitmap fonts are not installed, e.g., so + that switching font-sizes works for TrueType fonts. + + <li>modify lookup for <code>XTERM_SHELL</code> feature to allow + relative pathnames. + + <li>modify abbreviation disambiguation check + for command-line parameters to account for <code>-geometry</code>, + whose parameter may begin with "+" or "-" + (report by Scott Bertilson). +</ul> + <H1><A NAME="xterm_275">Patch #275 - 2011/09/11</A></H1> <ul> <li>add <code>ash</code>, <code>zsh</code> to known shells for diff --git a/app/xterm/xterm.man b/app/xterm/xterm.man index 44f2e5357..024f05b54 100644 --- a/app/xterm/xterm.man +++ b/app/xterm/xterm.man @@ -1,5 +1,5 @@ '\" t -.\" $XTermId: xterm.man,v 1.510 2011/09/04 23:54:12 tom Exp $ +.\" $XTermId: xterm.man,v 1.511 2011/10/03 22:23:26 tom Exp $ .\" .\" Copyright 1996-2010,2011 by Thomas E. Dickey .\" @@ -267,9 +267,10 @@ Normally \fIxterm\fP checks the SHELL variable. If that is not set, \fIxterm\fP tries to use the shell program specified in the password file. If that is not set, \fIxterm\fP uses \fI/bin/sh\fP. -If the parameter names an executable file, \fIxterm\fP uses that instead. -The parameter must be an absolute path, or name a file found on the user's -PATH (and thereby construct an absolute path). +If the parameter is not a relative path, i.e., +beginning with \*(``./\*('' or \*(``../\*('', +\fIxterm\fP looks for the file in the user's PATH. +In either case, it constructs an absolute path. The \fB\-e\fP option cannot be used with this parameter since it uses all parameters following the option. .PP @@ -1410,7 +1411,7 @@ The default is \*(``true\*(''. .TP 8 .B "scaleHeight (\fPclass\fB ScaleHeight)" Scale line-height values by the resource value, -which is limited to \*(``0.9\*'' to \*(``1.5\*''. +which is limited to \*(``0.9\*('' to \*(``1.5\*(''. The default value is \*(``1.0\*('', .TP 8 .B "scoFunctionKeys (\fPclass\fB ScoFunctionKeys)" |