v04i043: kterm, Patch1
Dan Heller
argv at island.uu.net
Thu Jul 13 09:23:20 AEST 1989
Submitted-by: sun!argv
Posting-number: Volume 4, Issue 43
Archive-name: kterm/patch1
Patch-To: Volume 4, Issue 10
Two bugs are fixed.
1. Originally, cutting Kanji text under SystemV caused kterm dump core.
2. Text operations on a Kanji character sometimes left a half part of it.
New kterm clears the character before such an operation.
--
Hiroto Kagotani
kagotani at cs.titech.ac.jp
------------
*** kterm.3.1.0/button.c Tue May 30 14:53:31 1989
--- kterm.3.1.1/button.c Sat Jul 8 16:10:15 1989
***************
*** 1,6 ****
/*
* $XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $
! * $Header: button.c,v 1.1 89/05/30 14:53:29 kagotani Rel $
*/
--- 1,6 ----
/*
* $XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $
! * $Header: button.c,v 1.2 89/07/08 16:10:08 kagotani Rel $
*/
***************
*** 37,43 ****
*/
#ifndef lint
static char rcs_id[] = "$XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $";
! static char kterm_id[] = "$Header: button.c,v 1.1 89/05/30 14:53:29 kagotani Rel $";
#endif /* lint */
#include <X11/Xos.h>
#include <X11/Xlib.h>
--- 37,43 ----
*/
#ifndef lint
static char rcs_id[] = "$XConsortium: button.c,v 1.32 89/01/05 12:47:45 swick Exp $";
! static char kterm_id[] = "$Header: button.c,v 1.2 89/07/08 16:10:08 kagotani Rel $";
#endif /* lint */
#include <X11/Xos.h>
#include <X11/Xlib.h>
***************
*** 1294,1307 ****
if ((*p++ & 0x8080) == 0)
nc++;
}
! p = term->screen.selection;
! s = q = (char *)LOCAL_ALLOC(nc);
! for (nw = term->screen.selection_length; nw > 0; nw--, p++) {
! if ((*p & 0x8080) == 0)
! *q++ = *p & 0x7f;
}
! XStoreBytes( XtDisplay((Widget)term), s, nc, buffer);
! LOCAL_FREE(s);
}
#else
XStoreBytes( XtDisplay((Widget)term), term->screen.selection,
--- 1294,1311 ----
if ((*p++ & 0x8080) == 0)
nc++;
}
! if (nc > 0) {
! p = term->screen.selection;
! s = q = (char *)LOCAL_ALLOC(nc);
! for (nw = term->screen.selection_length; nw > 0; nw--, p++) {
! if ((*p & 0x8080) == 0)
! *q++ = *p & 0x7f;
! }
! XStoreBytes( XtDisplay((Widget)term), s, nc, buffer);
! LOCAL_FREE(s);
}
! else
! XStoreBytes( XtDisplay((Widget)term), NULL, nc, buffer);
}
#else
XStoreBytes( XtDisplay((Widget)term), term->screen.selection,
*** kterm.3.1.0/charproc.c Tue May 30 14:53:35 1989
--- kterm.3.1.1/charproc.c Sat Jul 8 16:10:28 1989
***************
*** 1,6 ****
/*
* $XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $
! * $Header: charproc.c,v 1.1 89/05/30 14:53:32 kagotani Rel $
*/
--- 1,6 ----
/*
* $XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $
! * $Header: charproc.c,v 1.2 89/07/08 16:10:16 kagotani Rel $
*/
***************
*** 165,171 ****
#ifndef lint
static char rcs_id[] = "$XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $";
! static char kterm_id[] = "$Header: charproc.c,v 1.1 89/05/30 14:53:32 kagotani Rel $";
#endif /* lint */
static long arg;
--- 165,171 ----
#ifndef lint
static char rcs_id[] = "$XConsortium: charproc.c,v 1.64 89/01/04 13:37:50 jim Exp $";
! static char kterm_id[] = "$Header: charproc.c,v 1.2 89/07/08 16:10:16 kagotani Rel $";
#endif /* lint */
static long arg;
***************
*** 1679,1684 ****
--- 1679,1688 ----
cx = CursorX(screen, screen->cur_col);
cy = CursorY(screen, screen->cur_row)+screen->fnt_norm->ascent;
#ifdef KANJI /* sano & michael */
+ BreakKanji(screen);
+ screen->cur_col += len;
+ BreakKanji(screen);
+ screen->cur_col -= len;
if (fgs & KCS) {
/*
* Draw Kanji string with currentGC. If no k_boldGC nor
*** kterm.3.1.0/patchlevel.c Tue May 30 14:53:50 1989
--- kterm.3.1.1/patchlevel.c Sat Jul 8 16:10:30 1989
***************
*** 2,7 ****
/*
* Patchlevel for the difference between xterm and kterm.
*/
! static char kterm_patchlevel[] = "kterm 3.1.0 based on xterm in release 3";
! char menuname[] = "kterm X11/3.1.0";
#endif KANJI
--- 2,7 ----
/*
* Patchlevel for the difference between xterm and kterm.
*/
! static char kterm_patchlevel[] = "kterm 3.1.1 based on xterm in release 3";
! char menuname[] = "kterm X11/3.1.1";
#endif KANJI
*** kterm.3.1.0/util.c Tue May 30 14:53:59 1989
--- kterm.3.1.1/util.c Sat Jul 8 16:10:36 1989
***************
*** 1,6 ****
/*
* $XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $
! * $Header: util.c,v 1.1 89/05/30 14:53:58 kagotani Rel $
*/
#include <X11/copyright.h>
--- 1,6 ----
/*
* $XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $
! * $Header: util.c,v 1.2 89/07/08 16:10:32 kagotani Rel $
*/
#include <X11/copyright.h>
***************
*** 32,38 ****
#ifndef lint
static char rcs_id[] = "$XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $";
! static char kterm_id[] = "$Header: util.c,v 1.1 89/05/30 14:53:58 kagotani Rel $";
#endif /* lint */
#include <stdio.h>
--- 32,38 ----
#ifndef lint
static char rcs_id[] = "$XConsortium: util.c,v 1.10 88/10/07 08:20:08 swick Exp $";
! static char kterm_id[] = "$Header: util.c,v 1.2 89/07/08 16:10:32 kagotani Rel $";
#endif /* lint */
#include <stdio.h>
***************
*** 587,592 ****
--- 587,596 ----
if(!AddToRefresh(screen)) {
if(screen->scroll_amt)
FlushScroll(screen);
+
+ #ifdef KANJI /* kagotani */
+ BreakKanji(screen);
+ #endif KANJI
if (screen->incopy)
CopyWait (screen);
***************
*** 645,650 ****
--- 649,661 ----
FlushScroll(screen);
width = n * FontWidth(screen);
+
+ #ifdef KANJI /* kagotani */
+ BreakKanji(screen);
+ screen->cur_col += n;
+ BreakKanji(screen);
+ screen->cur_col -= n;
+ #endif KANJI
if (screen->incopy)
CopyWait (screen);
***************
*** 741,746 ****
--- 752,760 ----
if(!AddToRefresh(screen)) {
if(screen->scroll_amt)
FlushScroll(screen);
+ #ifdef KANJI /* kagotani */
+ BreakKanji(screen);
+ #endif KANJI
XFillRectangle(screen->display, TextWindow(screen),
#ifdef STATUSLINE /* michael */
screen->instatus ? screen->normalGC :
***************
*** 776,781 ****
--- 790,798 ----
if(!AddToRefresh(screen)) {
if(screen->scroll_amt)
FlushScroll(screen);
+ #ifdef KANJI /* kagotani */
+ BreakKanji(screen);
+ #endif KANJI
XFillRectangle (screen->display, TextWindow(screen),
#ifdef STATUSLINE /* michael */
screen->instatus ? screen->normalGC :
***************
*** 1050,1052 ****
--- 1067,1094 ----
return;
}
+ #ifdef KANJI /* kagotani */
+ /*
+ * If the cursor points KCS2 character, replace this Kanji into two blanks.
+ */
+ BreakKanji(screen)
+ register TScreen *screen;
+ {
+ register char *col;
+ register char *att;
+ if (screen->cur_col >= 1 && screen->cur_col <= screen->max_col
+ && *(att = screen->buf[2*screen->cur_row+1]+screen->cur_col) & KCS2) {
+ col = screen->buf[2*screen->cur_row] + screen->cur_col;
+ XFillRectangle(screen->display, TextWindow(screen),
+ #ifdef STATUSLINE
+ screen->instatus ? screen->normalGC :
+ #endif STATUSLINE
+ screen->reverseGC,
+ CursorX(screen, screen->cur_col - 1),
+ CursorY(screen, screen->cur_row),
+ 2 * FontWidth(screen), FontHeight(screen));
+ bzero(col - 1, 2);
+ bzero(att - 1, 2);
+ }
+ }
+ #endif KANJI
More information about the Comp.sources.x
mailing list