*** cli_xcin.c.orig Tue Sep 28 22:52:05 1999 --- cli_xcin.c Tue Sep 28 22:52:05 1999 *************** *** 139,142 **** --- 139,143 ---- #else u_char res[sizeof(XCIN_RES)]; + int res_len; #endif int ofs; *************** *** 171,175 **** return res.status; #else ! memcpy(buf, res+10, res[0] + (res[1]<<8) + (res[2]<<16) + (res[3]<<24)); inmdstate.kb_state = res[8]; inmdstate._CurInMethod = res[9]; --- 172,178 ---- return res.status; #else ! res_len = res[0] + (res[1]<<8) + (res[2]<<16) + (res[3]<<24); ! memcpy(buf, res+10, res_len); ! buf[res_len] = 0; inmdstate.kb_state = res[8]; inmdstate._CurInMethod = res[9]; *** convxim.c.orig Tue Sep 28 22:52:06 1999 --- convxim.c Tue Sep 28 22:52:06 1999 *************** *** 304,308 **** XRectangle s_rect; XVaNestedList preedit_attr,status_attr; ! char gszAttemptedFontName[MAXSTRING+1]; if (im == NULL || ic == NULL || !overthespot) return; --- 304,308 ---- XRectangle s_rect; XVaNestedList preedit_attr,status_attr; ! char szAttemptedFontName[MAXSTRING+1]; if (im == NULL || ic == NULL || !overthespot) return; *************** *** 309,314 **** if (XIMfs) XFreeFontSet(dpy, XIMfs); ! GetCurFontInfoStr(gszAttemptedFontName); ! XIMfs=XCreateFontSet(dpy, gszAttemptedFontName, &missing_list, &missing_count, &def_string); fs_ext=XExtentsOfFontSet(XIMfs); --- 309,314 ---- if (XIMfs) XFreeFontSet(dpy, XIMfs); ! GetCurFontInfoStr(szAttemptedFontName, sizeof(szAttemptedFontName)); ! XIMfs=XCreateFontSet(dpy, szAttemptedFontName, &missing_list, &missing_count, &def_string); fs_ext=XExtentsOfFontSet(XIMfs); *** cutpaste.c.orig Tue Sep 28 22:52:07 1999 --- cutpaste.c Tue Sep 28 22:52:07 1999 *************** *** 535,541 **** SaveCursorPositionInCurText(); } else { ! TieLooseEnds(); ! SetCurChoice(NOTHING); ! if (topSel != NULL) { HighLightReverse(); RemoveAllSel(); } } saved_top_obj = topObj; --- 535,539 ---- SaveCursorPositionInCurText(); } else { ! MakeQuiescent(); } saved_top_obj = topObj; *************** *** 590,593 **** --- 588,605 ---- return FALSE; + } else if (curChoice == DRAWTEXT) { + /* we've made a mistake earlier on, should have MakeQuiescent() */ + struct ObjRec *pasted_top_obj=topObj, *pasted_bot_obj=botObj; + + curPage->top = topObj = saved_top_obj; + curPage->bot = botObj = saved_bot_obj; + RestoreCursorPositionInCurText(); + + MakeQuiescent(); + + saved_top_obj = topObj; + saved_bot_obj = botObj; + curPage->top = topObj = pasted_top_obj; + curPage->bot = botObj = pasted_bot_obj; } if (topObj != NULL) SetFileModified(TRUE); *** drawing.c.orig Tue Sep 28 22:52:09 1999 --- drawing.c Tue Sep 28 22:52:09 1999 *************** *** 1913,1916 **** --- 1913,1917 ---- } break; + default: return INVALID; } } else if ((state & Mod1Mask) && (!(state & ControlMask))) { *************** *** 1971,1974 **** --- 1972,1976 ---- case '<': /*#<*/ LockSelObj(); break; case '>': /*#>*/ UnlockSelObj(); break; + default: return INVALID; } } else if ((state & Mod1Mask) && (state & ControlMask)) { *************** *** 2010,2013 **** --- 2012,2016 ---- case '9': /*^#9*/ FindNoCase(); break; case '0': /*^#0*/ FindCaseSensitive(); break; + default: return INVALID; } } else if (name != NULL && key_sym == '\0' && state == 0) { *************** *** 2464,2470 **** int ShortHand(input) XEvent *input; ! /* returns BAD if the character is a or a character */ ! /* returns INVALID if the character is a normal character */ ! /* otherwise, returns the value of sub-functions, such as QuitProc() */ { register int i; --- 2467,2478 ---- int ShortHand(input) XEvent *input; ! /* ! * returns BAD if the character is a or a character ! * this will cause the event to be swollowed ! * returns INVALID if the character is a normal character, this means ! * that the event it not processed and will be handled by a ! * routine later ! * otherwise, returns the value of sub-functions, such as QuitProc() ! */ { register int i; *** file.c.orig Tue Sep 28 22:52:11 1999 --- file.c Tue Sep 28 22:52:11 1999 *************** *** 2638,2641 **** --- 2638,2648 ---- } SetCanvasFont(); + /* + * if (!PRTGIF && SzUnitToFontSize(curSzUnit) != canvasFontSize) { + * curFont = actualCurFont; + * curSzUnit = actualCurSzUnit; + * SetFileModified(TRUE); + * } + */ } UpdPageStyle(pageStyle); *** font.c.orig Tue Sep 28 22:52:14 1999 --- font.c Tue Sep 28 22:52:14 1999 *************** *** 162,165 **** --- 162,169 ---- int curUnderlineOn=FALSE; + int actualCurFont=(-1); + int actualCurSzUnit=(-1); + int actualCurStyle=(-1); + int curUnderlineYOffset=2; *************** *** 180,188 **** int changingFontSizeFromRead=TRUE; - #ifdef _TGIF_DBG int allowFontFaceSubstitution=TRUE; - #else /* ~_TGIF_DBG */ - int allowFontFaceSubstitution=FALSE; - #endif /* _TGIF_DBG */ char cmdLineDontReencode[MAXSTRING<<1]; --- 184,188 ---- *************** *** 467,472 **** #define PS_FONT_NAME 2 ! char *GetCurFontInfoStr(retstr) ! char* retstr; { int font_index=curFont; --- 467,473 ---- #define PS_FONT_NAME 2 ! void GetCurFontInfoStr(buf, buf_sz) ! char* buf; ! int buf_sz; { int font_index=curFont; *************** *** 482,487 **** fontInfoStr[info_index+X_FONT_SUFFIX]); } ! strcpy(retstr, gszAttemptedFontName); ! return retstr; } --- 483,487 ---- fontInfoStr[info_index+X_FONT_SUFFIX]); } ! UtilStrCpyN(buf, buf_sz, gszAttemptedFontName); } *************** *** 591,594 **** --- 591,595 ---- if (allowFontFaceSubstitution && !IsFontDoubleByte(font_index)) { int default_info_index=InfoIndex(defaultCurFont,defaultCurStyle); + char failed_font_name[MAXSTRING]; LoadAFont(default_info_index, defaultFontSize, FALSE, &xfs, *************** *** 606,610 **** return NULL; } ! sprintf(gszMsgBox, TgLoadString(STID_FONT_SUBS_CANNOT_EDIT), fontInfoStr[default_info_index+PS_FONT_NAME], SzUnitToFontSize(defaultCurSzUnit), --- 607,613 ---- return NULL; } ! GetCurFontInfoStr(failed_font_name, sizeof(failed_font_name)); ! sprintf(gszMsgBox, TgLoadString(STID_FAIL_LOAD_FONT_FONT_SUBS), ! gszAttemptedFontName, fontInfoStr[default_info_index+PS_FONT_NAME], SzUnitToFontSize(defaultCurSzUnit), *************** *** 612,615 **** --- 615,622 ---- SzUnitToFontSize(sz_unit)); MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + + actualCurFont = defaultCurFont; + actualCurStyle = defaultCurStyle; + actualCurSzUnit = defaultCurSzUnit; } } else if (changingFontSizeFromRead) { *************** *** 1724,1727 **** --- 1731,1737 ---- int vert=FALSE, rc=TRUE; + actualCurFont = curFont; + actualCurStyle = curStyle; + actualCurSzUnit = curSzUnit; fs_ptr = FindFontInfo(curFont, curStyle, curSzUnit, FALSE); *************** *** 1730,1733 **** --- 1740,1746 ---- TgAssert(FALSE, "Font substitution detected in SetCanvasFont()", NULL); #endif /* _TGIF_DBG */ + actualCurFont = defaultCurFont; + actualCurStyle = defaultCurStyle; + actualCurSzUnit = defaultCurSzUnit; fs_ptr = FindFontInfo(defaultCurFont, defaultCurStyle, defaultCurSzUnit, FALSE); *** http.c.orig Tue Sep 28 22:52:16 1999 --- http.c Tue Sep 28 22:52:16 1999 *************** *** 1277,1281 **** } } ! if (ReadFromSocket(n_socket)) { bytes_read = read(n_socket, &buf[len], buf_sz-len-1); } else { --- 1277,1281 ---- } } ! if (PRTGIF || ReadFromSocket(n_socket)) { bytes_read = read(n_socket, &buf[len], buf_sz-len-1); } else { *** miniline.c.orig Tue Sep 28 22:52:18 1999 --- miniline.c Tue Sep 28 22:52:19 1999 *************** *** 646,650 **** if (SzUnitToFontSize(curSzUnit) != canvasFontSize) { #ifdef _TGIF_DBG /* debug, do not translate */ ! TgAssert(FALSE, "read_only detected in RecalcStrSegMetrics()", NULL); #endif /* _TGIF_DBG */ read_only = TRUE; --- 646,650 ---- if (SzUnitToFontSize(curSzUnit) != canvasFontSize) { #ifdef _TGIF_DBG /* debug, do not translate */ ! fprintf(stderr, "RecalcStrSegMetrics(): read_only detected.\n"); #endif /* _TGIF_DBG */ read_only = TRUE; *** poly.c.orig Tue Sep 28 22:52:21 1999 --- poly.c Tue Sep 28 22:52:21 1999 *************** *** 2636,2643 **** struct ObjRec *ObjPtr; { ! register int i; struct PolyRec *poly_ptr=ObjPtr->detail.p; ! IntPoint *pv=poly_ptr->vlist, *intvs, *vs; ! int n=poly_ptr->n, intn; if (ObjPtr->ctm == NULL) return; --- 2636,2643 ---- struct ObjRec *ObjPtr; { ! int i; struct PolyRec *poly_ptr=ObjPtr->detail.p; ! IntPoint *pv=poly_ptr->vlist, *intvs=NULL, *vs=NULL; ! int n=poly_ptr->n, intn=0; if (ObjPtr->ctm == NULL) return; *************** *** 2671,2675 **** &(poly_ptr->rotated_n), &(intn), &(intvs), drawOrigX, drawOrigY, n, vs); - free(intvs); break; } --- 2671,2674 ---- *************** *** 2679,2684 **** poly_ptr->rotated_vlist[0].y; ! if (poly_ptr->style != LS_PLAIN && !RetractedArrowAttr(ObjPtr) && ! !AutoRetractedArrowAttr(ObjPtr,True)) { int aw=poly_ptr->aw, dx, dy; double len, sin, cos; --- 2678,2683 ---- poly_ptr->rotated_vlist[0].y; ! if (poly_ptr->style != LS_PLAIN & !RetractedArrowAttr(ObjPtr) && ! !AutoRetractedArrowAttr(ObjPtr,TRUE)) { int aw=poly_ptr->aw, dx, dy; double len, sin, cos; *************** *** 2686,2709 **** if (aw == 0) aw = 1; ! dx = vs[1].x - vs[0].x; ! dy = vs[1].y - vs[0].y; ! if ((poly_ptr->style & LS_LEFT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! vs[0].x = round(vs[0].x+RETREAT*aw*cos); ! vs[0].y = round(vs[0].y+RETREAT*aw*sin); } ! dx = vs[n-1].x - vs[n-2].x; ! dy = vs[n-1].y - vs[n-2].y; ! if ((poly_ptr->style & LS_RIGHT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! vs[n-1].x = round(vs[n-1].x-RETREAT*aw*cos); ! vs[n-1].y = round(vs[n-1].y-RETREAT*aw*sin); ! } switch (poly_ptr->curved) { case LT_STRAIGHT: --- 2685,2737 ---- if (aw == 0) aw = 1; ! switch (poly_ptr->curved) { ! case LT_STRAIGHT: ! case LT_SPLINE: ! dx = vs[1].x - vs[0].x; ! dy = vs[1].y - vs[0].y; ! if ((poly_ptr->style & LS_LEFT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! vs[0].x = round(vs[0].x+RETREAT*aw*cos); ! vs[0].y = round(vs[0].y+RETREAT*aw*sin); ! } ! dx = vs[n-1].x - vs[n-2].x; ! dy = vs[n-1].y - vs[n-2].y; ! if ((poly_ptr->style & LS_RIGHT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! vs[n-1].x = round(vs[n-1].x-(RETREAT*aw*cos)); ! vs[n-1].y = round(vs[n-1].y-(RETREAT*aw*sin)); ! } ! break; ! case LT_INTSPLINE: ! dx = intvs[1].x - intvs[0].x; ! dy = intvs[1].y - intvs[0].y; ! if ((poly_ptr->style & LS_LEFT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! intvs[0].x = round(intvs[0].x+RETREAT*aw*cos); ! intvs[0].y = round(intvs[0].y+RETREAT*aw*sin); ! } ! dx = intvs[intn-1].x - intvs[intn-2].x; ! dy = intvs[intn-1].y - intvs[intn-2].y; ! if ((poly_ptr->style & LS_RIGHT) && (dx != 0 || dy != 0)) { ! len = (double)sqrt((double)(((double)dx)*((double)dx) + ! ((double)dy)*((double)dy))); ! sin = ((double)dy)/len; ! cos = ((double)dx)/len; ! intvs[intn-1].x = round(intvs[intn-1].x-(RETREAT*aw*cos)); ! intvs[intn-1].y = round(intvs[intn-1].y-(RETREAT*aw*sin)); ! } ! break; } ! } ! if (poly_ptr->style != LS_PLAIN) { switch (poly_ptr->curved) { case LT_STRAIGHT: *************** *** 2714,2721 **** break; case LT_INTSPLINE: ! poly_ptr->rotated_asvlist = MakeIntSplinePolyVertex( ! &(poly_ptr->rotated_asn), &(intn), &(intvs), ! drawOrigX, drawOrigY, n, vs); ! free(intvs); break; } --- 2742,2747 ---- break; case LT_INTSPLINE: ! poly_ptr->rotated_asvlist = MakeSplinePolyVertex( ! &(poly_ptr->rotated_asn), drawOrigX, drawOrigY, intn, intvs); break; } *************** *** 2722,2725 **** --- 2748,2752 ---- } free(vs); + if (intvs != NULL) free(intvs); } *************** *** 2841,2846 **** v1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); v1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[n-3].x-obj_ptr->x, ! intvlist[n-3].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus2->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus2->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); --- 2868,2873 ---- v1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); v1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[intn-3].x-obj_ptr->x, ! intvlist[intn-3].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus2->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus2->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); *************** *** 2858,2878 **** v1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); v1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[n-2].x-obj_ptr->x, ! intvlist[n-2].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus2->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus2->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[n-1].x-obj_ptr->x, ! intvlist[n-1].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); - - v0->x = ZOOMED_SIZE(intvlist[0].x-real_x_off); - v0->y = ZOOMED_SIZE(intvlist[0].y-real_y_off); - v1->x = ZOOMED_SIZE(intvlist[1].x-real_x_off); - v1->y = ZOOMED_SIZE(intvlist[1].y-real_y_off); - vnminus2->x = ZOOMED_SIZE(intvlist[intn-2].x-real_x_off); - vnminus2->y = ZOOMED_SIZE(intvlist[intn-2].y-real_y_off); - vnminus1->x = ZOOMED_SIZE(intvlist[intn-1].x-real_x_off); - vnminus1->y = ZOOMED_SIZE(intvlist[intn-1].y-real_y_off); } } --- 2885,2896 ---- v1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); v1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[intn-2].x-obj_ptr->x, ! intvlist[intn-2].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus2->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus2->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); ! TransformPointThroughCTM(intvlist[intn-1].x-obj_ptr->x, ! intvlist[intn-1].y-obj_ptr->y, obj_ptr->ctm, &x, &y); vnminus1->x = ZOOMED_SIZE(x+obj_ptr->x-real_x_off); vnminus1->y = ZOOMED_SIZE(y+obj_ptr->y-real_y_off); } } *************** *** 2885,2889 **** struct ObjRec *ObjPtr; { ! register struct PolyRec *poly_ptr=ObjPtr->detail.p; XPoint *v, tmp_v[4]; XPoint v0, v1, vnminus2, vnminus1; --- 2903,2907 ---- struct ObjRec *ObjPtr; { ! struct PolyRec *poly_ptr=ObjPtr->detail.p; XPoint *v, tmp_v[4]; XPoint v0, v1, vnminus2, vnminus1; *** strtbl.c.orig Tue Sep 28 22:52:23 1999 --- strtbl.c Tue Sep 28 22:52:23 1999 *************** *** 1415,1420 **** /* STID_TOOL_CANT_HANDLE_DB_FONT */ N_("The '%s' double-byte font has min_byte1=\\%03o and max_byte1=\\%03o.\n%s does not know how to handle this double-byte font.\nPlease don't use this font and e-mail this error message to %s."), ! /* STID_FONT_SUBS_CANNOT_EDIT */ ! N_("%s-%1d substituted for %s-%1d.\n\nSuch text cannot be edited and most likely look ugly."), /* STID_FONT_SUBSTITUTED */ N_("%s-%1d substituted for %s-%1d."), --- 1415,1420 ---- /* STID_TOOL_CANT_HANDLE_DB_FONT */ N_("The '%s' double-byte font has min_byte1=\\%03o and max_byte1=\\%03o.\n%s does not know how to handle this double-byte font.\nPlease don't use this font and e-mail this error message to %s."), ! /* STID_FAIL_LOAD_FONT_FONT_SUBS */ ! N_("Fail to load the following font: '%s'.\n\n%s-%1d substituted for %s-%1d."), /* STID_FONT_SUBSTITUTED */ N_("%s-%1d substituted for %s-%1d."), *************** *** 2148,2152 **** N_("Safest thing to do is to save file and exit.\nPlease try to reproduce this error and\n\tsend bug report to %s."), /* STID_FATAL_UNEXPECTED_ERROR */ ! N_("Fatal Unexpected Error: %s%s%s\n\nSafest thing to do is to save file and exit.\nPlease try to reproduce this error and\n\tsend bug report to %s."), /* STID_ENTER_FNAME_TO_WRITE_MSG_BUF */ N_("Please enter a file name to write the message buffer content:"), --- 2148,2152 ---- N_("Safest thing to do is to save file and exit.\nPlease try to reproduce this error and\n\tsend bug report to %s."), /* STID_FATAL_UNEXPECTED_ERROR */ ! N_("Fatal Unexpected Error: %s%s%s\n\nSafest thing to do is to save file and exit.\n\nPlease try to reproduce this error and send bug report to %s."), /* STID_ENTER_FNAME_TO_WRITE_MSG_BUF */ N_("Please enter a file name to write the message buffer content:"), *** text.c.orig Tue Sep 28 22:52:26 1999 --- text.c Tue Sep 28 22:52:26 1999 *************** *** 4385,4388 **** --- 4385,4391 ---- ReadMiniLines(FP, NULL, &minilines); PopCurFont(); + if (minilines == NULL) { + return FALSE; + } firstMiniLine = minilines->first; lastMiniLine = minilines->last; *** font.e.orig Tue Sep 28 22:52:28 1999 --- font.e Tue Sep 28 22:52:28 1999 *************** *** 95,98 **** --- 95,102 ---- extern int curUnderlineOn; + extern int actualCurFont; + extern int actualCurSzUnit; + extern int actualCurStyle; + extern int curUnderlineYOffset; *************** *** 136,140 **** char *pszCur)); extern char * GetShowFontChar ARGS_DECL((int FontIndex)); ! extern char * GetCurFontInfoStr ARGS_DECL((char *retstr)); extern void GetPSFontStr ARGS_DECL((int FontIndex, int Style, char *)); extern void MapAliasedPSFontName ARGS_DECL((char *buf, int buf_sz)); --- 140,144 ---- char *pszCur)); extern char * GetShowFontChar ARGS_DECL((int FontIndex)); ! extern void GetCurFontInfoStr ARGS_DECL((char *buf, int buf_sz)); extern void GetPSFontStr ARGS_DECL((int FontIndex, int Style, char *)); extern void MapAliasedPSFontName ARGS_DECL((char *buf, int buf_sz)); *** strtbl.e.orig Tue Sep 28 22:52:29 1999 --- strtbl.e Tue Sep 28 22:52:29 1999 *************** *** 708,712 **** #define STID_ILLEGAL_DOUBLE_BYTE_TRUNC 1447 #define STID_TOOL_CANT_HANDLE_DB_FONT 1448 ! #define STID_FONT_SUBS_CANNOT_EDIT 1449 #define STID_FONT_SUBSTITUTED 1450 #define STID_CANNOT_GET_IMAGE_OF_SIZE 1451 --- 708,712 ---- #define STID_ILLEGAL_DOUBLE_BYTE_TRUNC 1447 #define STID_TOOL_CANT_HANDLE_DB_FONT 1448 ! #define STID_FAIL_LOAD_FONT_FONT_SUBS 1449 #define STID_FONT_SUBSTITUTED 1450 #define STID_CANNOT_GET_IMAGE_OF_SIZE 1451 *** patchlvl.h.orig Tue Sep 28 22:52:31 1999 --- patchlvl.h Tue Sep 28 22:52:31 1999 *************** *** 35,39 **** #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 20 #endif /*_TGIF_PATCHLEVEL_H_*/ --- 35,39 ---- #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 21 #endif /*_TGIF_PATCHLEVEL_H_*/ *** Imakefile.orig Tue Sep 28 22:52:32 1999 --- Imakefile Tue Sep 28 22:52:32 1999 *************** *** 53,57 **** $(MOREDEFINES) ! TGIFVERSION = 4.1.20 XCOMM Things to try to add to the DEFINES line above: --- 53,57 ---- $(MOREDEFINES) ! TGIFVERSION = 4.1.21 XCOMM Things to try to add to the DEFINES line above: *** HISTORY.orig Tue Sep 28 22:52:33 1999 --- HISTORY Tue Sep 28 22:52:33 1999 *************** *** 1,5 **** -----------------------> tgif-4.1.19 => tgif-4.1.20 <----------------------- 1) Fix a crashing bug with rotated arcs with very small angles. Thanks to ! Rainer Krienke for pointingn out this ancient bug. 2) Fix a crashing bug when redrawing is interrupted immediately after objects --- 1,15 ---- + -----------------------> tgif-4.1.20 => tgif-4.1.21 <----------------------- + 1) Fix a crashing bug with pasting compound object into a modified text + object in text mode. + 2) Fix a crashing bug with "-print -raw http://...". + 3) Fix cursorkey bug. Thanks to Stefan Schippers + for pointing out the bug. + 4) Fix arrow problems with rotated interpolated splines. Thanks to + Heiko Scheit for pointing out + the problem. + -----------------------> tgif-4.1.19 => tgif-4.1.20 <----------------------- 1) Fix a crashing bug with rotated arcs with very small angles. Thanks to ! Rainer Krienke for pointing out this ancient bug. 2) Fix a crashing bug when redrawing is interrupted immediately after objects