Applied Phil Endecott's patch to improve reverse-video escape-sequence handling
authorbtakahashi <btakahashi>
Tue, 10 May 2005 00:08:12 +0000 (00:08 +0000)
committerbtakahashi <btakahashi>
Tue, 10 May 2005 00:08:12 +0000 (00:08 +0000)
inject_csi.c

index e7652aa..e2b6430 100644 (file)
@@ -75,14 +75,17 @@ static void interpret_csi_SGR(RoteTerm *rt, int param[], int pcount) {
          ROTE_ATTR_MOD_BOLD(rt->curattr,1);
       else if (param[i] == 5)  /* set blink */
          ROTE_ATTR_MOD_BLINK(rt->curattr,1);
-      else if (param[i] == 7) rt->curattr = 0x07;   /* reverse video */
+      else if (param[i] == 7 || param[i] == 27) { /* reverse video */
+       int fg = ROTE_ATTR_FG(rt->curattr);
+       int bg = ROTE_ATTR_BG(rt->curattr);
+       ROTE_ATTR_MOD_FG(rt->curattr, bg);
+       ROTE_ATTR_MOD_BG(rt->curattr, fg);
+      }
       else if (param[i] == 8) rt->curattr = 0x0;    /* invisible */
       else if (param[i] == 22 || param[i] == 24) /* bold off */
         ROTE_ATTR_MOD_BOLD(rt->curattr,0);
       else if (param[i] == 25) /* blink off */
         ROTE_ATTR_MOD_BLINK(rt->curattr,0);
-      else if (param[i] == 27) /* negative off */
-        rt->curattr = 0x70;
       else if (param[i] == 28) /* invisible off */
         rt->curattr = 0x70;
       else if (param[i] >= 30 && param[i] <= 37)    /* set fg */