diff options
author | mrdotx | 2021-05-16 20:52:25 +0200 |
---|---|---|
committer | mrdotx | 2021-05-16 20:52:25 +0200 |
commit | a14718eaceb662057aa3d636b2406e392a1e7074 (patch) | |
tree | 832876799eccf0f2a89d6eef31535d7222822baa | |
parent | 0243ece8b90ba561d926ccd6fdaa38b84e9a93ec (diff) | |
download | aur-a14718eaceb662057aa3d636b2406e392a1e7074.tar.gz |
update to 9.26
- 24-bit-color.patch rewritten to work with version 9.26
- removed perl-segfault.patch, included in 9.26
- removed sgr-mouse-mode.patch, included in 9.26
-rw-r--r-- | .SRCINFO | 21 | ||||
-rw-r--r-- | 24-bit-color.patch | 723 | ||||
-rw-r--r-- | PKGBUILD | 61 | ||||
-rw-r--r-- | enable-wide-glyphs.patch | 94 | ||||
-rw-r--r-- | improve-font-rendering.patch | 104 | ||||
-rw-r--r-- | perl-segfault.patch | 33 | ||||
-rw-r--r-- | sgr-mouse-mode.patch | 90 |
7 files changed, 479 insertions, 647 deletions
@@ -1,12 +1,13 @@ pkgbase = rxvt-unicode-truecolor-wide-glyphs - pkgdesc = Unicode enabled rxvt-clone terminal emulator (urxvt) with true color and enhanced glyphs support - pkgver = 9.22 - pkgrel = 4 + pkgdesc = Unicode enabled rxvt-clone terminal emulator (urxvt) with true color, enhanced glyphs and improved font rendering support + pkgver = 9.26 + pkgrel = 1 url = http://software.schmorp.de/pkg/rxvt-unicode.html arch = i686 arch = x86_64 license = GPL depends = libxft + depends = libxt depends = perl depends = startup-notification optdepends = gtk2-perl: to use the urxvt-tabbed @@ -19,28 +20,24 @@ pkgbase = rxvt-unicode-truecolor-wide-glyphs conflicts = urxvt-resize-font conflicts = urxvt-perls conflicts = urxvt-perls-git - source = http://dist.schmorp.de/rxvt-unicode/rxvt-unicode-9.22.tar.bz2 + source = http://dist.schmorp.de/rxvt-unicode/rxvt-unicode-9.26.tar.bz2 source = urxvt.desktop source = urxvtc.desktop source = urxvt-tabbed.desktop source = resize-font source = keyboard-select - source = sgr-mouse-mode.patch source = 24-bit-color.patch source = enable-wide-glyphs.patch source = improve-font-rendering.patch - source = perl-segfault.patch - sha1sums = e575b869782fbfed955f84f48b204ec888d91ba1 + sha1sums = d325d8cdea6bcb8e0b8b219b8451bf5c690b6c62 sha1sums = b5a4507f85ebb7bac589db2e07d9bc40106720d9 sha1sums = 62c4ffecfce6967def394dd4d418b68652372ea2 sha1sums = cd204d608d114d39c80331efe0af0231ad6b7e18 sha1sums = a61366659c73bd551fa99a8415bb71e033897598 sha1sums = 9883d0c31b45f8521829ea6a2041f2e9eb7abe6a - sha1sums = dfbc8729c545105eff21e20ef3a4a3841a68a192 - sha1sums = 9f5db305863b17175e72f9e2d4a78d0d7f25fd34 - sha1sums = d9f3b52b273d13fbd4089a7869ab2e70bf190bc9 - sha1sums = 2f976cfbb4ae092d331e169b56ec6423b198f462 - sha1sums = 361f4649596342d07311c2590b809b85b3a918ee + sha1sums = 560097c0d6377461fcbe4c109f3113a6bcb38982 + sha1sums = c5ee4a50902d8c8d278938b080464a16d2c6af56 + sha1sums = 772b62071d73c0021adf334f037b95ef13d34317 pkgname = rxvt-unicode-truecolor-wide-glyphs diff --git a/24-bit-color.patch b/24-bit-color.patch index b3b587f77bcf..d66181e9dcb0 100644 --- a/24-bit-color.patch +++ b/24-bit-color.patch @@ -1,43 +1,9 @@ ---- README.configure -+++ README.configure -@@ -9,8 +9,8 @@ CONFIGURE OPTIONS - - --enable-everything - Add (or remove) support for all non-multichoice options listed in -- "./configure --help", except for "--enable-assert" and -- "--enable-256-color". -+ "./configure --help", except for "--enable-assert", -+ "--enable-256-color" and "--enable-24-bit-color". - - You can specify this and then disable options you do not like by - *following* this with the appropriate "--disable-..." arguments, or -@@ -251,6 +251,20 @@ CONFIGURE OPTIONS - dramatically when more than six fonts are in use by a terminal - instance. - -+ --enable-24-bit-color (default: off) -+ Enable use of 24-bit colors through -+ SGR 38 ; 2 ; R ; G ; B m -+ SGR 48 ; 2 ; R ; G ; B m -+ -+ This switch should break termcap/terminfo compatibility to -+ "TERM=rxvt-unicode-256color", and consequently set "TERM" to -+ "rxvt-unicode-24bit" by default but there is no termcap/terminfo -+ for 24-bit color support -+ -+ It also results in higher memory usage and can slow down urxvt -+ dramatically when more than six fonts are in use by a terminal -+ instance. -+ - --with-name=NAME (default: urxvt) - Set the basename for the installed binaries, resulting in "urxvt", - "urxvtd" etc.). Specify "--with-name=rxvt" to replace with "rxvt". --- config.h.in +++ config.h.in -@@ -380,6 +380,9 @@ +@@ -395,6 +395,9 @@ /* Define if you want 256-color support */ #undef USE_256_COLORS - + +/* Define if you want 24-bit color support */ +#undef USE_24_BIT_COLOR + @@ -46,7 +12,7 @@ # undef _ALL_SOURCE --- configure +++ configure -@@ -713,6 +713,7 @@ enable_everything +@@ -740,6 +740,7 @@ enable_assert enable_warnings enable_256_color @@ -54,7 +20,7 @@ enable_unicode3 enable_combining enable_xft -@@ -1386,6 +1387,7 @@ Optional Features: +@@ -1421,6 +1422,7 @@ --enable-assert enable assertions --enable-warnings turn on g++ warnings --enable-256-color enable 256-color support @@ -62,13 +28,14 @@ --enable-unicode3 use 21 instead of 16 bits to represent unicode characters --enable-combining enable composition of base and combining characters --enable-xft enable xft support on systems that have it -@@ -4820,6 +4822,20 @@ $as_echo "#define USE_256_COLORS 1" >>confdefs.h - +@@ -5283,6 +5285,21 @@ + fi - + +support_24_bit_color=no +# Check whether --enable-24-bit-color was given. -+if test "${enable_24_bit_color+set}" = set; then : ++if test ${enable_24_bit_color+y} ++then : + enableval=$enable_24_bit_color; if test x$enableval = xyes; then + support_24_bit_color=yes + fi @@ -76,19 +43,19 @@ + +if test x$support_24_bit_color = xyes; then + -+$as_echo "#define USE_24_BIT_COLOR 1" >>confdefs.h ++printf "%s\n" "#define USE_24_BIT_COLOR 1" >>confdefs.h + +fi + # Check whether --enable-unicode3 was given. - if test "${enable_unicode3+set}" = set; then : - enableval=$enable_unicode3; if test x$enableval = xyes -o x$enableval = xno; then + if test ${enable_unicode3+y} + then : --- configure.ac +++ configure.ac -@@ -201,6 +201,16 @@ if test x$support_256_color = xyes; then +@@ -203,6 +203,16 @@ AC_DEFINE(USE_256_COLORS, 1, Define if you want 256-color support) fi - + +support_24_bit_color=no +AC_ARG_ENABLE(24-bit-color, + [ --enable-24-bit-color enable 24-bit color support], @@ -102,44 +69,49 @@ AC_ARG_ENABLE(unicode3, [ --enable-unicode3 use 21 instead of 16 bits to represent unicode characters], [if test x$enableval = xyes -o x$enableval = xno; then ---- src/background.C -+++ src/background.C -@@ -312,7 +312,7 @@ rxvt_term::render_image (rxvt_image &image) - img->draw (bg_img, PictOpOver, image.alpha * 1. / 0xffff); - - XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); -- img->convert_format (format, pix_colors [Color_bg])->replace (img); -+ img->convert_format (format, lookup_color(Color_bg, pix_colors))->replace (img); - - delete bg_img; - bg_img = img; -@@ -471,7 +471,7 @@ rxvt_term::render_root_image () - } - - XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); -- img->convert_format (format, pix_colors [Color_bg])->replace (img); -+ img->convert_format (format, lookup_color(Color_bg, pix_colors))->replace (img); - - delete bg_img; - bg_img = img; -@@ -520,7 +520,7 @@ rxvt_term::bg_init () - root_effects.set_blur (rs [Rs_blurradius]); - - if (ISSET_PIXCOLOR (Color_tint)) -- root_effects.set_tint (pix_colors_focused [Color_tint]); -+ root_effects.set_tint (lookup_color(Color_tint, pix_colors_focused)); - - if (rs [Rs_shade]) - root_effects.set_shade (rs [Rs_shade]); +--- README.configure ++++ README.configure +@@ -9,8 +9,8 @@ + + --enable-everything + Add (or remove) support for all non-multichoice options listed in +- "./configure --help", except for "--enable-assert" and +- "--enable-256-color". ++ "./configure --help", except for "--enable-assert", ++ "--enable-256-color" and "--enable-24-bit-color". + + You can specify this and then disable options you do not like by + *following* this with the appropriate "--disable-..." arguments, or +@@ -251,6 +251,20 @@ + + It also results in higher memory usage and can slow down urxvt + dramatically when more than six fonts are in use by a terminal ++ instance. ++ ++ --enable-24-bit-color (default: off) ++ Enable use of 24-bit colors through ++ SGR 38 ; 2 ; R ; G ; B m ++ SGR 48 ; 2 ; R ; G ; B m ++ ++ This switch should break termcap/terminfo compatibility to ++ "TERM=rxvt-unicode-256color", and consequently set "TERM" to ++ "rxvt-unicode-24bit" by default but there is no termcap/terminfo ++ for 24-bit color support ++ ++ It also results in higher memory usage and can slow down urxvt ++ dramatically when more than six fonts are in use by a terminal + instance. + + --with-name=NAME (default: urxvt) --- src/command.C +++ src/command.C -@@ -1843,11 +1843,11 @@ rxvt_term::update_fade_color (unsigned int idx, bool first_time) +@@ -1824,11 +1824,11 @@ if (rs[Rs_fade]) { if (!first_time) - pix_colors_focused [idx].free (this); + lookup_color(idx, pix_colors_focused).free (this); - + rgba c; - pix_colors [Color_fade].get (c); - pix_colors_focused [idx].fade (this, atoi (rs[Rs_fade]), pix_colors_unfocused [idx], c); @@ -148,38 +120,34 @@ } #endif } -@@ -3334,7 +3334,7 @@ rxvt_term::process_color_seq (int report, int color, const char *str, char resp) - if (str[0] == '?' && !str[1]) - { +@@ -3411,7 +3411,7 @@ + return; + rgba c; - pix_colors_focused[color].get (c); + lookup_color(color, pix_colors_focused).get (c); - + color -= minCOLOR; + #if XFT - if (c.a != rgba::MAX_CC) -@@ -3482,7 +3482,7 @@ rxvt_term::process_xterm_seq (int op, char *str, char resp) - bool changed = false; - - if (ISSET_PIXCOLOR (Color_tint)) -- changed = root_effects.set_tint (pix_colors_focused [Color_tint]); -+ changed = root_effects.set_tint (lookup_color(Color_tint, pix_colors_focused)); - - if (changed) - update_background (); -@@ -3876,7 +3876,7 @@ rxvt_term::process_sgr_mode (unsigned int nargs, const int *arg) +@@ -3906,7 +3906,7 @@ { unsigned int i; short rendset; - int rendstyle; + rend_t rendstyle; - + if (nargs == 0) { -@@ -3969,6 +3969,14 @@ rxvt_term::process_sgr_mode (unsigned int nargs, const int *arg) - scr_color ((unsigned int) (minCOLOR + arg[i + 2]), Color_fg); - i += 2; - } +@@ -4012,6 +4012,20 @@ + break; + + case 38: // set fg color, ISO 8613-6 +#if USE_24_BIT_COLOR ++ if (nargs > i + 2 && arg[i + 1] == 5) ++ { ++ scr_color ((unsigned int) (minCOLOR + arg[i + 2]), Color_fg); ++ i += 2; ++ } + else if (nargs > i + 4 && arg[i + 1] == 2) + { + unsigned int r = arg[i + 2], g = arg[i + 3], b = arg[i + 4]; @@ -187,64 +155,65 @@ + i += 4; + } +#endif - break; - case 39: /* default fg */ - scr_color (Color_fg, Color_fg); -@@ -3990,6 +3998,14 @@ rxvt_term::process_sgr_mode (unsigned int nargs, const int *arg) - scr_color ((unsigned int) (minCOLOR + arg[i + 2]), Color_bg); - i += 2; - } ++ break; + case 48: // set bg color, ISO 8613-6 + { + unsigned int fgbg = arg[i] == 38 ? Color_fg : Color_bg; +@@ -4024,6 +4038,14 @@ + + scr_color (idx, fgbg); + } +#if USE_24_BIT_COLOR -+ else if (nargs > i + 4 && arg[i + 1] == 2) -+ { -+ unsigned int r = arg[i + 2], g = arg[i + 3], b = arg[i + 4]; -+ scr_color_rgb (r, g, b, Color_bg); -+ i += 4; -+ } ++ else if (nargs > i + 4 && arg[i + 1] == 2) ++ { ++ unsigned int r = arg[i + 2], g = arg[i + 3], b = arg[i + 4]; ++ scr_color_rgb (r, g, b, Color_bg); ++ i += 4; ++ } +#endif - break; - case 49: /* default bg */ - scr_color (Color_bg, Color_bg); + else if (nargs > i + 4 && arg[i + 1] == 2) + { + unsigned int r = arg[i + 2]; --- src/init.C +++ src/init.C -@@ -1068,7 +1068,7 @@ rxvt_term::get_colors () - +@@ -1110,7 +1110,7 @@ + for (i = 0; i < NRS_COLORS; i++) if (const char *name = rs[Rs_color + i]) - set_color (pix_colors [i], name); + set_color (lookup_color(i, pix_colors), name); - + /* * get scrollBar shadow colors -@@ -1077,13 +1077,13 @@ rxvt_term::get_colors () +@@ -1119,13 +1119,13 @@ * from the fvwm window manager. */ #ifdef RXVT_SCROLLBAR - pix_colors [Color_scroll].fade (this, 50, pix_colors [Color_bottomShadow]); + lookup_color(Color_scroll, pix_colors).fade (this, 50, lookup_color(Color_bottomShadow, pix_colors)); - + rgba cscroll; - pix_colors [Color_scroll].get (cscroll); + lookup_color(Color_scroll, pix_colors).get (cscroll); - + /* topShadowColor */ - if (!pix_colors[Color_topShadow].set (this, + if (!lookup_color(Color_topShadow, pix_colors).set (this, rgba ( min ((int)rgba::MAX_CC, max (cscroll.r / 5, cscroll.r) * 7 / 5), min ((int)rgba::MAX_CC, max (cscroll.g / 5, cscroll.g) * 7 / 5), -@@ -1325,8 +1325,8 @@ rxvt_term::create_windows (int argc, const char *const *argv) +@@ -1367,8 +1367,8 @@ window_calc (0, 0); - + /* sub-window placement & size in rxvt_term::resize_all_windows () */ - attributes.background_pixel = pix_colors_focused [Color_border]; - attributes.border_pixel = pix_colors_focused [Color_border]; + attributes.background_pixel = lookup_color(Color_border, pix_colors_focused); + attributes.border_pixel = lookup_color(Color_border, pix_colors_focused); attributes.colormap = cmap; - + top = XCreateWindow (dpy, parent, -@@ -1412,8 +1412,8 @@ rxvt_term::create_windows (int argc, const char *const *argv) +@@ -1465,8 +1465,8 @@ window_vt_x, window_vt_y, vt_width, vt_height, 0, @@ -252,23 +221,23 @@ - pix_colors_focused[Color_bg]); + lookup_color(Color_fg, pix_colors_focused), + lookup_color(Color_bg, pix_colors_focused)); - + attributes.bit_gravity = NorthWestGravity; XChangeWindowAttributes (dpy, vt, CWBitGravity, &attributes); -@@ -1430,8 +1430,8 @@ rxvt_term::create_windows (int argc, const char *const *argv) +@@ -1483,8 +1483,8 @@ vt_ev.start (display, vt); - + /* graphics context for the vt window */ - gcvalue.foreground = pix_colors[Color_fg]; - gcvalue.background = pix_colors[Color_bg]; + gcvalue.foreground = lookup_color(Color_fg, pix_colors); + gcvalue.background = lookup_color(Color_bg, pix_colors); gcvalue.graphics_exposures = 0; - + gc = XCreateGC (dpy, vt, --- src/main.C +++ src/main.C -@@ -254,10 +254,10 @@ rxvt_term::~rxvt_term () +@@ -248,10 +248,10 @@ for (int i = 0; i < TOTAL_COLORS; i++) if (ISSET_PIXCOLOR (i)) { @@ -280,38 +249,38 @@ + lookup_color(i, pix_colors_unfocused).free (this); #endif } - -@@ -971,8 +971,8 @@ rxvt_term::set_window_color (int idx, const char *color) + +@@ -965,8 +965,8 @@ } } - + - pix_colors_focused[idx].free (this); - set_color (pix_colors_focused[idx], color); + lookup_color(idx, pix_colors_focused).free (this); + set_color (lookup_color(idx, pix_colors_focused), color); - + done: /*TODO: handle Color_BD, scrollbar background, etc. */ -@@ -989,12 +989,12 @@ rxvt_term::recolor_cursor () +@@ -983,12 +983,12 @@ XColor fg, bg; - + (ISSET_PIXCOLOR (Color_pointer_fg) - ? pix_colors_focused[Color_pointer_fg] - : pix_colors_focused[Color_fg]).get (fg); + ? lookup_color(Color_pointer_fg, pix_colors_focused) + : lookup_color(Color_fg, pix_colors_focused)).get (fg); - + (ISSET_PIXCOLOR (Color_pointer_bg) - ? pix_colors_focused[Color_pointer_bg] - : pix_colors_focused[Color_bg]).get (bg); + ? lookup_color(Color_pointer_bg, pix_colors_focused) + : lookup_color(Color_bg, pix_colors_focused)).get (bg); - + XRecolorCursor (dpy, TermWin_cursor, &fg, &bg); } -@@ -1013,14 +1013,14 @@ rxvt_term::get_colorfgbg () +@@ -1007,14 +1007,14 @@ char *env_colorfgbg; - + for (i = Color_Black; i <= Color_White; i++) - if (pix_colors[Color_fg] == pix_colors[i]) + if (lookup_color(Color_fg, pix_colors) == lookup_color(i, pix_colors)) @@ -319,14 +288,14 @@ sprintf (fstr, "%d", i - Color_Black); break; } - + for (i = Color_Black; i <= Color_White; i++) - if (pix_colors[Color_bg] == pix_colors[i]) + if (lookup_color(Color_bg, pix_colors) == lookup_color(i, pix_colors)) { sprintf (bstr, "%d", i - Color_Black); - #if BG_IMAGE_FROM_FILE -@@ -1049,8 +1049,8 @@ rxvt_term::set_color (rxvt_color &color, const char *name) + #if HAVE_IMG +@@ -1043,8 +1043,8 @@ void rxvt_term::alias_color (int dst, int src) { @@ -335,9 +304,9 @@ + lookup_color(dst, pix_colors).free (this); + lookup_color(dst, pix_colors).set (this, rs[Rs_color + dst] = rs[Rs_color + src]); } - - /* -------------------------------------------------------------------- * -@@ -1188,8 +1188,8 @@ rxvt_term::set_widthheight (unsigned int newwidth, unsigned int newheight) + + #ifdef SMART_RESIZE +@@ -1198,8 +1198,8 @@ void rxvt_term::im_set_color (unsigned long &fg, unsigned long &bg) { @@ -346,11 +315,128 @@ + fg = lookup_color(Color_fg, pix_colors); + bg = lookup_color(Color_bg, pix_colors); } - + void +--- src/rxvtfont.C ++++ src/rxvtfont.C +@@ -243,20 +243,20 @@ + + # ifdef HAVE_IMG + if (term->bg_img +- && !term->pix_colors[color].is_opaque () ++ && !term->lookup_color(color, term->pix_colors).is_opaque () + && ((dst = XftDrawPicture (d)))) + { + XClearArea (disp, d, x, y, w, h, false); + +- Picture solid_color_pict = XftDrawSrcPicture (d, &term->pix_colors[color].c); ++ Picture solid_color_pict = XftDrawSrcPicture (d, &term->lookup_color(color, term->pix_colors).c); + XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, x, y, w, h); + } + else + # endif +- XftDrawRect (d, &term->pix_colors[color].c, x, y, w, h); ++ XftDrawRect (d, &term->lookup_color(color, term->pix_colors).c, x, y, w, h); + + #else +- XSetForeground (disp, gc, term->pix_colors[color]); ++ XSetForeground (disp, gc, term->lookup_color(color, term->pix_colors)); + XFillRectangle (disp, d, gc, x, y, w, h); + #endif + } +@@ -342,7 +342,7 @@ + + clear_rect (d, x, y, term->fwidth * len, term->fheight, bg); + +- XSetForeground (disp, gc, term->pix_colors[fg]); ++ XSetForeground (disp, gc, term->lookup_color(fg, term->pix_colors)); + + while (len) + { +@@ -1053,7 +1053,7 @@ + int base = ascent; // sorry, incorrect: term->fbase; + + XGCValues v; +- v.foreground = term->pix_colors[fg]; ++ v.foreground = term->lookup_color(fg, term->pix_colors); + v.font = f->fid; + + if (enc2b) +@@ -1062,7 +1062,7 @@ + + if (bg == Color_bg && !slow) + { +- v.background = term->pix_colors[bg]; ++ v.background = term->lookup_color(bg, term->pix_colors); + XChangeGC (disp, gc, GCForeground | GCBackground | GCFont, &v); + XDrawImageString16 (disp, d, gc, x, y + base, xc, len); + } +@@ -1094,7 +1094,7 @@ + + if (bg == Color_bg && !slow) + { +- v.background = term->pix_colors[bg]; ++ v.background = term->lookup_color(bg, term->pix_colors); + XChangeGC (disp, gc, GCForeground | GCBackground | GCFont, &v); + XDrawImageString (disp, d, gc, x, y + base, xc, len); + } +@@ -1417,7 +1417,7 @@ + + if (term->bg_img + && (bg == Color_transparent || bg == Color_bg +- || (bg >= 0 && !term->pix_colors[bg].is_opaque () && ((dst = XftDrawPicture (d2)))))) ++ || (bg >= 0 && !term->lookup_color(bg, term->pix_colors).is_opaque () && ((dst = XftDrawPicture (d2)))))) + { + int src_x = x, src_y = y; + +@@ -1454,7 +1454,7 @@ + + if (dst) + { +- Picture solid_color_pict = XftDrawSrcPicture (d2, &term->pix_colors[bg].c); ++ Picture solid_color_pict = XftDrawSrcPicture (d2, &term->lookup_color(bg, term->pix_colors).c); + + // dst can only be set when bg >= 0 + XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, 0, 0, w, h); +@@ -1462,9 +1462,9 @@ + } + else + #endif +- XftDrawRect (d2, &term->pix_colors[bg >= 0 ? bg : Color_bg].c, 0, 0, w, h); ++ XftDrawRect (d2, &term->lookup_color(bg >= 0 ? bg : Color_bg, term->pix_colors).c, 0, 0, w, h); + +- XftDrawGlyphSpec (d2, &term->pix_colors[fg].c, f, enc, ep - enc); ++ XftDrawGlyphSpec (d2, &term->lookup_color(fg, term->pix_colors).c, f, enc, ep - enc); + XCopyArea (disp, d2, d, gc, 0, 0, w, h, x, y); + } + else +@@ -1473,7 +1473,7 @@ + else + { + clear_rect (d, x, y, w, h, bg); +- XftDrawGlyphSpec (d, &term->pix_colors[fg].c, f, enc, ep - enc); ++ XftDrawGlyphSpec (d, &term->lookup_color(fg, term->pix_colors).c, f, enc, ep - enc); + } + } + +--- src/rxvtfont.h ++++ src/rxvtfont.h +@@ -72,8 +72,10 @@ + char *fontdesc; + + // must be power-of-two - 1, also has to match RS_fontMask in rxvt.h +-#if USE_256_COLORS +- enum { fontCount = 7 }; // 2 extra colors bits, 2 fewer fontcount bits ++#if USE_24_BIT_COLOR ++ enum { fontCount = 7 }; // 36 extra colors bits, 2 fewer fontcount bits ++#elif USE_256_COLORS ++ enum { fontCount = 7 }; // 2 extra colors bits, 2 fewer fontcount bits + #else + enum { fontCount = 31 }; + #endif --- src/rxvt.h +++ src/rxvt.h -@@ -39,7 +39,11 @@ typedef uint32_t text_t; +@@ -39,7 +39,11 @@ #else typedef uint16_t text_t; // saves lots of memory #endif @@ -361,10 +447,10 @@ +#endif typedef int32_t tlen_t; // was int16_t, but this results in smaller code and memory use typedef int32_t tlen_t_; // specifically for use in the line_t structure - -@@ -411,43 +415,52 @@ enum { + +@@ -342,43 +346,52 @@ #define RS_None 0 - + // GET_BGATTR depends on RS_fgShift > RS_bgShift -#define RS_colorMask ((1UL << Color_Bits) - 1UL) -#define RS_bgShift 0 @@ -376,7 +462,7 @@ +#define RS_fgShift (RS_bgShift + Color_Bits) +#define RS_bgMask ((rend_t) (RS_colorMask << RS_bgShift)) +#define RS_fgMask ((rend_t) (RS_colorMask << RS_fgShift)) - + // must have space for rxvt_fontset::fontCount * 2 + 2 values #define RS_fontShift (RS_fgShift + Color_Bits) -#define RS_Careful (1UL << RS_fontShift) /* be careful when drawing these */ @@ -385,11 +471,11 @@ +#define RS_Careful ((rend_t) (1UL << RS_fontShift)) /* be careful when drawing these */ +#define RS_fontCount ((rend_t) rxvt_fontset::fontCount) +#define RS_fontMask ((rend_t) ((RS_fontCount << (RS_fontShift + 1)) | RS_Careful)) // includes RS_Careful - + // toggle this to force redraw, must be != RS_Careful and otherwise "pretty neutral" -#define RS_redraw (2UL << RS_fontShift) +#define RS_redraw ((rend_t) (2UL << RS_fontShift)) - + -#define RS_Sel (1UL << 22) +#if USE_24_BIT_COLOR +# define RS_fontCountSize 4 @@ -401,27 +487,27 @@ + +#define RS_selShift (RS_fontShift + RS_fontCountSize) +#define RS_Sel ((rend_t) (1UL << RS_selShift)) - + // 4 custom bits for extensions #define RS_customCount 16UL -#define RS_customShift 23 -#define RS_customMask ((RS_customCount - 1UL) << RS_customShift) +#define RS_customShift (RS_selShift + 1) +#define RS_customMask ((rend_t) ((RS_customCount - 1UL) << RS_customShift)) - + // font styles -#define RS_Bold (1UL << RS_styleShift) -#define RS_Italic (2UL << RS_styleShift) +#define RS_Bold ((rend_t) (1UL << RS_styleShift)) +#define RS_Italic ((rend_t) (2UL << RS_styleShift)) - + -#define RS_styleCount 4 -#define RS_styleShift 27 -#define RS_styleMask (RS_Bold | RS_Italic) +#define RS_styleCount 4 +#define RS_styleShift (RS_customShift + RS_styleCount) +#define RS_styleMask ((rend_t) (RS_Bold | RS_Italic)) - + // fake styles -#define RS_Blink (1UL << 29) -#define RS_RVid (1UL << 30) // reverse video @@ -429,44 +515,44 @@ +#define RS_Blink ((rend_t) (1UL << (RS_styleShift + 2))) +#define RS_RVid ((rend_t) (1UL << (RS_styleShift + 3))) // reverse video +#define RS_Uline ((rend_t) (1UL << (RS_styleShift + 4))) // underline - + -#define RS_baseattrMask (RS_Italic | RS_Bold | RS_Blink | RS_RVid | RS_Uline) -#define RS_attrMask (RS_baseattrMask | RS_fontMask) +#define RS_baseattrMask ((rend_t) (RS_Italic | RS_Bold | RS_Blink | RS_RVid | RS_Uline)) +#define RS_attrMask ((rend_t) (RS_baseattrMask | RS_fontMask)) - + #define DEFAULT_RSTYLE (RS_None | (Color_fg << RS_fgShift) | (Color_bg << RS_bgShift)) #define OVERLAY_RSTYLE (RS_None | (Color_Black << RS_fgShift) | (Color_Yellow << RS_bgShift)) -@@ -599,7 +612,9 @@ enum colour_list { +@@ -528,7 +541,9 @@ #endif }; - + -#if USE_256_COLORS +#if USE_24_BIT_COLOR -+#define Color_Bits 25 ++# define Color_Bits 25 +#elif USE_256_COLORS - # define Color_Bits 9 // 0 .. maxTermCOLOR + # define Color_Bits 9 // 0 .. maxTermCOLOR24 #else - # define Color_Bits 7 // 0 .. maxTermCOLOR -@@ -729,21 +744,21 @@ typedef struct _mwmhints + # define Color_Bits 8 // 0 .. maxTermCOLOR24 +@@ -664,21 +679,21 @@ #define ROW(n) ROW_of (this, n) - + /* how to build & extract colors and attributes */ -#define GET_BASEFG(x) (((x) & RS_fgMask) >> RS_fgShift) -#define GET_BASEBG(x) (((x) & RS_bgMask) >> RS_bgShift) +#define GET_BASEFG(x) ((((rend_t) (x)) & RS_fgMask) >> RS_fgShift) +#define GET_BASEBG(x) ((((rend_t) (x)) & RS_bgMask) >> RS_bgShift) - + -#define GET_FONT(x) (((x) & RS_fontMask) >> RS_fontShift) -#define SET_FONT(x,fid) (((x) & ~RS_fontMask) | ((fid) << RS_fontShift)) +#define GET_FONT(x) ((((rend_t) (x)) & RS_fontMask) >> RS_fontShift) +#define SET_FONT(x,fid) ((((rend_t) (x)) & ~((rend_t) RS_fontMask)) | (((rend_t) (fid)) << RS_fontShift)) - + -#define GET_STYLE(x) (((x) & RS_styleMask) >> RS_styleShift) -#define SET_STYLE(x,style) (((x) & ~RS_styleMask) | ((style) << RS_styleShift)) +#define GET_STYLE(x) ((((rend_t) (x)) & RS_styleMask) >> RS_styleShift) +#define SET_STYLE(x,style) ((((rend_t) (x)) & ~((rend_t) RS_styleMask)) | (((rend_t) (style)) << RS_styleShift)) - + -#define GET_ATTR(x) (((x) & RS_attrMask)) -#define SET_FGCOLOR(x,fg) (((x) & ~RS_fgMask) | ((fg) << RS_fgShift)) -#define SET_BGCOLOR(x,bg) (((x) & ~RS_bgMask) | ((bg) << RS_bgShift)) @@ -475,149 +561,32 @@ +#define SET_FGCOLOR(x,fg) ((((rend_t) (x)) & ~((rend_t) RS_fgMask)) | (((rend_t) (fg)) << RS_fgShift)) +#define SET_BGCOLOR(x,bg) ((((rend_t) (x)) & ~((rend_t) RS_bgMask)) | (((rend_t) (bg)) << RS_bgShift)) +#define SET_ATTR(x,a) ((((rend_t) (x)) & ~((rend_t) RS_attrMask)) | ((rend_t) (a))) - + -#define RS_SAME(a,b) (!(((a) ^ (b)) & ~RS_Careful)) +#define RS_SAME(a,b) (!((((rend_t) (a)) ^ ((rend_t) (b))) & ~((rend_t) RS_Careful))) - + #define PIXCOLOR_NAME(idx) rs[Rs_color + (idx)] #define ISSET_PIXCOLOR(idx) (!!rs[Rs_color + (idx)]) -@@ -1503,7 +1518,12 @@ struct rxvt_term : zero_initialized, rxvt_vars, rxvt_screen - void scr_swap_screen () NOTHROW; +@@ -1413,7 +1428,12 @@ + void scr_swap_screen () noexcept; void scr_change_screen (int scrn); - void scr_color (unsigned int color, int fgbg) NOTHROW; -- void scr_rendition (int set, int style) NOTHROW; + void scr_color (unsigned int color, int fgbg) noexcept; +- void scr_rendition (int set, int style) noexcept; +#if USE_24_BIT_COLOR -+ void scr_color_24 (unsigned int color, int fgbg) NOTHROW; -+ void scr_color_rgb (unsigned int r, unsigned int g, unsigned int b, int fgbg) NOTHROW; ++ void scr_color_24 (unsigned int color, int fgbg) noexcept; ++ void scr_color_rgb (unsigned int r, unsigned int g, unsigned int b, int fgbg) noexcept; +#endif -+ rxvt_color &lookup_color (unsigned int color, rxvt_color *table) NOTHROW; -+ void scr_rendition (int set, rend_t style) NOTHROW; - void scr_add_lines (const wchar_t *str, int len, int minlines = 0) NOTHROW; - void scr_backspace () NOTHROW; - void scr_tab (int count, bool ht = false) NOTHROW; ---- src/rxvtfont.C -+++ src/rxvtfont.C -@@ -243,20 +243,20 @@ rxvt_font::clear_rect (rxvt_drawable &d, int x, int y, int w, int h, int color) - - # ifdef HAVE_BG_PIXMAP - if (term->bg_img -- && !term->pix_colors[color].is_opaque () -+ && !term->lookup_color(color, term->pix_colors).is_opaque () - && ((dst = XftDrawPicture (d)))) - { - XClearArea (disp, d, x, y, w, h, false); - -- Picture solid_color_pict = XftDrawSrcPicture (d, &term->pix_colors[color].c); -+ Picture solid_color_pict = XftDrawSrcPicture (d, &term->lookup_color(color, term->pix_colors).c); - XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, x, y, w, h); - } - else - # endif -- XftDrawRect (d, &term->pix_colors[color].c, x, y, w, h); -+ XftDrawRect (d, &term->lookup_color(color, term->pix_colors).c, x, y, w, h); - - #else -- XSetForeground (disp, gc, term->pix_colors[color]); -+ XSetForeground (disp, gc, term->lookup_color(color, term->pix_colors)); - XFillRectangle (disp, d, gc, x, y, w, h); - #endif - } -@@ -342,7 +342,7 @@ rxvt_font_default::draw (rxvt_drawable &d, int x, int y, - - clear_rect (d, x, y, term->fwidth * len, term->fheight, bg); - -- XSetForeground (disp, gc, term->pix_colors[fg]); -+ XSetForeground (disp, gc, term->lookup_color(fg, term->pix_colors)); - - while (len) - { -@@ -1053,7 +1053,7 @@ rxvt_font_x11::draw (rxvt_drawable &d, int x, int y, - int base = ascent; // sorry, incorrect: term->fbase; - - XGCValues v; -- v.foreground = term->pix_colors[fg]; -+ v.foreground = term->lookup_color(fg, term->pix_colors); - v.font = f->fid; - - if (enc2b) -@@ -1062,7 +1062,7 @@ rxvt_font_x11::draw (rxvt_drawable &d, int x, int y, - - if (bg == Color_bg && !slow) - { -- v.background = term->pix_colors[bg]; -+ v.background = term->lookup_color(bg, term->pix_colors); - XChangeGC (disp, gc, GCForeground | GCBackground | GCFont, &v); - XDrawImageString16 (disp, d, gc, x, y + base, xc, len); - } -@@ -1094,7 +1094,7 @@ rxvt_font_x11::draw (rxvt_drawable &d, int x, int y, - - if (bg == Color_bg && !slow) - { -- v.background = term->pix_colors[bg]; -+ v.background = term->lookup_color(bg, term->pix_colors); - XChangeGC (disp, gc, GCForeground | GCBackground | GCFont, &v); - XDrawImageString (disp, d, gc, x, y + base, xc, len); - } -@@ -1417,7 +1417,7 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, - - if (term->bg_img - && (bg == Color_transparent || bg == Color_bg -- || (bg >= 0 && !term->pix_colors[bg].is_opaque () && ((dst = XftDrawPicture (d2)))))) -+ || (bg >= 0 && !term->lookup_color(bg, term->pix_colors).is_opaque () && ((dst = XftDrawPicture (d2)))))) - { - int src_x = x, src_y = y; - -@@ -1454,7 +1454,7 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, - - if (dst) - { -- Picture solid_color_pict = XftDrawSrcPicture (d2, &term->pix_colors[bg].c); -+ Picture solid_color_pict = XftDrawSrcPicture (d2, &term->lookup_color(bg, term->pix_colors).c); - - // dst can only be set when bg >= 0 - XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, 0, 0, w, h); -@@ -1462,9 +1462,9 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, - } - else - #endif -- XftDrawRect (d2, &term->pix_colors[bg >= 0 ? bg : Color_bg].c, 0, 0, w, h); -+ XftDrawRect (d2, &term->lookup_color(bg >= 0 ? bg : Color_bg, term->pix_colors).c, 0, 0, w, h); - -- XftDrawGlyphSpec (d2, &term->pix_colors[fg].c, f, enc, ep - enc); -+ XftDrawGlyphSpec (d2, &term->lookup_color(fg, term->pix_colors).c, f, enc, ep - enc); - XCopyArea (disp, d2, d, gc, 0, 0, w, h, x, y); - } - else -@@ -1473,7 +1473,7 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, - else - { - clear_rect (d, x, y, w, h, bg); -- XftDrawGlyphSpec (d, &term->pix_colors[fg].c, f, enc, ep - enc); -+ XftDrawGlyphSpec (d, &term->lookup_color(fg, term->pix_colors).c, f, enc, ep - enc); - } - } - ---- src/rxvtfont.h -+++ src/rxvtfont.h -@@ -72,8 +72,10 @@ struct rxvt_fontset - char *fontdesc; - - // must be power-of-two - 1, also has to match RS_fontMask in rxvt.h --#if USE_256_COLORS -- enum { fontCount = 7 }; // 4 extra colors bits, 4 fewer fontcount bits -+#if USE_24_BIT_COLOR -+ enum { fontCount = 7 }; // 36 extra colors bits, 4 fewer fontcount bits -+#elif USE_256_COLORS -+ enum { fontCount = 7 }; // 4 extra colors bits, 4 fewer fontcount bits - #else - enum { fontCount = 127 }; - #endif ++ rxvt_color &lookup_color (unsigned int color, rxvt_color *table) noexcept; ++ void scr_rendition (int set, rend_t style) noexcept; + void scr_add_lines (const wchar_t *str, int len, int minlines = 0) noexcept; + void scr_backspace () noexcept; + void scr_tab (int count, bool ht = false) noexcept; --- src/rxvtperl.xs +++ src/rxvtperl.xs -@@ -789,6 +789,18 @@ MODULE = urxvt PACKAGE = urxvt - +@@ -795,6 +795,18 @@ + PROTOTYPES: ENABLE - + +TYPEMAP: <<END +rend_t T_UINT + @@ -633,10 +602,10 @@ BOOT: { sv_setsv (get_sv ("urxvt::LIBDIR", 1), newSVpvn (LIBDIR, sizeof (LIBDIR) - 1)); -@@ -1069,43 +1081,44 @@ NOW () +@@ -1105,43 +1117,43 @@ OUTPUT: RETVAL - + -int -GET_BASEFG (int rend) +rend_t @@ -645,7 +614,7 @@ RETVAL = GET_BASEFG (rend); OUTPUT: RETVAL - + -int -GET_BASEBG (int rend) +rend_t @@ -654,7 +623,7 @@ RETVAL = GET_BASEBG (rend); OUTPUT: RETVAL - + -int -SET_FGCOLOR (int rend, int new_color) +rend_t @@ -663,7 +632,7 @@ RETVAL = SET_FGCOLOR (rend, clamp (new_color, 0, TOTAL_COLORS - 1)); OUTPUT: RETVAL - + -int -SET_BGCOLOR (int rend, int new_color) +rend_t @@ -672,17 +641,16 @@ RETVAL = SET_BGCOLOR (rend, clamp (new_color, 0, TOTAL_COLORS - 1)); OUTPUT: RETVAL - + -int -GET_CUSTOM (int rend) +rend_t +GET_CUSTOM (rend_t rend) CODE: -+ RETVAL = (rend & RS_customMask) >> RS_customShift; OUTPUT: RETVAL - + -int -SET_CUSTOM (int rend, int new_value) +rend_t @@ -690,10 +658,10 @@ CODE: { if (!IN_RANGE_EXC (new_value, 0, RS_customCount)) -@@ -1515,8 +1528,8 @@ rxvt_term::vt_emask_add (U32 emask) +@@ -1555,8 +1567,8 @@ THIS->vt_emask_perl |= emask; THIS->vt_select_input (); - + -U32 -rxvt_term::rstyle (U32 new_rstyle = THIS->rstyle) +UV @@ -701,29 +669,29 @@ CODE: RETVAL = THIS->rstyle; THIS->rstyle = new_rstyle; -@@ -2003,10 +2016,10 @@ rxvt_term::cur_charset () +@@ -2043,10 +2055,10 @@ RETVAL - + void -rxvt_term::scr_xor_rect (int beg_row, int beg_col, int end_row, int end_col, U32 rstyle1 = RS_RVid, U32 rstyle2 = RS_RVid | RS_Uline) +rxvt_term::scr_xor_rect (int beg_row, int beg_col, int end_row, int end_col, rend_t rstyle1 = RS_RVid, rend_t rstyle2 = RS_RVid | RS_Uline) - + void -rxvt_term::scr_xor_span (int beg_row, int beg_col, int end_row, int end_col, U32 rstyle = RS_RVid) +rxvt_term::scr_xor_span (int beg_row, int beg_col, int end_row, int end_col, rend_t rstyle = RS_RVid) - + void rxvt_term::scr_bell () -@@ -2072,7 +2085,7 @@ rxvt_term::cmd_parse (SV *octets) +@@ -2112,7 +2124,7 @@ } - + SV * -rxvt_term::overlay (int x, int y, int w, int h, int rstyle = OVERLAY_RSTYLE, int border = 2) +rxvt_term::overlay (int x, int y, int w, int h, rend_t rstyle = OVERLAY_RSTYLE, int border = 2) CODE: { overlay *o = new overlay (THIS, x, y, w, h, rstyle, border); -@@ -2171,8 +2184,8 @@ Window +@@ -2211,8 +2223,8 @@ XCreateSimpleWindow (rxvt_term *term, Window parent, int x, int y, unsigned int width, unsigned int height) C_ARGS: term->dpy, (Window)parent, x, y, width, height, 0, @@ -731,29 +699,29 @@ - term->pix_colors_focused[Color_border] + term->lookup_color(Color_border, term->pix_colors_focused), + term->lookup_color(Color_border, term->pix_colors_focused) - + #endif - -@@ -2299,7 +2312,7 @@ rxvt_term::set_background (rxvt_img *img, bool border = false) + +@@ -2346,7 +2358,7 @@ img->reify () ->replace (img); - + - img->convert_format (XRenderFindVisualFormat (THIS->dpy, THIS->visual), THIS->pix_colors [Color_bg]) + img->convert_format (XRenderFindVisualFormat (THIS->dpy, THIS->visual), THIS->lookup_color(Color_bg, THIS->pix_colors)) ->replace (img); - + THIS->bg_img = img; --- src/screen.C +++ src/screen.C -@@ -625,12 +625,52 @@ rxvt_term::scr_color (unsigned int color, int fgbg) NOTHROW +@@ -626,12 +626,51 @@ rstyle = SET_BGCOLOR (rstyle, color); } - + +#if USE_24_BIT_COLOR +static rxvt_color *scr_colors[1 << 24]; + +void -+rxvt_term::scr_color_24 (unsigned int color, int fgbg) NOTHROW ++rxvt_term::scr_color_24 (unsigned int color, int fgbg) noexcept +{ + color += TOTAL_COLORS; + if (fgbg == Color_fg) @@ -763,7 +731,7 @@ +} + +void -+rxvt_term::scr_color_rgb (unsigned int r, unsigned int g, unsigned int b, int fgbg) NOTHROW ++rxvt_term::scr_color_rgb (unsigned int r, unsigned int g, unsigned int b, int fgbg) noexcept +{ + unsigned int color = (r << 16) + (g << 8) + b; + scr_color_24(color, fgbg); @@ -771,7 +739,7 @@ +#endif + +rxvt_color -+&rxvt_term::lookup_color (unsigned int color, rxvt_color *table) NOTHROW ++&rxvt_term::lookup_color (unsigned int color, rxvt_color *table) noexcept +{ +#if USE_24_BIT_COLOR + if (color >= TOTAL_COLORS) { @@ -788,19 +756,18 @@ + return table[color]; +} + -+ /* ------------------------------------------------------------------------- */ /* * Change the rendition style for following text */ void --rxvt_term::scr_rendition (int set, int style) NOTHROW -+rxvt_term::scr_rendition (int set, rend_t style) NOTHROW +-rxvt_term::scr_rendition (int set, int style) noexcept ++rxvt_term::scr_rendition (int set, rend_t style) noexcept { if (set) rstyle |= style; -@@ -1388,13 +1428,13 @@ rxvt_term::scr_erase_screen (int mode) NOTHROW - +@@ -1389,13 +1428,13 @@ + if (mapped) { - gcvalue.foreground = pix_colors[bgcolor_of (rstyle)]; @@ -815,10 +782,10 @@ XChangeGC (dpy, gc, GCForeground, &gcvalue); } } -@@ -1715,15 +1755,15 @@ rxvt_term::scr_rvideo_mode (bool on) NOTHROW - { - rvideo_state = on; - +@@ -1724,15 +1763,15 @@ + } + else + #endif - ::swap (pix_colors[Color_fg], pix_colors[Color_bg]); + ::swap (lookup_color(Color_fg, pix_colors), lookup_color(Color_bg, pix_colors)); #ifdef HAVE_IMG @@ -826,16 +793,16 @@ #endif - XSetWindowBackground (dpy, vt, pix_colors[Color_bg]); + XSetWindowBackground (dpy, vt, lookup_color(Color_bg, pix_colors)); - + XGCValues gcvalue; - gcvalue.foreground = pix_colors[Color_fg]; - gcvalue.background = pix_colors[Color_bg]; + gcvalue.foreground = lookup_color(Color_fg, pix_colors); + gcvalue.background = lookup_color(Color_bg, pix_colors); XChangeGC (dpy, gc, GCBackground | GCForeground, &gcvalue); - + scr_clear (); -@@ -2426,14 +2466,14 @@ rxvt_term::scr_refresh () NOTHROW +@@ -2430,14 +2469,14 @@ { if (showcursor && focus && row == screen.cur.row && IN_RANGE_EXC (col, cur_col, cur_col + cursorwidth)) @@ -850,10 +817,10 @@ #endif - XSetForeground (dpy, gc, pix_colors[fore]); + XSetForeground (dpy, gc, lookup_color(fore, pix_colors)); - + XDrawLine (dpy, vt, gc, xpixel, ypixel + font->ascent + 1, -@@ -2453,7 +2493,7 @@ rxvt_term::scr_refresh () NOTHROW +@@ -2457,7 +2496,7 @@ scr_set_char_rend (ROW(screen.cur.row), cur_col, cur_rend); else if (oldcursor.row >= 0) { @@ -862,16 +829,16 @@ if (cursor_type == 1) XFillRectangle (dpy, vt, gc, Col2Pixel (cur_col), -@@ -2463,7 +2503,7 @@ rxvt_term::scr_refresh () NOTHROW +@@ -2474,7 +2513,7 @@ } else if (oldcursor.row >= 0) { - XSetForeground (dpy, gc, pix_colors[ccol1]); + XSetForeground (dpy, gc, lookup_color(ccol1, pix_colors)); - + XDrawRectangle (dpy, vt, gc, Col2Pixel (cur_col), -@@ -2532,15 +2572,15 @@ rxvt_term::scr_recolor (bool refresh) NOTHROW +@@ -2543,15 +2582,15 @@ else # endif { @@ -888,9 +855,9 @@ + XSetWindowBackground (dpy, parent, lookup_color(Color_border, pix_colors)); + XSetWindowBackground (dpy, vt, lookup_color(Color_bg, pix_colors)); } - + XClearWindow (dpy, parent); -@@ -2550,7 +2590,7 @@ rxvt_term::scr_recolor (bool refresh) NOTHROW +@@ -2561,7 +2600,7 @@ if (transparent) XSetWindowBackgroundPixmap (dpy, scrollBar.win, ParentRelative); else @@ -899,31 +866,44 @@ scrollBar.state = SB_STATE_IDLE; scrollBar.show (0); } +--- src/scrollbar.C ++++ src/scrollbar.C +@@ -72,8 +72,8 @@ + total_width (), + term->szHint.height, + 0, +- term->pix_colors[Color_fg], +- term->pix_colors[color ()]); ++ term->lookup_color(Color_fg, term->pix_colors), ++ term->lookup_color(color (), term->pix_colors)); + XDefineCursor (term->dpy, win, leftptr_cursor); + + XSelectInput (term->dpy, win, --- src/scrollbar-next.C +++ src/scrollbar-next.C -@@ -154,15 +154,15 @@ scrollBar_t::init_next () - +@@ -154,15 +154,15 @@ + gcvalue.graphics_exposures = False; - + - gcvalue.foreground = term->pix_colors_focused[Color_Black]; + gcvalue.foreground = term->lookup_color(Color_Black, term->pix_colors_focused); blackGC = XCreateGC (term->dpy, win, GCForeground | GCGraphicsExposures, &gcvalue); - + - gcvalue.foreground = term->pix_colors_focused[Color_White]; + gcvalue.foreground = term->lookup_color(Color_White, term->pix_colors_focused); whiteGC = XCreateGC (term->dpy, win, GCForeground | GCGraphicsExposures, &gcvalue); - + - light = term->pix_colors_focused[Color_scroll]; + light = term->lookup_color(Color_scroll, term->pix_colors_focused); #if 0 //color used by rxvt if (color.set (term, rgba (0xaeba, 0xaaaa, 0xaeba))) -@@ -172,7 +172,7 @@ scrollBar_t::init_next () +@@ -172,7 +172,7 @@ grayGC = XCreateGC (term->dpy, win, GCForeground | GCGraphicsExposures, &gcvalue); - + - dark = term->pix_colors_focused[Color_Grey25]; + dark = term->lookup_color(Color_Grey25, term->pix_colors_focused); #if 0 @@ -931,21 +911,21 @@ if (color.set (term, rgba (0x51aa, 0x5555, 0x5144))) --- src/scrollbar-plain.C +++ src/scrollbar-plain.C -@@ -38,7 +38,7 @@ scrollBar_t::show_plain (int update) +@@ -38,7 +38,7 @@ XGCValues gcvalue; - + init |= SB_STYLE_PLAIN; - gcvalue.foreground = term->pix_colors_focused[Color_scroll]; + gcvalue.foreground = term->lookup_color(Color_scroll, term->pix_colors_focused); - + pscrollbarGC = XCreateGC (term->dpy, win, GCForeground, &gcvalue); } --- src/scrollbar-rxvt.C +++ src/scrollbar-rxvt.C -@@ -158,11 +158,11 @@ scrollBar_t::show_rxvt (int update) - +@@ -158,11 +158,11 @@ + init |= SB_STYLE_RXVT; - + - gcvalue.foreground = term->pix_colors[Color_topShadow]; + gcvalue.foreground = term->lookup_color(Color_topShadow, term->pix_colors); topShadowGC = XCreateGC (term->dpy, term->vt, GCForeground, &gcvalue); @@ -959,15 +939,15 @@ else --- src/scrollbar-xterm.C +++ src/scrollbar-xterm.C -@@ -49,13 +49,13 @@ scrollBar_t::show_xterm (int update) +@@ -49,13 +49,13 @@ rxvt_fatal ("can't create bitmap\n"); - + gcvalue.fill_style = FillOpaqueStippled; - gcvalue.foreground = term->pix_colors_focused[Color_scroll]; - gcvalue.background = term->pix_colors_focused[Color_bg]; + gcvalue.foreground = term->lookup_color(Color_scroll, term->pix_colors_focused); + gcvalue.background = term->lookup_color(Color_bg, term->pix_colors_focused); - + xscrollbarGC = XCreateGC (term->dpy, win, GCForeground | GCBackground | GCFillStyle | GCStipple, &gcvalue); @@ -975,17 +955,4 @@ + gcvalue.foreground = term->lookup_color(Color_border, term->pix_colors_focused); ShadowGC = XCreateGC (term->dpy, win, GCForeground, &gcvalue); } - ---- src/scrollbar.C -+++ src/scrollbar.C -@@ -72,8 +72,8 @@ scrollBar_t::resize () - total_width (), - term->szHint.height, - 0, -- term->pix_colors[Color_fg], -- term->pix_colors[color ()]); -+ term->lookup_color(Color_fg, term->pix_colors), -+ term->lookup_color(color (), term->pix_colors)); - XDefineCursor (term->dpy, win, leftptr_cursor); - - XSelectInput (term->dpy, win,
\ No newline at end of file + @@ -1,57 +1,68 @@ # Maintainer: mrdotx <klassiker@gmx.de> _pkgname=rxvt-unicode pkgname=rxvt-unicode-truecolor-wide-glyphs -pkgver=9.22 -pkgrel=4 -pkgdesc='Unicode enabled rxvt-clone terminal emulator (urxvt) with true color and enhanced glyphs support' +pkgver=9.26 +pkgrel=1 +pkgdesc='Unicode enabled rxvt-clone terminal emulator (urxvt) with true color, enhanced glyphs and improved font rendering support' arch=('i686' 'x86_64') url='http://software.schmorp.de/pkg/rxvt-unicode.html' license=('GPL') -depends=('libxft' 'perl' 'startup-notification') +depends=( + 'libxft' + 'libxt' + 'perl' + 'startup-notification' +) optdepends=('gtk2-perl: to use the urxvt-tabbed') -provides=('rxvt-unicode' 'rxvt-unicode-terminfo' 'urxvt-resize-font' 'urxvt-keyboard-select') -conflicts=('rxvt-unicode' 'rxvt-unicode-terminfo' 'urxvt-resize-font' 'urxvt-perls' 'urxvt-perls-git') -source=(http://dist.schmorp.de/rxvt-unicode/$_pkgname-$pkgver.tar.bz2 +provides=( + 'rxvt-unicode' + 'rxvt-unicode-terminfo' + 'urxvt-resize-font' + 'urxvt-keyboard-select' +) +conflicts=( + 'rxvt-unicode' + 'rxvt-unicode-terminfo' + 'urxvt-resize-font' + 'urxvt-perls' + 'urxvt-perls-git' +) +source=( + http://dist.schmorp.de/rxvt-unicode/$_pkgname-$pkgver.tar.bz2 'urxvt.desktop' 'urxvtc.desktop' 'urxvt-tabbed.desktop' 'resize-font' 'keyboard-select' - 'sgr-mouse-mode.patch' '24-bit-color.patch' 'enable-wide-glyphs.patch' 'improve-font-rendering.patch' - 'perl-segfault.patch' - ) -sha1sums=('e575b869782fbfed955f84f48b204ec888d91ba1' +) +sha1sums=('d325d8cdea6bcb8e0b8b219b8451bf5c690b6c62' 'b5a4507f85ebb7bac589db2e07d9bc40106720d9' '62c4ffecfce6967def394dd4d418b68652372ea2' 'cd204d608d114d39c80331efe0af0231ad6b7e18' 'a61366659c73bd551fa99a8415bb71e033897598' '9883d0c31b45f8521829ea6a2041f2e9eb7abe6a' - 'dfbc8729c545105eff21e20ef3a4a3841a68a192' - '9f5db305863b17175e72f9e2d4a78d0d7f25fd34' - 'd9f3b52b273d13fbd4089a7869ab2e70bf190bc9' - '2f976cfbb4ae092d331e169b56ec6423b198f462' - '361f4649596342d07311c2590b809b85b3a918ee') + '560097c0d6377461fcbe4c109f3113a6bcb38982' + 'c5ee4a50902d8c8d278938b080464a16d2c6af56' + '772b62071d73c0021adf334f037b95ef13d34317') prepare() { cd $_pkgname-$pkgver - # https://aur.archlinux.org/packages/rxvt-unicode-patched - patch -p0 -i ../sgr-mouse-mode.patch - - # https://aur.archlinux.org/packages/rxvt-unicode-truecolor + # The repo with original 24-bit-color.patch is no longer available: + # https://gist.githubusercontent.com/dan-santana/63271adf12171e0fc0bc/raw/70c6343d1c0b3bca0aba4f587ed501e6cbd98d00/24-bit-color.patch + # I have rewritten the patch to work with version 9.26. + # If someone has a better solution, please contact me! patch -p0 -i ../24-bit-color.patch + # If you have problems with character rendering, try installing libxft-bgra from aur. # https://aur.archlinux.org/packages/rxvt-unicode-cvs-patched-wideglyphs - patch -p1 -i ../enable-wide-glyphs.patch + patch -p0 -i ../enable-wide-glyphs.patch # https://aur.archlinux.org/packages/rxvt-unicode-improve-font-rendering - patch -p1 -i ../improve-font-rendering.patch - - # https://bugs.archlinux.org/task/67691 - patch -p1 -i ../perl-segfault.patch + patch -p0 -i ../improve-font-rendering.patch } build() { diff --git a/enable-wide-glyphs.patch b/enable-wide-glyphs.patch index fb639a81b8e4..4773bbb23e65 100644 --- a/enable-wide-glyphs.patch +++ b/enable-wide-glyphs.patch @@ -1,7 +1,5 @@ -diff --git a/config.h.in b/config.h.in -index 914d6062..2e2e03f3 100644 ---- a/config.h.in -+++ b/config.h.in +--- config.h.in ++++ config.h.in @@ -18,6 +18,9 @@ /* Define if you want your background to use the parent window background */ #undef ENABLE_TRANSPARENCY @@ -12,11 +10,9 @@ index 914d6062..2e2e03f3 100644 /* Define if you want european extended codesets */ #undef ENCODING_EU -diff --git a/configure b/configure -index 3e3f78bd..b8b1591d 100755 ---- a/configure -+++ b/configure -@@ -717,6 +717,7 @@ enable_unicode3 +--- configure ++++ configure +@@ -745,6 +745,7 @@ enable_combining enable_xft enable_font_styles @@ -24,7 +20,7 @@ index 3e3f78bd..b8b1591d 100755 enable_pixbuf enable_startup_notification enable_transparency -@@ -1390,6 +1391,7 @@ Optional Features: +@@ -1427,6 +1428,7 @@ --enable-combining enable composition of base and combining characters --enable-xft enable xft support on systems that have it --enable-font-styles enable bold and italic support @@ -32,7 +28,7 @@ index 3e3f78bd..b8b1591d 100755 --enable-pixbuf enable integration with gdk-pixbuf for background images --enable-startup-notification enable freedesktop startup notification support --enable-transparency enable transparent backgrounds -@@ -4780,6 +4782,7 @@ if test "${enable_everything+set}" = set; then : +@@ -5184,6 +5186,7 @@ support_8bitctrls=no support_iso14755=no support_styles=no @@ -40,7 +36,7 @@ index 3e3f78bd..b8b1591d 100755 support_perl=no codesets= fi -@@ -4808,6 +4811,7 @@ if test "${enable_everything+set}" = set; then : +@@ -5212,6 +5215,7 @@ #support_8bitctrls=yes support_iso14755=yes support_styles=yes @@ -48,7 +44,7 @@ index 3e3f78bd..b8b1591d 100755 support_perl=yes codesets=all fi -@@ -4909,6 +4913,14 @@ if test "${enable_font_styles+set}" = set; then : +@@ -5336,6 +5340,14 @@ fi @@ -61,25 +57,23 @@ index 3e3f78bd..b8b1591d 100755 + + # Check whether --enable-pixbuf was given. - if test "${enable_pixbuf+set}" = set; then : - enableval=$enable_pixbuf; if test x$enableval = xyes -o x$enableval = xno; then -@@ -7733,6 +7745,11 @@ if test x$support_styles = xyes; then + if test ${enable_pixbuf+y} + then : +@@ -8164,6 +8176,11 @@ + printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h - $as_echo "#define ENABLE_STYLES 1" >>confdefs.h - -+fi + fi +if test x$support_wide_glyphs = xyes; then + +$as_echo "#define ENABLE_WIDE_GLYPHS 1" >>confdefs.h + - fi - if test x$support_iso14755 = xyes; then - -diff --git a/configure.ac b/configure.ac -index 0da3b596..52ab8e4c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -132,6 +132,7 @@ AC_ARG_ENABLE(everything, ++fi + ac_fn_cxx_check_func "$LINENO" "isastream" "ac_cv_func_isastream" + if test "x$ac_cv_func_isastream" = xyes + then : +--- configure.ac ++++ configure.ac +@@ -134,6 +134,7 @@ support_8bitctrls=no support_iso14755=no support_styles=no @@ -87,7 +81,7 @@ index 0da3b596..52ab8e4c 100644 support_perl=no codesets= fi -@@ -160,6 +161,7 @@ AC_ARG_ENABLE(everything, +@@ -162,6 +163,7 @@ #support_8bitctrls=yes support_iso14755=yes support_styles=yes @@ -95,7 +89,7 @@ index 0da3b596..52ab8e4c 100644 support_perl=yes codesets=all fi -@@ -225,6 +227,12 @@ AC_ARG_ENABLE(font-styles, +@@ -237,6 +239,12 @@ support_styles=$enableval fi]) @@ -108,7 +102,7 @@ index 0da3b596..52ab8e4c 100644 AC_ARG_ENABLE(pixbuf, [ --enable-pixbuf enable integration with gdk-pixbuf for background images], [if test x$enableval = xyes -o x$enableval = xno; then -@@ -648,6 +656,9 @@ fi +@@ -660,6 +668,9 @@ if test x$support_styles = xyes; then AC_DEFINE(ENABLE_STYLES, 1, Define if you want bold and italic support) fi @@ -118,11 +112,9 @@ index 0da3b596..52ab8e4c 100644 if test x$support_iso14755 = xyes; then AC_DEFINE(ISO_14755, 1, Define if you want ISO 14755 extended support) fi -diff --git a/src/command.C b/src/command.C -index 19e4fccf..75853d75 100644 ---- a/src/command.C -+++ b/src/command.C -@@ -237,7 +237,9 @@ rxvt_term::iso14755_51 (unicode_t ch, rend_t r, int x, int y, int y2) +--- src/command.C ++++ src/command.C +@@ -237,7 +237,9 @@ # endif scr_overlay_set (11, y + 1, ch, r); @@ -132,11 +124,9 @@ index 19e4fccf..75853d75 100644 scr_overlay_set (12, y + 1, NOCHAR, r); } -diff --git a/src/rxvtfont.C b/src/rxvtfont.C -index c56921c8..9d75541a 100644 ---- a/src/rxvtfont.C -+++ b/src/rxvtfont.C -@@ -471,6 +471,7 @@ rxvt_font_default::draw (rxvt_drawable &d, int x, int y, +--- src/rxvtfont.C ++++ src/rxvtfont.C +@@ -471,6 +471,7 @@ else switch (t) { @@ -144,7 +134,7 @@ index c56921c8..9d75541a 100644 case '\t': case ZERO_WIDTH_CHAR: case NOCHAR: -@@ -1026,8 +1027,10 @@ rxvt_font_x11::has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &car +@@ -1026,8 +1027,10 @@ careful = xcs->lbearing < 0 || xcs->rbearing > prop->width * wcw; @@ -155,7 +145,7 @@ index c56921c8..9d75541a 100644 return true; } -@@ -1345,12 +1348,14 @@ rxvt_font_xft::has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &car +@@ -1345,12 +1348,14 @@ careful = g.x > 0 || w > prop->width * wcw; @@ -170,7 +160,7 @@ index c56921c8..9d75541a 100644 return true; } -@@ -1395,6 +1400,10 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, +@@ -1395,6 +1400,10 @@ ep->glyph = glyph; ep->x = x_ + (cwidth - extents.xOff >> 1); @@ -181,11 +171,9 @@ index c56921c8..9d75541a 100644 ep->y = y_ + ascent; if (extents.xOff == 0) -diff --git a/src/screen.C b/src/screen.C -index 115afbf2..61681b84 100644 ---- a/src/screen.C -+++ b/src/screen.C -@@ -936,7 +936,61 @@ rxvt_term::scr_add_lines (const wchar_t *str, int len, int minlines) NOTHROW +--- src/screen.C ++++ src/screen.C +@@ -975,7 +975,61 @@ # endif #endif @@ -248,7 +236,7 @@ index 115afbf2..61681b84 100644 // if the character doesn't fit into the remaining columns... if (ecb_unlikely (screen.cur.col > ncol - width && ncol >= width)) -@@ -2387,7 +2441,12 @@ rxvt_term::scr_refresh () NOTHROW +@@ -2434,7 +2488,12 @@ text--, count++, xpixel -= fwidth; // force redraw after "careful" characters to avoid pixel droppings @@ -262,11 +250,9 @@ index 115afbf2..61681b84 100644 drp[col + i + 1] = srp[col + i + 1] ^ RS_redraw; // force redraw before "careful" characters to avoid pixel droppings -diff --git a/src/xdefaults.C b/src/xdefaults.C -index 9b47bf2c..add21eec 100644 ---- a/src/xdefaults.C -+++ b/src/xdefaults.C -@@ -294,6 +294,9 @@ static const char optionsstring[] = "options: " +--- src/xdefaults.C ++++ src/xdefaults.C +@@ -294,6 +294,9 @@ #if ENABLE_STYLES "styles," #endif diff --git a/improve-font-rendering.patch b/improve-font-rendering.patch index de8f9789327a..460aca6ca6da 100644 --- a/improve-font-rendering.patch +++ b/improve-font-rendering.patch @@ -1,8 +1,6 @@ -diff --git a/src/rxvtfont.C b/src/rxvtfont.C -index 1914539..4c0189e 100644 ---- a/src/rxvtfont.C -+++ b/src/rxvtfont.C -@@ -1223,92 +1223,63 @@ rxvt_font_xft::load (const rxvt_fontprop &prop, bool force_prop) +--- src/rxvtfont.C ++++ src/rxvtfont.C +@@ -1226,92 +1226,63 @@ return false; int ftheight = 0; @@ -19,96 +17,97 @@ index 1914539..4c0189e 100644 - success = false; - break; - } -- + - FT_Face face = XftLockFace (f); -- ++ p = FcPatternDuplicate (match); ++ f = XftFontOpenPattern (disp, p); + - ascent = (face->size->metrics.ascender + 63) >> 6; - descent = (-face->size->metrics.descender + 63) >> 6; - height = max (ascent + descent, (face->size->metrics.height + 63) >> 6); - width = 0; - - bool scalable = face->face_flags & FT_FACE_FLAG_SCALABLE; - -- XftUnlockFace (f); -+ p = FcPatternDuplicate (match); -+ f = XftFontOpenPattern (disp, p); - -- int glheight = height; + if (!f) + { + FcPatternDestroy (p); + return false; + } +- XftUnlockFace (f); ++ FT_Face face = XftLockFace (f); + +- int glheight = height; ++ ascent = f->ascent; ++ descent = f->descent; ++ height = max (ascent + descent, f->height); ++ width = 0; + - for (uint16_t *t = extent_test_chars; t < extent_test_chars + ecb_array_length (extent_test_chars); t++) - { - FcChar16 ch = *t; -+ FT_Face face = XftLockFace (f); ++ bool scalable = face->face_flags & FT_FACE_FLAG_SCALABLE; - if (cs != CS_UNICODE - && ch > 0x100 - && FROM_UNICODE (cs, ch) == NOCHAR) - continue; -+ ascent = f->ascent; -+ descent = f->descent; -+ height = max (ascent + descent, f->height); -+ width = 0; ++ XftUnlockFace (f); - // ignore characters we wouldn't use anyways - bool careful; - if (!has_char (*t, &prop, careful)) - continue; -+ bool scalable = face->face_flags & FT_FACE_FLAG_SCALABLE; - -- XGlyphInfo g; -- XftTextExtents16 (disp, f, &ch, 1, &g); -+ XftUnlockFace (f); - -- g.width -= g.x; + for (uint16_t *t = extent_test_chars; t < extent_test_chars + ecb_array_length (extent_test_chars); t++) + { + FcChar16 ch = *t; -- int wcw = WCWIDTH (ch); -- if (wcw > 0) g.width = (g.width + wcw - 1) / wcw; +- XGlyphInfo g; +- XftTextExtents16 (disp, f, &ch, 1, &g); + if (cs != CS_UNICODE + && ch > 0x100 + && FROM_UNICODE (cs, ch) == NOCHAR) + continue; -- if (width < g.width ) width = g.width; -- if (height < g.height ) height = g.height; -- if (glheight < g.height - g.y) glheight = g.height - g.y; -- } +- g.width -= g.x; + // ignore characters we wouldn't use anyways + bool careful; + if (!has_char (*t, &prop, careful)) + continue; +- int wcw = WCWIDTH (ch); +- if (wcw > 0) g.width = (g.width + wcw - 1) / wcw; ++ XGlyphInfo g; ++ XftTextExtents16 (disp, f, &ch, 1, &g); + +- if (width < g.width ) width = g.width; +- if (height < g.height ) height = g.height; +- if (glheight < g.height - g.y) glheight = g.height - g.y; +- } ++ g.width -= g.x; + - if (!width) - { - rxvt_warn ("unable to calculate font width for '%s', ignoring.\n", name); -+ XGlyphInfo g; -+ XftTextExtents16 (disp, f, &ch, 1, &g); ++ int wcw = WCWIDTH (ch); ++ if (wcw > 1) g.xOff = g.xOff / wcw; - XftFontClose (disp, f); - f = 0; -+ g.width -= g.x; ++ if (width < g.xOff ) width = g.xOff; ++ if (height < g.height) height = g.height; ++ } - success = false; - break; - } -+ int wcw = WCWIDTH (ch); -+ if (wcw > 1) g.xOff = g.xOff / wcw; - +- - if (prop.height == rxvt_fontprop::unset - || (height <= prop.height && glheight <= prop.height) - || height <= 2 - || !scalable) - break; -+ if (width < g.xOff ) width = g.xOff; -+ if (height < g.height) height = g.height; -+ } ++ bool success = true; - if (ftheight) - { @@ -116,8 +115,7 @@ index 1914539..4c0189e 100644 - if (height > prop.height + 1) ftheight++; - if (height > prop.height + 2) ftheight++; - if (height > prop.height + 3) ftheight++; -+ bool success = true; - +- - ftheight -= height - prop.height; - } - else @@ -135,8 +133,8 @@ index 1914539..4c0189e 100644 } FcPatternDestroy (match); -@@ -1395,7 +1366,7 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y, - +@@ -1404,7 +1375,7 @@ + /* Left-align to bounding box, do not overlap to the left. */ max_it(ep->x, x_); #endif - ep->y = y_ + ascent; @@ -144,12 +142,10 @@ index 1914539..4c0189e 100644 if (extents.xOff == 0) ep->x = x_ + cwidth; -diff --git a/src/screen.C b/src/screen.C -index 9eb375a..7b3cdbf 100644 ---- a/src/screen.C -+++ b/src/screen.C -@@ -2432,8 +2432,8 @@ rxvt_term::scr_refresh () NOTHROW - XSetForeground (dpy, gc, pix_colors[fore]); +--- src/screen.C ++++ src/screen.C +@@ -2538,8 +2538,8 @@ + XSetForeground (dpy, gc, lookup_color(fore, pix_colors)); XDrawLine (dpy, vt, gc, - xpixel, ypixel + font->ascent + 1, @@ -159,11 +155,9 @@ index 9eb375a..7b3cdbf 100644 } } /* for (col....) */ } /* for (row....) */ -diff --git a/src/table/jis0208_1990_0.h b/src/table/jis0208_1990_0.h -index b23378f..0febcd3 100644 ---- a/src/table/jis0208_1990_0.h -+++ b/src/table/jis0208_1990_0.h -@@ -2241,6 +2241,7 @@ const uint16_t *jis0208_1990_0_f_i[] = { +--- src/table/jis0208_1990_0.h ++++ src/table/jis0208_1990_0.h +@@ -2241,6 +2241,7 @@ static uint32_t cs_jis0208_1990_0_from_unicode (unicode_t unicode) { if (unicode == 0x2312) return 0x225e; diff --git a/perl-segfault.patch b/perl-segfault.patch deleted file mode 100644 index c7a4cc927cee..000000000000 --- a/perl-segfault.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- rxvt-unicode/src/rxvtperl.xs 2020/01/20 09:35:12 1.246 -+++ rxvt-unicode/src/rxvtperl.xs 2020/06/30 07:31:24 1.247 -@@ -372,6 +372,9 @@ - - static PerlInterpreter *perl; - -+#if 0 /* we are not a library anymore, so doing this is just not worth it */ -+/*THINK/TODO: this has the side effect of, of course, not calling destructors. */ -+/* but therse are not guaranteed anyway... */ - rxvt_perl_interp::~rxvt_perl_interp () - { - if (perl) -@@ -381,6 +384,7 @@ - PERL_SYS_TERM (); - } - } -+#endif - - void - rxvt_perl_interp::init () - ---- rxvt-unicode/src/rxvtperl.h 2012/06/12 10:45:53 1.28 -+++ rxvt-unicode/src/rxvtperl.h 2020/06/30 07:31:24 1.29 -@@ -51,7 +51,9 @@ - { - char **perl_environ; - -+ #if 0 // see rxvtperl.xs - ~rxvt_perl_interp (); -+ #endif - - void init (); - void init (rxvt_term *term); diff --git a/sgr-mouse-mode.patch b/sgr-mouse-mode.patch deleted file mode 100644 index 186e8fdb74f8..000000000000 --- a/sgr-mouse-mode.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- src/command.C 2014-12-13 13:22:09.000000000 +0100 -+++ src/command.C 2016-01-13 04:50:39.161862513 +0100 -@@ -1280,6 +1280,8 @@ - int x, y; - int code = 32; - -+ if (priv_modes & PrivMode_ExtMouseSgr) code = 0; -+ - x = Pixel2Col (ev.x) + 1; - y = Pixel2Row (ev.y) + 1; - -@@ -1293,11 +1295,18 @@ - code += 32; - } - -- if (MEvent.button == AnyButton) -+ if (!(priv_modes & PrivMode_ExtMouseSgr) && MEvent.button == AnyButton) - button_number = 3; - else - { -- button_number = MEvent.button - Button1; -+ if (ev.type == MotionNotify) { -+ if (ev.state & Button1Mask) button_number = 0; -+ else if (ev.state & Button2Mask) button_number = 1; -+ else if (ev.state & Button3Mask) button_number = 2; -+ else return; -+ } else { -+ button_number = ev.button - Button1; -+ } - /* add 0x3D for wheel events, like xterm does */ - if (button_number >= 3) - button_number += 64 - 3; -@@ -1347,16 +1356,22 @@ - #endif - - #if ENABLE_FRILLS -+ if (priv_modes & PrivMode_ExtMouseSgr) -+ tt_printf ("\033[<%d;%d;%d%c", -+ code + button_number + key_state, -+ x, -+ y, -+ (ev.type == ButtonRelease ? 'm' : 'M')); -- if (priv_modes & PrivMode_ExtMouseRight) -+ else if (priv_modes & PrivMode_ExtMouseRight) - tt_printf ("\033[%d;%d;%dM", - code + button_number + key_state, - x, - y); - else if (priv_modes & PrivMode_ExtModeMouse) - tt_printf ("\033[M%c%lc%lc", - code + button_number + key_state, - wint_t (32 + x), - wint_t (32 + y)); - else - #endif - tt_printf ("\033[M%c%c%c", -@@ -2908,7 +2913,7 @@ - scr_soft_reset (); - - static const int pm_h[] = { 7, 25 }; -- static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1005, 1015, 1049 }; -+ static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1002, 1003, 1005, 1006, 1015, 1049 }; - - process_terminal_mode ('h', 0, ecb_array_length (pm_h), pm_h); - process_terminal_mode ('l', 0, ecb_array_length (pm_l), pm_l); -@@ -3713,13 +3718,14 @@ - { 1002, PrivMode_MouseBtnEvent }, - { 1003, PrivMode_MouseAnyEvent }, - #if ENABLE_FRILLS - { 1005, PrivMode_ExtModeMouse }, -+ { 1006, PrivMode_ExtMouseSgr }, - #endif - { 1010, PrivMode_TtyOutputInh }, // rxvt extension - { 1011, PrivMode_Keypress }, // rxvt extension - #if ENABLE_FRILLS - { 1015, PrivMode_ExtMouseRight }, // urxvt extension of 1005 - #endif - // 1035 enable modifiers for alt, numlock NYI - // 1036 send ESC for meta keys NYI - // 1037 send DEL for keypad delete NYI ---- src/rxvt.h 2014-12-17 16:33:08.000000000 +0100 -+++ src/rxvt.h 2016-01-13 03:42:31.508911380 +0100 -@@ -644,6 +644,7 @@ - #define PrivMode_ExtModeMouse (1UL<<23) // xterm pseudo-utf-8 hack - #define PrivMode_ExtMouseRight (1UL<<24) // xterm pseudo-utf-8, but works in non-utf-8-locales - #define PrivMode_BlinkingCursor (1UL<<25) -+#define PrivMode_ExtMouseSgr (1UL<<26) // sgr mouse extension - - #define PrivMode_mouse_report (PrivMode_MouseX10|PrivMode_MouseX11|PrivMode_MouseBtnEvent|PrivMode_MouseAnyEvent) - |