home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume4 / kterm / patch1 < prev    next >
Encoding:
Internet Message Format  |  1989-07-12  |  7.6 KB

  1. Path: uunet!island!argv
  2. From: argv@island.uu.net (Dan Heller)
  3. Newsgroups: comp.sources.x
  4. Subject: v04i043: kterm, Patch1
  5. Message-ID: <871@island.uu.net>
  6. Date: 12 Jul 89 23:23:20 GMT
  7. Organization: Island Graphics, Marin County, California
  8. Lines: 265
  9. Approved: island!argv@sun.com
  10.  
  11. Submitted-by: sun!argv
  12. Posting-number: Volume 4, Issue 43
  13. Archive-name: kterm/patch1
  14. Patch-To: Volume 4, Issue 10
  15.  
  16.  
  17.   Two bugs are fixed.
  18. 1. Originally, cutting Kanji text under SystemV caused kterm dump core.
  19. 2. Text operations on a Kanji character sometimes left a half part of it.
  20.  New kterm clears the character before such an operation.
  21. --
  22.                                            Hiroto Kagotani
  23.                                            kagotani@cs.titech.ac.jp
  24. ------------
  25. *** kterm.3.1.0/button.c    Tue May 30 14:53:31 1989
  26. --- kterm.3.1.1/button.c    Sat Jul  8 16:10:15 1989
  27. ***************
  28. *** 1,6 ****
  29.   /*
  30.    *    $XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $
  31. !  *    $Header: button.c,v 1.1 89/05/30 14:53:29 kagotani Rel $
  32.    */
  33.   
  34.   
  35. --- 1,6 ----
  36.   /*
  37.    *    $XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $
  38. !  *    $Header: button.c,v 1.2 89/07/08 16:10:08 kagotani Rel $
  39.    */
  40.   
  41.   
  42. ***************
  43. *** 37,43 ****
  44.   */
  45.   #ifndef lint
  46.   static char rcs_id[] = "$XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $";
  47. ! static char kterm_id[] = "$Header: button.c,v 1.1 89/05/30 14:53:29 kagotani Rel $";
  48.   #endif    /* lint */
  49.   #include <X11/Xos.h>
  50.   #include <X11/Xlib.h>
  51. --- 37,43 ----
  52.   */
  53.   #ifndef lint
  54.   static char rcs_id[] = "$XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $";
  55. ! static char kterm_id[] = "$Header: button.c,v 1.2 89/07/08 16:10:08 kagotani Rel $";
  56.   #endif    /* lint */
  57.   #include <X11/Xos.h>
  58.   #include <X11/Xlib.h>
  59. ***************
  60. *** 1294,1307 ****
  61.           if ((*p++ & 0x8080) == 0)
  62.               nc++;
  63.           }
  64. !         p = term->screen.selection;
  65. !         s = q = (char *)LOCAL_ALLOC(nc);
  66. !         for (nw = term->screen.selection_length; nw > 0; nw--, p++) {
  67. !         if ((*p & 0x8080) == 0)
  68. !             *q++ = *p & 0x7f;
  69.           }
  70. !         XStoreBytes( XtDisplay((Widget)term), s, nc, buffer);
  71. !         LOCAL_FREE(s);
  72.       }
  73.   #else
  74.           XStoreBytes( XtDisplay((Widget)term), term->screen.selection,
  75. --- 1294,1311 ----
  76.           if ((*p++ & 0x8080) == 0)
  77.               nc++;
  78.           }
  79. !         if (nc > 0) {
  80. !             p = term->screen.selection;
  81. !             s = q = (char *)LOCAL_ALLOC(nc);
  82. !             for (nw = term->screen.selection_length; nw > 0; nw--, p++) {
  83. !             if ((*p & 0x8080) == 0)
  84. !                 *q++ = *p & 0x7f;
  85. !             }
  86. !             XStoreBytes( XtDisplay((Widget)term), s, nc, buffer);
  87. !             LOCAL_FREE(s);
  88.           }
  89. !         else
  90. !             XStoreBytes( XtDisplay((Widget)term), NULL, nc, buffer);
  91.       }
  92.   #else
  93.           XStoreBytes( XtDisplay((Widget)term), term->screen.selection,
  94. *** kterm.3.1.0/charproc.c    Tue May 30 14:53:35 1989
  95. --- kterm.3.1.1/charproc.c    Sat Jul  8 16:10:28 1989
  96. ***************
  97. *** 1,6 ****
  98.   /*
  99.    * $XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $
  100. !  * $Header: charproc.c,v 1.1 89/05/30 14:53:32 kagotani Rel $
  101.    */
  102.   
  103.   
  104. --- 1,6 ----
  105.   /*
  106.    * $XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $
  107. !  * $Header: charproc.c,v 1.2 89/07/08 16:10:16 kagotani Rel $
  108.    */
  109.   
  110.   
  111. ***************
  112. *** 165,171 ****
  113.   
  114.   #ifndef lint
  115.   static char rcs_id[] = "$XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $";
  116. ! static char kterm_id[] = "$Header: charproc.c,v 1.1 89/05/30 14:53:32 kagotani Rel $";
  117.   #endif    /* lint */
  118.   
  119.   static long arg;
  120. --- 165,171 ----
  121.   
  122.   #ifndef lint
  123.   static char rcs_id[] = "$XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $";
  124. ! static char kterm_id[] = "$Header: charproc.c,v 1.2 89/07/08 16:10:16 kagotani Rel $";
  125.   #endif    /* lint */
  126.   
  127.   static long arg;
  128. ***************
  129. *** 1679,1684 ****
  130. --- 1679,1688 ----
  131.       cx = CursorX(screen, screen->cur_col);
  132.       cy = CursorY(screen, screen->cur_row)+screen->fnt_norm->ascent;
  133.   #ifdef    KANJI    /* sano & michael */
  134. +     BreakKanji(screen);
  135. +     screen->cur_col += len;
  136. +     BreakKanji(screen);
  137. +     screen->cur_col -= len;
  138.       if (fgs & KCS) {
  139.           /*
  140.            * Draw Kanji string with currentGC. If no k_boldGC nor
  141. *** kterm.3.1.0/patchlevel.c    Tue May 30 14:53:50 1989
  142. --- kterm.3.1.1/patchlevel.c    Sat Jul  8 16:10:30 1989
  143. ***************
  144. *** 2,7 ****
  145.   /*
  146.    * Patchlevel for the difference between xterm and kterm.
  147.    */
  148. ! static char kterm_patchlevel[] = "kterm 3.1.0 based on xterm in release 3";
  149. ! char menuname[] = "kterm X11/3.1.0";
  150.   #endif    KANJI
  151. --- 2,7 ----
  152.   /*
  153.    * Patchlevel for the difference between xterm and kterm.
  154.    */
  155. ! static char kterm_patchlevel[] = "kterm 3.1.1 based on xterm in release 3";
  156. ! char menuname[] = "kterm X11/3.1.1";
  157.   #endif    KANJI
  158. *** kterm.3.1.0/util.c    Tue May 30 14:53:59 1989
  159. --- kterm.3.1.1/util.c    Sat Jul  8 16:10:36 1989
  160. ***************
  161. *** 1,6 ****
  162.   /*
  163.    *    $XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $
  164. !  *    $Header: util.c,v 1.1 89/05/30 14:53:58 kagotani Rel $
  165.    */
  166.   
  167.   #include <X11/copyright.h>
  168. --- 1,6 ----
  169.   /*
  170.    *    $XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $
  171. !  *    $Header: util.c,v 1.2 89/07/08 16:10:32 kagotani Rel $
  172.    */
  173.   
  174.   #include <X11/copyright.h>
  175. ***************
  176. *** 32,38 ****
  177.   
  178.   #ifndef lint
  179.   static char rcs_id[] = "$XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $";
  180. ! static char kterm_id[] = "$Header: util.c,v 1.1 89/05/30 14:53:58 kagotani Rel $";
  181.   #endif    /* lint */
  182.   
  183.   #include <stdio.h>
  184. --- 32,38 ----
  185.   
  186.   #ifndef lint
  187.   static char rcs_id[] = "$XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $";
  188. ! static char kterm_id[] = "$Header: util.c,v 1.2 89/07/08 16:10:32 kagotani Rel $";
  189.   #endif    /* lint */
  190.   
  191.   #include <stdio.h>
  192. ***************
  193. *** 587,592 ****
  194. --- 587,596 ----
  195.           if(!AddToRefresh(screen)) {
  196.           if(screen->scroll_amt)
  197.               FlushScroll(screen);
  198. + #ifdef    KANJI    /* kagotani */
  199. +         BreakKanji(screen);
  200. + #endif    KANJI
  201.       
  202.           if (screen->incopy)
  203.               CopyWait (screen);
  204. ***************
  205. *** 645,650 ****
  206. --- 649,661 ----
  207.               FlushScroll(screen);
  208.       
  209.           width = n * FontWidth(screen);
  210. + #ifdef    KANJI    /* kagotani */
  211. +         BreakKanji(screen);
  212. +         screen->cur_col += n;
  213. +         BreakKanji(screen);
  214. +         screen->cur_col -= n;
  215. + #endif    KANJI
  216.       
  217.           if (screen->incopy)
  218.               CopyWait (screen);
  219. ***************
  220. *** 741,746 ****
  221. --- 752,760 ----
  222.           if(!AddToRefresh(screen)) {
  223.       if(screen->scroll_amt)
  224.           FlushScroll(screen);
  225. + #ifdef    KANJI    /* kagotani */
  226. +         BreakKanji(screen);
  227. + #endif    KANJI
  228.           XFillRectangle(screen->display, TextWindow(screen),
  229.   #ifdef    STATUSLINE    /* michael */
  230.           screen->instatus ? screen->normalGC :
  231. ***************
  232. *** 776,781 ****
  233. --- 790,798 ----
  234.           if(!AddToRefresh(screen)) {
  235.           if(screen->scroll_amt)
  236.               FlushScroll(screen);
  237. + #ifdef    KANJI    /* kagotani */
  238. +         BreakKanji(screen);
  239. + #endif    KANJI
  240.           XFillRectangle (screen->display, TextWindow(screen),
  241.   #ifdef    STATUSLINE    /* michael */
  242.                screen->instatus ? screen->normalGC :
  243. ***************
  244. *** 1050,1052 ****
  245. --- 1067,1094 ----
  246.       return;
  247.   }
  248.   
  249. + #ifdef    KANJI    /* kagotani */
  250. + /*
  251. +  * If the cursor points KCS2 character, replace this Kanji into two blanks.
  252. +  */
  253. + BreakKanji(screen)
  254. + register TScreen *screen;
  255. + {
  256. +     register char *col;
  257. +     register char *att;
  258. +     if (screen->cur_col >= 1 && screen->cur_col <= screen->max_col
  259. +      && *(att = screen->buf[2*screen->cur_row+1]+screen->cur_col) & KCS2) {
  260. +         col = screen->buf[2*screen->cur_row] + screen->cur_col;
  261. +         XFillRectangle(screen->display, TextWindow(screen),
  262. + #ifdef    STATUSLINE
  263. +         screen->instatus ? screen->normalGC :
  264. + #endif    STATUSLINE
  265. +           screen->reverseGC,
  266. +          CursorX(screen, screen->cur_col - 1),
  267. +          CursorY(screen, screen->cur_row),
  268. +          2 * FontWidth(screen), FontHeight(screen));
  269. +         bzero(col - 1, 2);
  270. +         bzero(att - 1, 2);
  271. +     }
  272. + }
  273. + #endif    KANJI
  274.