*** empty log message ***
authorpcg <pcg>
Fri, 5 Mar 2004 04:43:41 +0000 (04:43 +0000)
committerpcg <pcg>
Fri, 5 Mar 2004 04:43:41 +0000 (04:43 +0000)
src/defaultfont.C
src/defaultfont.h

index 3ccc98d8c4eddea114e7d38e89e63c00c6b5ae5e..9c848ee410fd1bcc05beab4e8769a7bd48c5e29e 100644 (file)
@@ -313,6 +313,7 @@ rxvt_font_default::draw (rxvt_drawable &d, int x, int y,
 
   while (len--)
     {
+      compose_char *cc;
       text_t t = *text++;
 
       // is it in our linedrawing table?
@@ -351,10 +352,11 @@ rxvt_font_default::draw (rxvt_drawable &d, int x, int y,
           gcv.line_width = 0;
           XChangeGC (d.display->display, GC, GCLineWidth, &gcv);
         }
-      else if (IS_COMPOSE (t))
+      else if (IS_COMPOSE (t) && (cc = rxvt_composite[t]))
         {
-          const compose_char &cc = rxvt_composite[t];
-          (void)0; //D ADD pseudo handling here
+          (*fs)[fs->find_font (cc->c1)]->draw (d, x, y, &(t = cc->c1), 1, fg, bg);
+          if (cc->c2 != NOCHAR)
+            (*fs)[fs->find_font (cc->c2)]->draw (d, x, y, &(t = cc->c2), 1, fg, -1);
         }
       else
         switch (t)
@@ -1028,6 +1030,7 @@ rxvt_fontset::new_font (const char *name, codeset cs)
   else
     f = new rxvt_font_x11;
 
+  f->fs = this;
   f->set_term (r);
   f->set_name (strdup (name));
 
index 8efbdb0b172dc99e3979d6648a727ea9e85884d3..f588c60fdec48227da76867d00761c7a2aa29f02 100644 (file)
@@ -57,6 +57,7 @@ struct rxvt_drawable {
 };
 
 struct rxvt_font {
+  struct rxvt_fontset *fs;
   // managed by the fontset
   rxvt_t r;
   void set_term (rxvt_t r) { this->r = r; }