*** empty log message ***
authorroot <root>
Wed, 15 Dec 2004 00:53:23 +0000 (00:53 +0000)
committerroot <root>
Wed, 15 Dec 2004 00:53:23 +0000 (00:53 +0000)
Changes
doc/rxvt.1.pod
src/command.C
src/init.C
src/main.C
src/rxvt.h
src/rxvttoolkit.C
src/rxvttoolkit.h
src/screen.C
src/xdefaults.C

diff --git a/Changes b/Changes
index 7652996..d3d1b24 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,7 +2,6 @@ Lines marked with "xterm:" indicate either xterm features ported to rxvt
 or changed rxvt behaviour to make it more compatible to xterm (usually
 xfree86's xterm).
 
-TODO: configurable underline line colour.
 TODO: read property sequence is broken with respect to utf-8 etc.
 FEAT: hotkey font resizing
 FEAT: searchable backlog
@@ -18,7 +17,7 @@ FEAT: tabbed windows (hey, just use screen...)
         - fix atom name enumeration.
         - streamline atom and xft color allocation to reduce startup
           time (12.8s -> 7.8s on my dsl). Still, doing it with only 2-3
-          turnarounds would be much faster, but impossible to implement.
+          turnarounds would be much faster, but impossible to implement(?).
         - do not use XSETROOTPMAP_ID anymore, support ESETROOT_PMAP_ID
           instead.
         - implement underlineColor resource when ENABLE_FRILLS.
index bc081f5..b8bd65f 100644 (file)
@@ -441,6 +441,11 @@ foreground colour is the default.
 Use the specified colour as the background for reverse video
 characters.
 
+=item B<underlineColor:> I<colour>
+
+If set, use the specified colour as the colour for the underline
+itself. If unset, use the foreground colour.
+
 =item B<cursorColor:> I<colour>
 
 Use the specified colour for the cursor. The default is to use the
index 8fa267d..9654179 100644 (file)
@@ -1670,10 +1670,8 @@ rxvt_term::rootwin_cb (XEvent &ev)
          * if user used some Esetroot compatible prog to set the root bg,
          * use the property to determine the pixmap.  We use it later on.
          */
-        if (xa[XA_XROOTPMAPID] == 0)
-          xa[XA_XROOTPMAPID] = XInternAtom (display->display, "_XROOTPMAP_ID", False);
-
-        if (ev.xproperty.atom != xa[XA_XROOTPMAPID])
+        if (ev.xproperty.atom == xa[XA_XROOTPMAP_ID]
+            || ev.xproperty.atom == xa[XA_ESETROOT_PMAP_ID])
           return;
 
         /* FALLTHROUGH */
@@ -2353,14 +2351,14 @@ rxvt_term::check_our_parents ()
    * the root background. Some window managers put multiple nested frame
    * windows for each client, so we have to take care about that.
    */
-  i = (xa[XA_XROOTPMAPID]
-       && XGetWindowProperty (display->display, display->root, xa[XA_XROOTPMAPID],
+  i = (xa[XA_XROOTPMAP_ID]
+       && XGetWindowProperty (display->display, display->root, xa[XA_XROOTPMAP_ID],
                               0L, 1L, False, XA_PIXMAP, &atype, &aformat,
                               &nitems, &bytes_after, &prop) == Success);
 
   if (!i || prop == NULL)
-     i = (xa[XA_XSETROOTID]
-          && XGetWindowProperty (display->display, display->root, xa[XA_XSETROOTID],
+     i = (xa[XA_ESETROOT_PMAP_ID]
+          && XGetWindowProperty (display->display, display->root, xa[XA_ESETROOT_PMAP_ID],
                                  0L, 1L, False, XA_PIXMAP, &atype, &aformat,
                                  &nitems, &bytes_after, &prop) == Success);
 
index 99c5fa7..17c9eb9 100644 (file)
@@ -157,6 +157,9 @@ const char *const def_colorName[] =
     NULL,                       /* Color_UL                       */
     NULL,                       /* Color_RV                       */
 #endif                          /* ! NO_BOLD_UNDERLINE_REVERSE */
+#if ENABLE_FRILLS
+    NULL,                      // Color_underline
+#endif
 #ifdef OPTION_HC
     NULL,
 #endif
@@ -192,7 +195,7 @@ const char *const xa_names[] =
 #endif
 #ifdef TRANSPARENT
     "_XROOTPMAP_ID",
-    "_XSETROOT_ID",
+    "ESETROOT_PMAP_ID",
 #endif
 #ifdef OFFIX_DND
     "DndProtocol",
index db560df..4fd7933 100644 (file)
@@ -1000,10 +1000,6 @@ rxvt_term::set_colorfgbg ()
 }
 
 /*----------------------------------------------------------------------*/
-/*
- * Colour determination for low colour displays, routine from
- *     Hans de Goede <hans@highrise.nl>
- */
 
 int
 rxvt_term::rXParseAllocColor (rxvt_color *screen_in_out, const char *colour)
index 20584e9..dd83502 100644 (file)
@@ -502,6 +502,9 @@ enum colour_list {
   Color_UL,
   Color_RV,
 #endif
+#if ENABLE_FRILLS
+  Color_underline,
+#endif
 #ifdef OPTION_HC
   Color_HC,
 #endif
@@ -651,8 +654,8 @@ enum {
   XA_WM_LOCALE_NAME,
 #endif
 #if TRANSPARENT
-  XA_XROOTPMAPID,
-  XA_XSETROOTID,
+  XA_XROOTPMAP_ID,
+  XA_ESETROOT_PMAP_ID,
 #endif
 #if OFFIX_DND                /* OffiX Dnd (drag 'n' drop) support */
   XA_DNDPROTOCOL,
index 3f4cf0e..1cb697a 100644 (file)
@@ -388,12 +388,17 @@ rxvt_color::set (rxvt_display *display, Pixel p)
 bool
 rxvt_color::set (rxvt_display *display, const char *name)
 {
+#if XFT
+  return XftColorAllocName (display->display, display->visual, display->cmap,
+                            name, &c);
+#else
   XColor xc;
 
   if (XParseColor (display->display, display->cmap, name, &xc))
     return set (display, xc.red, xc.green, xc.blue);
 
   return false;
+#endif
 }
 
 bool
index 5a11304..290beb4 100644 (file)
@@ -89,7 +89,7 @@ struct rxvt_display : refcounted {
   operator Display *() const { return display; }
 
   void flush ();
-
+  Atom atom (const char *name);
   void set_selection_owner (rxvt_term *owner);
 
   void reg (xevent_watcher *w);
@@ -102,8 +102,6 @@ struct rxvt_display : refcounted {
   rxvt_xim *get_xim (const char *locale, const char *modifiers);
   void put_xim (rxvt_xim *xim);
 #endif
-
-  Atom atom (const char *name);
 };
 
 #ifdef USE_XIM
index 116c264..c9fcfe7 100644 (file)
@@ -2402,7 +2402,13 @@ rxvt_term::scr_refresh (unsigned char refresh_type)
 
           if (rend & RS_Uline && font->descent > 1 && fore != back)
             {
-              XSetForeground (display->display, TermWin.gc, pix_colors[fore]);
+#if ENABLE_FRILLS
+              if (ISSET_PIXCOLOR (Color_underline))
+                XSetForeground (display->display, TermWin.gc, pix_colors[Color_underline]);
+              else
+#endif
+                XSetForeground (display->display, TermWin.gc, pix_colors[fore]);
+
               XDrawLine (display->display, drawBuffer, TermWin.gc,
                          xpixel, ypixel + font->ascent + 1,
                          xpixel + Width2Pixel (count) - 1, ypixel + font->ascent + 1);
index 8bc3633..52737e6 100644 (file)
@@ -166,6 +166,9 @@ optList[] = {
               RSTRG (Rs_color + Color_UL, "colorUL", "color"),
               RSTRG (Rs_color + Color_RV, "colorRV", "color"),
 #endif                         /* ! NO_BOLD_UNDERLINE_REVERSE */
+#if ENABLE_FRILLS
+              RSTRG (Rs_color + Color_underline, "underlineColor", "color"),
+#endif
 #ifdef KEEP_SCROLLCOLOR
               RSTRG (Rs_color + Color_scroll, "scrollColor", "color"),
               RSTRG (Rs_color + Color_trough, "troughColor", "color"),