Article View: comp.sources.bugs
Article #2Tgif-2.12-patch11 (11th patch for tgif-2.12), Part 01/01
From: William Cheng
Date: Wed, 04 Nov 1992 07:34
Date: Wed, 04 Nov 1992 07:34
756 lines
27956 bytes
27956 bytes
Below is tgif-2.12-patch11 (11th patch for tgif-2.12).
Tgif is an Xlib based 2-D drawing tool under X11.
Remove everything outside of the 'cut here' lines (inclusive), save
the file as tgif-2.12-patch11, and apply the patch with
'patch -p -N < tgif-2.12-patch11'. Here's a short list of added
features/bug fixes.
1) Fix a bug in erasing text from a grouped object. This bug only appears if
the Tgif*GroupedTextEditable X default is set to 'true'.
2) Fix a bug in setting the clipping rectangles. Sometimes, tgif would not
redraw properly. Thanks to Yoichiro Ueno <ueno@cs.titech.ac.jp> for the
fix.
3) Fix a bug in copying objects with attributes. It used to be that every
time such a object is copied, the ordering of the attributes are reversed.
4) Fix a typo in box.c. This bug only appears if -DNO_THIN_LINE is specified
as a compile option.
Please send bug reports to william@cs.ucla.edu.
---------------------------------> cut here <---------------------------------
*** attr.c.orig Fri Aug 14 07:33:51 1992
--- attr.c Fri Aug 14 07:33:53 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/attr.c,v 2.59 1992/06/23 17:00:47 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/attr.c,v 2.60 1992/08/09 02:16:13 william Exp $";
#endif
***************
*** 281,286 ****
topAttr = botAttr = NULL;
! from_attr_ptr = FromObjPtr->fattr;
! for ( ; from_attr_ptr != NULL; from_attr_ptr = from_attr_ptr->next)
{
to_attr_ptr = (struct AttrRec *) calloc (1, sizeof(struct AttrRec));
--- 281,286 ----
topAttr = botAttr = NULL;
! from_attr_ptr = FromObjPtr->lattr;
! for ( ; from_attr_ptr != NULL; from_attr_ptr = from_attr_ptr->prev)
{
to_attr_ptr = (struct AttrRec *) calloc (1, sizeof(struct AttrRec));
*** auxtext.c.orig Fri Aug 14 07:33:58 1992
--- auxtext.c Fri Aug 14 07:34:00 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.c,v 2.28 1992/08/08 08:28:04 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.c,v 2.32 1992/08/14 06:37:56 william Exp $";
#endif
***************
*** 511,522 ****
}
! struct ObjRec * FindTextObj (XOff, YOff)
! int XOff, YOff;
! /* XOff and YOff are screen offsets */
{
! register struct ObjRec * obj_ptr;
! register struct AttrRec * attr_ptr;
! struct ObjRec * found_text_obj;
! struct SelRec * sel_ptr, * next_sel;
if (outerSel != NULL)
--- 511,518 ----
}
! static
! void CleanOuterInnerSel ()
{
! register struct SelRec * sel_ptr, * next_sel;
if (outerSel != NULL)
***************
*** 529,533 ****
--- 525,541 ----
outerSel = innerSel = NULL;
}
+ }
+
+ struct ObjRec * FindTextObj (XOff, YOff)
+ int XOff, YOff;
+ /* XOff and YOff are screen offsets */
+ {
+ register struct ObjRec * obj_ptr;
+ register struct AttrRec * attr_ptr;
+ struct ObjRec * found_text_obj;
+ struct SelRec * sel_ptr;
+ CleanOuterInnerSel ();
+
for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
if (obj_ptr->type == OBJ_TEXT &&
***************
*** 576,579 ****
--- 584,630 ----
}
return (NULL);
+ }
+
+ void UnlinkCurTextFromInnerSel ()
+ {
+ register struct GroupRec * group_obj=innerSel->obj->detail.r;
+
+ if (group_obj->first == group_obj->last)
+ {
+ if (outerSel != innerSel || innerSel->obj->fattr != NULL)
+ {
+ Msg ("Error! The text object within a composite object which you");
+ Msg (" have just erased caused all ancestors to be deleted.");
+ Msg (" You may see ghost images now!");
+ Msg (" Please undo and try ungroup the ancestor object first");
+ Msg (" before erasing the text.");
+ fprintf (stderr, "%s\n%s\n%s\n%s\n%s\n",
+ "Error! The text object within a composite object which you",
+ " have just erased caused all ancestors to be deleted.",
+ " You may see ghost images now!",
+ " Please undo and try ungroup the ancestor object first",
+ " before erasing the text.");
+ }
+ DelObj (outerSel->obj);
+ CleanOuterInnerSel ();
+ curTextObj = NULL;
+ return;
+ }
+ else if (curTextObj == group_obj->first)
+ {
+ curTextObj->next->prev = NULL;
+ group_obj->first = curTextObj->next;
+ }
+ else if (curTextObj == group_obj->last)
+ {
+ curTextObj->prev->next = NULL;
+ group_obj->last = curTextObj->prev;
+ }
+ else
+ {
+ curTextObj->prev->next = curTextObj->next;
+ curTextObj->next->prev = curTextObj->prev;
+ }
+ curTextObj->prev = curTextObj->next = NULL;
}
*** box.c.orig Fri Aug 14 07:34:09 1992
--- box.c Fri Aug 14 07:34:10 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/box.c,v 2.33 1992/06/01 16:16:41 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/box.c,v 2.34 1992/08/14 03:56:31 william Exp $";
#endif
***************
*** 274,278 ****
values.line_width = ZOOMED_SIZE(width);
#ifdef NO_THIN_LINE
! if (vluae.line_width < 1) values.line_width = 1;
#endif
values.join_style = JoinMiter;
--- 274,278 ----
values.line_width = ZOOMED_SIZE(width);
#ifdef NO_THIN_LINE
! if (value.line_width < 1) values.line_width = 1;
#endif
values.join_style = JoinMiter;
*** cmd.c.orig Fri Aug 14 07:34:16 1992
--- cmd.c Fri Aug 14 07:34:19 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/cmd.c,v 2.17 1992/03/31 07:51:35 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/cmd.c,v 2.18 1992/08/14 04:03:01 william Exp $";
#endif
***************
*** 148,152 ****
next_cmd = cmd_ptr->next;
DeleteARedoRecord (cmd_ptr);
- cfree (cmd_ptr);
}
break;
--- 148,151 ----
*** drawing.c.orig Fri Aug 14 07:34:25 1992
--- drawing.c Fri Aug 14 07:34:27 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.114 1992/07/24 05:20:38 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.115 1992/08/11 03:58:46 william Exp $";
#endif
***************
*** 80,84 ****
#define O_GRID (O_VIS+O_INVIS)
! int numRedrawBBox=INVALID;
static int checkBBox=TRUE;
--- 80,87 ----
#define O_GRID (O_VIS+O_INVIS)
! int numRedrawBBox=INVALID;
! int numClipRecs=0;
! int clipOrdering=Unsorted;
! XRectangle clipRecs[4];
static int checkBBox=TRUE;
***************
*** 87,94 ****
void SetDefaultDrawWinClipRecs ()
{
! XRectangle recs[1];
!
! SetRecVals (recs[0], 0, 0, ZOOMED_SIZE(drawWinW), ZOOMED_SIZE(drawWinH));
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, recs, 1, YXBanded);
}
--- 90,98 ----
void SetDefaultDrawWinClipRecs ()
{
! SetRecVals (clipRecs[0], 0, 0, ZOOMED_SIZE(drawWinW), ZOOMED_SIZE(drawWinH));
! numClipRecs = 1;
! clipOrdering = YXBanded;
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, clipRecs, numClipRecs,
! clipOrdering);
}
***************
*** 95,102 ****
void SetDefaultIconWinClipRecs ()
{
! XRectangle recs[1];
!
! SetRecVals (recs[0], 0, 0, iconWindowW, iconWindowH);
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, recs, 1, YXBanded);
}
--- 99,107 ----
void SetDefaultIconWinClipRecs ()
{
! SetRecVals (clipRecs[0], 0, 0, iconWindowW, iconWindowH);
! numClipRecs = 1;
! clipOrdering = YXBanded;
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, clipRecs, numClipRecs,
! clipOrdering);
}
***************
*** 273,281 ****
{
register struct ObjRec * obj_ptr;
- XRectangle recs[1];
! SetRecVals (recs[0], OFFSET_X(LtX), OFFSET_Y(LtY), ZOOMED_SIZE(RbX-LtX)+1,
! ZOOMED_SIZE(RbY-LtY)+1);
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, recs, 1, YXBanded);
XClearArea (mainDisplay, drawWindow, OFFSET_X(LtX), OFFSET_Y(LtY),
--- 278,288 ----
{
register struct ObjRec * obj_ptr;
! SetRecVals (clipRecs[0], OFFSET_X(LtX), OFFSET_Y(LtY),
! ZOOMED_SIZE(RbX-LtX)+1, ZOOMED_SIZE(RbY-LtY)+1);
! numClipRecs = 1;
! clipOrdering = YXBanded;
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, clipRecs, numClipRecs,
! clipOrdering);
XClearArea (mainDisplay, drawWindow, OFFSET_X(LtX), OFFSET_Y(LtY),
***************
*** 314,320 ****
{
register struct ObjRec * obj_ptr;
! int ltx, lty, rbx, rby, rec1_slot, num;
struct BBRec bbox1, bbox2;
- XRectangle recs[4];
bbox1.ltx = LtX1; bbox1.lty = LtY1;
--- 321,326 ----
{
register struct ObjRec * obj_ptr;
! int ltx, lty, rbx, rby, rec1_slot;
struct BBRec bbox1, bbox2;
bbox1.ltx = LtX1; bbox1.lty = LtY1;
***************
*** 348,356 ****
{
rec1_slot = (LtX1 <= LtX2) ? 0 : 1;
! SetRecVals (recs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (recs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! num = 2;
}
else
--- 354,362 ----
{
rec1_slot = (LtX1 <= LtX2) ? 0 : 1;
! SetRecVals (clipRecs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (clipRecs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! numClipRecs = 2;
}
else
***************
*** 360,368 ****
if (RbY1 <= LtY2)
{ /* y-extents do not intersect */
! SetRecVals (recs[0], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (recs[1], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! num = 2;
}
else if (RbY1 >= RbY2)
--- 366,374 ----
if (RbY1 <= LtY2)
{ /* y-extents do not intersect */
! SetRecVals (clipRecs[0], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (clipRecs[1], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! numClipRecs = 2;
}
else if (RbY1 >= RbY2)
***************
*** 369,387 ****
{ /* box 2's y-extents is inside box 1's y-extents */
rec1_slot = (LtX1 < LtX2) ? 0 : 1;
! SetRecVals (recs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (recs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! num = 2;
}
else
{
! SetRecVals (recs[0], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(LtY2-LtY1)+1);
if (LtX1 < LtX2)
{
! SetRecVals (recs[1], OFFSET_X(LtX1), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
! SetRecVals (recs[2], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
}
--- 375,393 ----
{ /* box 2's y-extents is inside box 1's y-extents */
rec1_slot = (LtX1 < LtX2) ? 0 : 1;
! SetRecVals (clipRecs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (clipRecs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! numClipRecs = 2;
}
else
{
! SetRecVals (clipRecs[0], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(LtY2-LtY1)+1);
if (LtX1 < LtX2)
{
! SetRecVals (clipRecs[1], OFFSET_X(LtX1), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
! SetRecVals (clipRecs[2], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
}
***************
*** 388,399 ****
else
{
! SetRecVals (recs[1], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
! SetRecVals (recs[2], OFFSET_X(LtX1), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
}
! SetRecVals (recs[3], OFFSET_X(LtX2), OFFSET_Y(RbY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-RbY1)+1);
! num = 4;
}
}
--- 394,405 ----
else
{
! SetRecVals (clipRecs[1], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
! SetRecVals (clipRecs[2], OFFSET_X(LtX1), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY2)+1);
}
! SetRecVals (clipRecs[3], OFFSET_X(LtX2), OFFSET_Y(RbY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-RbY1)+1);
! numClipRecs = 4;
}
}
***************
*** 402,410 ****
if (RbY2 <= LtY1)
{ /* y-extents do not intersect */
! SetRecVals (recs[0], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! SetRecVals (recs[1], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! num = 2;
}
else if (RbY2 >= RbY1)
--- 408,416 ----
if (RbY2 <= LtY1)
{ /* y-extents do not intersect */
! SetRecVals (clipRecs[0], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! SetRecVals (clipRecs[1], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! numClipRecs = 2;
}
else if (RbY2 >= RbY1)
***************
*** 411,429 ****
{ /* box 1's y-extents is inside box 2's y-extents */
rec1_slot = (LtX1 < LtX2) ? 0 : 1;
! SetRecVals (recs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (recs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! num = 2;
}
else
{
! SetRecVals (recs[0], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(LtY1-LtY2)+1);
if (LtX1 < LtX2)
{
! SetRecVals (recs[1], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
! SetRecVals (recs[2], OFFSET_X(LtX2), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
}
--- 417,435 ----
{ /* box 1's y-extents is inside box 2's y-extents */
rec1_slot = (LtX1 < LtX2) ? 0 : 1;
! SetRecVals (clipRecs[rec1_slot], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-LtY1)+1);
! SetRecVals (clipRecs[!rec1_slot], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY2)+1);
! numClipRecs = 2;
}
else
{
! SetRecVals (clipRecs[0], OFFSET_X(LtX2), OFFSET_Y(LtY2),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(LtY1-LtY2)+1);
if (LtX1 < LtX2)
{
! SetRecVals (clipRecs[1], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
! SetRecVals (clipRecs[2], OFFSET_X(LtX2), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
}
***************
*** 430,445 ****
else
{
! SetRecVals (recs[1], OFFSET_X(LtX2), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
! SetRecVals (recs[2], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
}
! SetRecVals (recs[3], OFFSET_X(LtX1), OFFSET_Y(RbY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-RbY2)+1);
! num = 4;
}
}
}
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, recs, num, YXSorted);
if (paperWidth >= LtX1 && paperWidth <= RbX1 ||
--- 436,453 ----
else
{
! SetRecVals (clipRecs[1], OFFSET_X(LtX2), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX2-LtX2)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
! SetRecVals (clipRecs[2], OFFSET_X(LtX1), OFFSET_Y(LtY1),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY2-LtY1)+1);
}
! SetRecVals (clipRecs[3], OFFSET_X(LtX1), OFFSET_Y(RbY2),
ZOOMED_SIZE(RbX1-LtX1)+1, ZOOMED_SIZE(RbY1-RbY2)+1);
! numClipRecs = 4;
}
}
}
! clipOrdering = YXSorted;
! XSetClipRectangles (mainDisplay, drawGC, 0, 0, clipRecs, numClipRecs,
! clipOrdering);
if (paperWidth >= LtX1 && paperWidth <= RbX1 ||
*** file.c.orig Fri Aug 14 07:34:41 1992
--- file.c Fri Aug 14 07:34:46 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.191 1992/08/08 19:53:29 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.192 1992/08/14 06:14:50 william Exp $";
#endif
***************
*** 621,625 ****
{
len = strlen (curFileName);
! for (c_ptr=&curFileName[len-1]; c_ptr!=curFileName; c_ptr--)
if (*c_ptr == '/')
break;
--- 621,625 ----
{
len = strlen (curFileName);
! for (c_ptr = &curFileName[len-1]; c_ptr != curFileName; c_ptr--)
if (*c_ptr == '/')
break;
*** text.c.orig Fri Aug 14 07:34:56 1992
--- text.c Fri Aug 14 07:34:58 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.104 1992/08/08 08:26:55 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.108 1992/08/14 05:46:05 william Exp $";
#endif
***************
*** 441,450 ****
else
{
! if (outerSel != NULL) AdjAncestorsBBox ();
if (!curTextIsNew)
! ChangeReplaceOneCmdToDeleteCmd ();
else
AbortPrepareCmd (CMD_REPLACE);
! DelObj (curTextObj);
}
--- 441,467 ----
else
{
! if (outerSel != NULL)
! {
! UnlinkCurTextFromInnerSel ();
! AdjAncestorsBBox ();
! }
if (!curTextIsNew)
! {
! if (outerSel != NULL)
! RecordReplaceAnObj (outerSel->obj);
! else
! ChangeReplaceOneCmdToDeleteCmd ();
! }
else
AbortPrepareCmd (CMD_REPLACE);
! if (curTextObj != NULL)
! {
! if (outerSel != NULL)
! /* curTextObj already broken off from the main */
! /* stream of objects, so just free it. */
! FreeObj (curTextObj);
! else
! DelObj (curTextObj);
! }
}
***************
*** 2172,2177 ****
GCClipMask | GCClipXOrigin | GCClipYOrigin, &values);
XFillRectangle (mainDisplay, Win, drawGC, ltx, lty, w, h);
- SetDefaultDrawWinClipRecs ();
XSetClipOrigin (mainDisplay, drawGC, 0, 0);
}
}
--- 2189,2196 ----
GCClipMask | GCClipXOrigin | GCClipYOrigin, &values);
XFillRectangle (mainDisplay, Win, drawGC, ltx, lty, w, h);
XSetClipOrigin (mainDisplay, drawGC, 0, 0);
+ if (numClipRecs > 0)
+ XSetClipRectangles (mainDisplay, drawGC, 0, 0, clipRecs,
+ numClipRecs, clipOrdering);
}
}
*** auxtext.e.orig Fri Aug 14 07:35:01 1992
--- auxtext.e Fri Aug 14 07:35:02 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.e,v 2.11 1992/06/26 05:21:19 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.e,v 2.12 1992/08/12 05:43:55 william Exp $
*/
***************
*** 41,44 ****
--- 41,45 ----
extern void MakeCachedTextBitmap ();
extern struct ObjRec * FindTextObj ();
+ extern void UnlinkCurTextFromInnerSel ();
extern void AdjAncestorsBBox ();
extern void DumpTextObj ();
*** drawing.e.orig Fri Aug 14 07:35:05 1992
--- drawing.e Fri Aug 14 07:35:05 1992
***************
*** 23,30 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.e,v 2.8 1992/05/11 23:41:21 william Exp $
*/
extern int numRedrawBBox;
extern void SetDefaultDrawWinClipRecs ();
--- 23,33 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.e,v 2.9 1992/08/11 03:58:27 william Exp $
*/
extern int numRedrawBBox;
+ extern int numClipRecs;
+ extern int clipOrdering;
+ extern XRectangle clipRecs[];
extern void SetDefaultDrawWinClipRecs ();
*** patchlevel.h.orig Fri Aug 14 07:35:08 1992
--- patchlevel.h Fri Aug 14 07:35:09 1992
***************
*** 23,28 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.28 1992/08/08 08:26:49 william Exp $
*/
! #define TGIF_PATCHLEVEL 10
--- 23,28 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.29 1992/08/11 06:53:25 william Exp $
*/
! #define TGIF_PATCHLEVEL 11
*** Imakefile.orig Fri Aug 14 07:35:12 1992
--- Imakefile Fri Aug 14 07:35:16 1992
***************
*** 23,30 ****
/**/# PERFORMANCE OF THIS SOFTWARE.
/**/#
! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.83 1992/08/08 08:25:01 william Exp $
/**/#
! TGIFVERSION = 2.12-p10
PROGRAMS = tgif prtgif /**/#frontend11.o testdrive
/**/#CDEBUGFLAGS= -g
--- 23,30 ----
/**/# PERFORMANCE OF THIS SOFTWARE.
/**/#
! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.84 1992/08/14 06:19:54 william Exp $
/**/#
! TGIFVERSION = 2.12-p11
PROGRAMS = tgif prtgif /**/#frontend11.o testdrive
/**/#CDEBUGFLAGS= -g
*** HISTORY.orig Fri Aug 14 07:35:22 1992
--- HISTORY Fri Aug 14 07:35:26 1992
***************
*** 1,5 ****
/*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.34 1992/08/08 19:55:45 william Exp $
*/
-----------------------> tgif-2.12-p9 => tgif-2.12-p10 <-----------------------
I've just put tgif-2.12-patch10 (10th patch for tgif-2.12) in the
--- 1,27 ----
/*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.35 1992/08/14 06:18:25 william Exp $
*/
+ -----------------------> tgif-2.12-p10 => tgif-2.12-p11 <-----------------------
+ I've just put tgif-2.12-patch11 (11th patch for tgif-2.12) in the
+ following places for anonymous ftp:
+
+ export.lcs.mit.edu /contrib/tgif-2.12-patch11.Z
+ cs.ucla.edu /pub/tgif/tgif-2.12-patch11.Z
+
+ The patch is also posted to comp.sources.bugs.
+
+ Please uncompress and then apply the patch with
+ 'patch -p -N < tgif-2.12-patch11'.
+ Here's a short list of added features/bug fixes.
+
+ 1) Fix a bug in erasing text from a grouped object. This bug only appears if
+ the Tgif*GroupedTextEditable X default is set to 'true'.
+ 2) Fix a bug in setting the clipping rectangles. Sometimes, tgif would not
+ redraw properly. Thanks to Yoichiro Ueno <ueno@cs.titech.ac.jp> for the
+ fix.
+ 3) Fix a bug in copying objects with attributes. It used to be that every
+ time such a object is copied, the ordering of the attributes are reversed.
+ 4) Fix a typo in box.c. This bug only appears if -DNO_THIN_LINE is specified
+ as a compile option.
-----------------------> tgif-2.12-p9 => tgif-2.12-p10 <-----------------------
I've just put tgif-2.12-patch10 (10th patch for tgif-2.12) in the
---------------------------------> cut here <---------------------------------
--
Bill Cheng // UCLA Computer Science Department // (310) 645-8328
3564-C Boelter Hall // Los Angeles, California 90024 // USA
william@CS.UCLA.EDU ...!{uunet|ucbvax}!cs.ucla.edu!william
Technical Details
Message-ID:
<1992Nov4.073438.4861@cs.ucla.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!spool.mu.edu!sol.ctr.columbia.edu!usc!ucla-cs!lanai.cs.ucla.edu!williamShow Full Headers
Complete Article Headers
Newsgroups: comp.sources.bugs Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!spool.mu.edu!sol.ctr.columbia.edu!usc!ucla-cs!lanai.cs.ucla.edu!william From: william@lanai.cs.ucla.edu (William Cheng) Subject: Tgif-2.12-patch11 (11th patch for tgif-2.12), Part 01/01 Message-ID: <1992Nov4.073438.4861@cs.ucla.edu> Followup-To: william@cs.ucla.edu Keywords: draw, postscript, latex, hierarchical, x11, xlib, wysiwyg, bitmap Sender: usenet@cs.ucla.edu (Mr Usenet) Nntp-Posting-Host: lanai.cs.ucla.edu Organization: UCLA, Computer Science Department Date: Wed, 4 Nov 92 07:34:38 GMT Lines: 756