[91175] trunk/dports/x11/Xaw3d

jeremyhu at macports.org jeremyhu at macports.org
Sat Mar 24 21:27:51 PDT 2012


Revision: 91175
          https://trac.macports.org/changeset/91175
Author:   jeremyhu at macports.org
Date:     2012-03-24 21:27:51 -0700 (Sat, 24 Mar 2012)
Log Message:
-----------
Xaw3d: Add patches provided by gv's developer.  Fixes #33420

Modified Paths:
--------------
    trunk/dports/x11/Xaw3d/Portfile
    trunk/dports/x11/Xaw3d/files/0001-Fix-parameters-of-FloatInRange.patch
    trunk/dports/x11/Xaw3d/files/0002-Fix-use-after-free-in-DestroyAllIM.patch

Added Paths:
-----------
    trunk/dports/x11/Xaw3d/files/0003-Correct-XtNthumbProc-usage.patch
    trunk/dports/x11/Xaw3d/files/0004-Avoid-integer-overflow.patch
    trunk/dports/x11/Xaw3d/files/0005-Add-XawTextGetSink-for-compatibility-with-libXaw.patch
    trunk/dports/x11/Xaw3d/files/0006-Xaw3d-1.6.1-i18n.patch.patch
    trunk/dports/x11/Xaw3d/files/0007-Xaw3d-1.6.1-3Dlabel.patch.patch
    trunk/dports/x11/Xaw3d/files/0008-Xaw3d-1.6.1-fontset.patch.patch
    trunk/dports/x11/Xaw3d/files/0009-Xaw3d-1.6.1-hsbar.patch.patch

Modified: trunk/dports/x11/Xaw3d/Portfile
===================================================================
--- trunk/dports/x11/Xaw3d/Portfile	2012-03-25 04:00:23 UTC (rev 91174)
+++ trunk/dports/x11/Xaw3d/Portfile	2012-03-25 04:27:51 UTC (rev 91175)
@@ -4,7 +4,7 @@
 
 name            Xaw3d
 version         1.6.1
-revision        1
+revision        2
 categories      x11 devel
 license         X11
 maintainers     jeremyhu openmaintainer
@@ -31,8 +31,15 @@
 
 patch.pre_args -p1
 patchfiles \
-	0001-Fix-parameters-of-FloatInRange.patch \
-	0002-Fix-use-after-free-in-DestroyAllIM.patch
+        0001-Fix-parameters-of-FloatInRange.patch \
+        0002-Fix-use-after-free-in-DestroyAllIM.patch \
+        0003-Correct-XtNthumbProc-usage.patch \
+        0004-Avoid-integer-overflow.patch \
+        0005-Add-XawTextGetSink-for-compatibility-with-libXaw.patch \
+        0006-Xaw3d-1.6.1-i18n.patch.patch \
+        0007-Xaw3d-1.6.1-3Dlabel.patch.patch \
+        0008-Xaw3d-1.6.1-fontset.patch.patch \
+        0009-Xaw3d-1.6.1-hsbar.patch.patch \
 
 configure.args \
         --enable-internationalization

Modified: trunk/dports/x11/Xaw3d/files/0001-Fix-parameters-of-FloatInRange.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0001-Fix-parameters-of-FloatInRange.patch	2012-03-25 04:00:23 UTC (rev 91174)
+++ trunk/dports/x11/Xaw3d/files/0001-Fix-parameters-of-FloatInRange.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -1,7 +1,7 @@
 From 7fd6427bc3016e9666a587386779952cf8979f09 Mon Sep 17 00:00:00 2001
 From: Matt Turner <mattst88 at gmail.com>
 Date: Wed, 29 Feb 2012 14:26:06 -0500
-Subject: [PATCH 1/2] Fix parameters of FloatInRange
+Subject: [PATCH 1/9] Fix parameters of FloatInRange
 
 Introduced in f6cd786d1.
 
@@ -25,5 +25,5 @@
      return (num < small) ? small : ((num > big) ? big : num);
  }
 -- 
-1.7.9.2
+1.7.9.4
 

Modified: trunk/dports/x11/Xaw3d/files/0002-Fix-use-after-free-in-DestroyAllIM.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0002-Fix-use-after-free-in-DestroyAllIM.patch	2012-03-25 04:00:23 UTC (rev 91174)
+++ trunk/dports/x11/Xaw3d/files/0002-Fix-use-after-free-in-DestroyAllIM.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -1,7 +1,7 @@
 From c3dd42dbd2aaf95d2a1d08a52d9c2e7056ef7ac9 Mon Sep 17 00:00:00 2001
 From: Matt Turner <mattst88 at gmail.com>
 Date: Thu, 1 Mar 2012 16:48:23 -0500
-Subject: [PATCH 2/2] Fix use-after-free in DestroyAllIM
+Subject: [PATCH 2/9] Fix use-after-free in DestroyAllIM
 
 Fixes segmentation fault when closing gv.
 
@@ -33,5 +33,5 @@
  
      /*
 -- 
-1.7.9.2
+1.7.9.4
 

Added: trunk/dports/x11/Xaw3d/files/0003-Correct-XtNthumbProc-usage.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0003-Correct-XtNthumbProc-usage.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0003-Correct-XtNthumbProc-usage.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,58 @@
+From 39e9a67b05d4558c065aedd2ebbe6eb11d0b88de Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:07:40 +0100
+Subject: [PATCH 3/9] Correct XtNthumbProc usage
+
+This ugly piece of magic was copied from libXaw, and now scrollbars
+will work slightly less incorrectly than they did before.
+
+Found at http://gitorious.org/xaw3d/xaw3d/commit/4ec68aebffbdc406139f880f92b6c18b835af6d4
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ src/Scrollbar.c |   14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git libXaw3d-1.6.1/src/Scrollbar.c libXaw3d-1.6.1/src/Scrollbar.c
+index 5667327..69c2d54 100644
+--- libXaw3d-1.6.1/src/Scrollbar.c
++++ libXaw3d-1.6.1/src/Scrollbar.c
+@@ -1054,7 +1054,10 @@ static void
+ NotifyThumb (Widget w, XEvent *event, String *params, Cardinal *num_params)
+ {
+     register ScrollbarWidget sbw = (ScrollbarWidget) w;
+-    float top = sbw->scrollbar.top;
++    union {
++        XtPointer xtp;
++        float xtf;
++    } xtpf;
+ 
+ #ifndef XAW_ARROW_SCROLLBARS
+     if (sbw->scrollbar.direction == 0) return; /* if no StartScroll */
+@@ -1065,6 +1068,8 @@ NotifyThumb (Widget w, XEvent *event, String *params, Cardinal *num_params)
+     /* thumbProc is not pretty, but is necessary for backwards
+        compatibility on those architectures for which it work{s,ed};
+        the intent is to pass a (truncated) float by value. */
++    xtpf.xtf = sbw->scrollbar.top;
++
+ /* #ifdef XAW_ARROW_SCROLLBARS */
+     /* This corrects for rounding errors: If the thumb is moved to the end of
+        the scrollable area sometimes the last line/column is not displayed.
+@@ -1083,10 +1088,11 @@ NotifyThumb (Widget w, XEvent *event, String *params, Cardinal *num_params)
+     /* Removed the dependancy on scrollbar arrows. Xterm as distributed in
+        X11R6.6 by The XFree86 Project wants this correction, with or without
+        the arrows. */
+-    top += 0.0001;
++    xtpf.xtf += 0.0001;
+ /* #endif */
+-    XtCallCallbacks (w, XtNthumbProc, *(XtPointer*)&top);
+-    XtCallCallbacks (w, XtNjumpProc, (XtPointer)&top);
++
++    XtCallCallbacks (w, XtNthumbProc, xtpf.xtp);
++    XtCallCallbacks (w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
+ }
+ 
+ 
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0004-Avoid-integer-overflow.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0004-Avoid-integer-overflow.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0004-Avoid-integer-overflow.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,34 @@
+From 5d367cd9d0cd8fa5a85ed442e30dab4222824a36 Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:08:22 +0100
+Subject: [PATCH 4/9] Avoid integer overflow
+
+Found at http://gitorious.org/xaw3d/xaw3d/commit/3ba3e52454bb684a73601ec91e2c274e776f711a
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ src/Box.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git libXaw3d-1.6.1/src/Box.c libXaw3d-1.6.1/src/Box.c
+index 43be5dc..9cf3b5f 100644
+--- libXaw3d-1.6.1/src/Box.c
++++ libXaw3d-1.6.1/src/Box.c
+@@ -351,8 +351,12 @@ PreferredSize(Widget widget, XtWidgetGeometry *constraint, XtWidgetGeometry *pre
+ 	else {
+ 	    width = preferred_width;
+ 	    do { /* find some width big enough to stay within this height */
+-		width *= 2;
+-		if (width > constraint->width) width = constraint->width;
++	        if (width > constraint->width/2) {  /* avoid short int overflow */
++		    width = constraint->width;
++		}
++		else { 
++		    width *= 2; 
++		}
+ 		DoLayout(w, width, 0, &preferred_width, &preferred_height, FALSE);
+ 	    } while (preferred_height > constraint->height &&
+ 		     width < constraint->width);
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0005-Add-XawTextGetSink-for-compatibility-with-libXaw.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0005-Add-XawTextGetSink-for-compatibility-with-libXaw.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0005-Add-XawTextGetSink-for-compatibility-with-libXaw.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,76 @@
+From bc0db762873b564d50faac4ab1bf1c85ea586d36 Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:09:26 +0100
+Subject: [PATCH 5/9] Add XawTextGetSink for compatibility with libXaw
+
+Patch found at http://gitorious.org/xaw3d/xaw3d/commit/ccb1ffde090006f5a715c1e3d4da5f4d6fae05d3
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ include/X11/Xaw3d/Text.h |    4 ++++
+ src/Command.c            |    2 ++
+ src/Label.c              |    2 ++
+ src/Text.c               |    6 ++++++
+ 4 files changed, 14 insertions(+)
+
+diff --git libXaw3d-1.6.1/include/X11/Xaw3d/Text.h libXaw3d-1.6.1/include/X11/Xaw3d/Text.h
+index 42699a7..beef8ab 100644
+--- libXaw3d-1.6.1/include/X11/Xaw3d/Text.h
++++ libXaw3d-1.6.1/include/X11/Xaw3d/Text.h
+@@ -242,6 +242,10 @@ extern Widget XawTextGetSource(
+     Widget		/* w */
+ );
+ 
++extern Widget XawTextGetSink(
++    Widget		/* w */
++);
++
+ extern XawTextPosition XawTextSearch(
+     Widget			/* w */,
+ #if NeedWidePrototypes
+diff --git libXaw3d-1.6.1/src/Command.c libXaw3d-1.6.1/src/Command.c
+index 26a40fa..18efb9a 100644
+--- libXaw3d-1.6.1/src/Command.c
++++ libXaw3d-1.6.1/src/Command.c
+@@ -92,6 +92,8 @@ static XtResource resources[] = {
+    {XtNcornerRoundPercent, XtCCornerRoundPercent, XtRDimension,
+         sizeof(Dimension), offset(command.corner_round), XtRImmediate,
+ 	(XtPointer) 25},
++   {XtNshadowWidth, XtCShadowWidth, XtRDimension, sizeof(Dimension),
++	offset(threeD.shadow_width), XtRImmediate, (XtPointer) 2},
+    {XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
+       XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate,
+       (XtPointer) 0}
+diff --git libXaw3d-1.6.1/src/Label.c libXaw3d-1.6.1/src/Label.c
+index 46b0465..e8743c5 100644
+--- libXaw3d-1.6.1/src/Label.c
++++ libXaw3d-1.6.1/src/Label.c
+@@ -115,6 +115,8 @@ static XtResource resources[] = {
+ 	offset(label.pixmap), XtRImmediate, (XtPointer)None},
+     {XtNresize, XtCResize, XtRBoolean, sizeof(Boolean),
+ 	offset(label.resize), XtRImmediate, (XtPointer)True},
++    {XtNshadowWidth, XtCShadowWidth, XtRDimension, sizeof(Dimension),
++	offset(threeD.shadow_width), XtRImmediate, (XtPointer) 0},
+     {XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
+          XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate,
+          (XtPointer)1}
+diff --git libXaw3d-1.6.1/src/Text.c libXaw3d-1.6.1/src/Text.c
+index be4d592..b0e7a2c 100644
+--- libXaw3d-1.6.1/src/Text.c
++++ libXaw3d-1.6.1/src/Text.c
+@@ -3312,6 +3312,12 @@ XawTextGetSource(Widget w)
+   return ((TextWidget)w)->text.source;
+ }
+ 
++Widget
++XawTextGetSink(Widget w)
++{
++  return (((TextWidget)w)->text.sink);
++}
++
+ void
+ XawTextDisplayCaret (Widget w,
+ #if NeedWidePrototypes
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0006-Xaw3d-1.6.1-i18n.patch.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0006-Xaw3d-1.6.1-i18n.patch.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0006-Xaw3d-1.6.1-i18n.patch.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,24 @@
+From 93306e5b20dd85aeb98d42d06dffefc3c35fe680 Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:08:00 +0100
+Subject: [PATCH 6/9] Xaw3d-1.6.1-i18n.patch
+
+---
+ src/MultiSrc.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git libXaw3d-1.6.1/src/MultiSrc.c libXaw3d-1.6.1/src/MultiSrc.c
+index b53fa50..1ac3283 100644
+--- libXaw3d-1.6.1/src/MultiSrc.c
++++ libXaw3d-1.6.1/src/MultiSrc.c
+@@ -728,6 +728,7 @@ SetValues(Widget current, Widget request, Widget new, ArgList args, Cardinal *nu
+ 
+   if ( string_set || (old_src->multi_src.type != src->multi_src.type) ) {
+     RemoveOldStringOrFile(old_src, string_set);
++    src->multi_src.allocated_string = old_src->multi_src.allocated_string;
+     file = InitStringOrFile(src, string_set);
+ 
+     /* Load pieces does this logic for us, but it shouldn't.  Its messy.*/
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0007-Xaw3d-1.6.1-3Dlabel.patch.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0007-Xaw3d-1.6.1-3Dlabel.patch.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0007-Xaw3d-1.6.1-3Dlabel.patch.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,175 @@
+From c91d30534b2bbca8bdb46cae973efd117a7e7405 Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:08:38 +0100
+Subject: [PATCH 7/9] Xaw3d-1.6.1-3Dlabel.patch
+
+---
+ src/Label.c |   66 +++++++++++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 46 insertions(+), 20 deletions(-)
+
+diff --git libXaw3d-1.6.1/src/Label.c libXaw3d-1.6.1/src/Label.c
+index e8743c5..c345573 100644
+--- libXaw3d-1.6.1/src/Label.c
++++ libXaw3d-1.6.1/src/Label.c
+@@ -418,9 +418,16 @@ GetgrayGC(LabelWidget lw)
+ static void
+ compute_bitmap_offsets (LabelWidget lw)
+ {
+-    if (lw->label.lbm_height != 0)
+-	lw->label.lbm_y = (lw->core.height - lw->label.lbm_height) / 2;
+-    else
++    /*
++     * bitmap will be eventually be displayed at 
++     * (internal_width, internal_height + lbm_y)
++     */
++    if (lw->label.lbm_height != 0) {
++	lw->label.lbm_y = (lw->core.height -
++			   (lw->threeD.shadow_width * 2 +
++			    lw->label.internal_height * 2 +
++			    lw->label.lbm_height)) / 2;
++    } else
+ 	lw->label.lbm_y = 0;
+ }
+ 
+@@ -446,9 +453,11 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+ {
+     LabelWidget lw = (LabelWidget) new;
+ 
++#if 0
+     /* disable shadows if we're not a subclass of Command */
+     if (!XtIsSubclass(new, commandWidgetClass))
+ 	lw->threeD.shadow_width = 0;
++#endif
+ 
+     if (lw->label.label == NULL)
+         lw->label.label = XtNewString(lw->core.name);
+@@ -462,18 +471,20 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+ 
+     if (lw->core.height == 0)
+ 	lw->core.height = lw->label.label_height +
+-				2 * lw->label.internal_height;
++			  2 * lw->label.internal_height +
++			  2 * lw->threeD.shadow_width;
+ 
+     set_bitmap_info(lw);  /* req's core.height, sets label.lbm_* */
+ 
+     if (lw->label.lbm_height > lw->label.label_height)
+ 	lw->core.height = lw->label.lbm_height +
+-				2 * lw->label.internal_height;
++			  2 * lw->label.internal_height;
+ 
+     if (lw->core.width == 0)
+         lw->core.width = lw->label.label_width +
+-				2 * lw->label.internal_width +
+-				LEFT_OFFSET(lw);  /* req's label.lbm_width */
++			 2 * lw->label.internal_width +
++			 2 * lw->threeD.shadow_width +
++			 LEFT_OFFSET(lw);	/* req's label.lbm_width */
+ 
+     lw->label.label_x = lw->label.label_y = 0;
+     (*XtClass(new)->core_class.resize) ((Widget)lw);
+@@ -551,14 +562,16 @@ Redisplay(Widget gw, XEvent *event, Region region)
+ 	    if (w->label.depth == 1)
+ 		XCopyPlane(XtDisplay(gw), pm, XtWindow(gw), gc, 0, 0,
+ 			   w->label.lbm_width, w->label.lbm_height,
+-			   (int) w->label.internal_width,
+-			   (int) w->label.lbm_y,
++			   (int) w->label.internal_width + w->threeD.shadow_width,
++			   (int) w->label.internal_height + w->threeD.shadow_width
++				 + w->label.lbm_y,
+ 			   (unsigned long) 1L);
+ 	    else
+ 		XCopyArea(XtDisplay(gw), pm, XtWindow(gw), gc, 0, 0,
+ 			  w->label.lbm_width, w->label.lbm_height,
+-			  (int) w->label.internal_width,
+-			  (int) w->label.lbm_y);
++			  (int) w->label.internal_width + w->threeD.shadow_width,
++			  (int) w->label.internal_height + w->threeD.shadow_width
++				+ w->label.lbm_y);
+ 	}
+ 
+ #ifdef XAW_INTERNATIONALIZATION
+@@ -648,14 +661,17 @@ _Reposition(LabelWidget lw, Dimension width, Dimension height,
+             Position *dx, Position *dy)
+ {
+     Position newPos;
+-    Position leftedge = lw->label.internal_width + LEFT_OFFSET(lw);
++    Position leftedge = lw->label.internal_width + LEFT_OFFSET(lw) +
++			lw->threeD.shadow_width;
++
+ 
+     switch (lw->label.justify) {
+ 	case XtJustifyLeft:
+ 	    newPos = leftedge;
+ 	    break;
+ 	case XtJustifyRight:
+-	    newPos = width - lw->label.label_width - lw->label.internal_width;
++	    newPos = width - (lw->label.label_width + lw->label.internal_width +
++			      lw->threeD.shadow_width);
+ 	    break;
+ 	case XtJustifyCenter:
+ 	default:
+@@ -747,17 +763,20 @@ SetValues(Widget current, Widget request, Widget new, ArgList args, Cardinal *nu
+     if (newlw->label.resize && was_resized) {
+ 	if (curlw->core.height == reqlw->core.height && !checks[HEIGHT])
+ 	    newlw->core.height = newlw->label.label_height +
+-				2 * newlw->label.internal_height;
++				 2 * newlw->label.internal_height +
++				 2 * newlw->threeD.shadow_width;
+ 
+ 	set_bitmap_info (newlw);  /* req's core.height, sets label.lbm_* */
+ 
+ 	if (newlw->label.lbm_height > newlw->label.label_height)
+ 	    newlw->core.height = newlw->label.lbm_height +
+-					2 * newlw->label.internal_height;
++				 2 * newlw->label.internal_height +
++				 2 * newlw->threeD.shadow_width;
+ 
+ 	if (curlw->core.width == reqlw->core.width && !checks[WIDTH])
+ 	    newlw->core.width = newlw->label.label_width +
+ 				2 * newlw->label.internal_width +
++				2 * newlw->threeD.shadow_width +
+ 				LEFT_OFFSET(newlw);  /* req's label.lbm_width */
+     }
+ 
+@@ -766,15 +785,20 @@ SetValues(Widget current, Widget request, Widget new, ArgList args, Cardinal *nu
+ 	if (checks[HEIGHT]) {
+ 	    if (newlw->label.label_height > newlw->label.lbm_height)
+ 		i = newlw->label.label_height +
+-			2 * newlw->label.internal_height;
++		    2 * newlw->label.internal_height +
++		    2 * newlw->threeD.shadow_width;
+ 	    else
+-		i = newlw->label.lbm_height + 2 * newlw->label.internal_height;
++		i = newlw->label.lbm_height +
++		    2 * newlw->label.internal_height +
++		    2 * newlw->threeD.shadow_width;
+ 	    if (i > newlw->core.height)
+ 		newlw->core.height = i;
+ 	}
+ 	if (checks[WIDTH]) {
+-	    i = newlw->label.label_width + 2 * newlw->label.internal_width +
+-			LEFT_OFFSET(newlw);  /* req's label.lbm_width */
++	    i = newlw->label.label_width +
++		2 * newlw->label.internal_width +
++		2 * newlw->threeD.shadow_width +
++		LEFT_OFFSET(newlw);		    /* req's label.lbm_width */
+ 	    if (i > newlw->core.width)
+ 		newlw->core.width = i;
+ 	}
+@@ -845,9 +869,11 @@ QueryGeometry(Widget w, XtWidgetGeometry *intended, XtWidgetGeometry *preferred)
+     preferred->request_mode = CWWidth | CWHeight;
+     preferred->width = (lw->label.label_width +
+ 			    2 * lw->label.internal_width +
++			    2 * lw->threeD.shadow_width +
+ 			    LEFT_OFFSET(lw));
+     preferred->height = lw->label.label_height +
+-			    2 * lw->label.internal_height;
++			    2 * lw->label.internal_height +
++			    2 * lw->threeD.shadow_width;
+     if (  ((intended->request_mode & (CWWidth | CWHeight))
+ 	   	== (CWWidth | CWHeight)) &&
+ 	  intended->width == preferred->width &&
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0008-Xaw3d-1.6.1-fontset.patch.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0008-Xaw3d-1.6.1-fontset.patch.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0008-Xaw3d-1.6.1-fontset.patch.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,81 @@
+From c0f4301d0a82481e9ecb9260112692da205a7a2a Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:09:41 +0100
+Subject: [PATCH 8/9] Xaw3d-1.6.1-fontset.patch
+
+---
+ src/AsciiSink.c |    2 ++
+ src/Command.c   |    2 ++
+ src/List.c      |    2 ++
+ src/SmeBSB.c    |    2 ++
+ src/Tip.c       |    2 ++
+ 5 files changed, 10 insertions(+)
+
+diff --git libXaw3d-1.6.1/src/AsciiSink.c libXaw3d-1.6.1/src/AsciiSink.c
+index c14306e..8465b94 100644
+--- libXaw3d-1.6.1/src/AsciiSink.c
++++ libXaw3d-1.6.1/src/AsciiSink.c
+@@ -513,6 +513,8 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+ {
+     AsciiSinkObject sink = (AsciiSinkObject) new;
+ 
++    if (!sink->ascii_sink.font) XtError("Aborting: no font found\n");
++
+     GetGC(sink);
+ 
+     sink->ascii_sink.insertCursorOn= CreateInsertCursor(XtScreenOfObject(new));
+diff --git libXaw3d-1.6.1/src/Command.c libXaw3d-1.6.1/src/Command.c
+index 18efb9a..685fd16 100644
+--- libXaw3d-1.6.1/src/Command.c
++++ libXaw3d-1.6.1/src/Command.c
+@@ -220,6 +220,8 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+   CommandWidget cbw = (CommandWidget) new;
+   int shape_event_base, shape_error_base;
+ 
++  if (!cbw->label.font) XtError("Aborting: no font found\n");
++
+   if (cbw->command.shape_style != XawShapeRectangle
+       && !XShapeQueryExtension(XtDisplay(new), &shape_event_base,
+ 			       &shape_error_base))
+diff --git libXaw3d-1.6.1/src/List.c libXaw3d-1.6.1/src/List.c
+index 6b9fe13..c52135a 100644
+--- libXaw3d-1.6.1/src/List.c
++++ libXaw3d-1.6.1/src/List.c
+@@ -362,6 +362,8 @@ Initialize(Widget junk, Widget new, ArgList args, Cardinal *num_args)
+ {
+     ListWidget lw = (ListWidget) new;
+ 
++    if (!lw->list.font) XtError("Aborting: no font found\n");
++
+ /*
+  * Initialize all private resources.
+  */
+diff --git libXaw3d-1.6.1/src/SmeBSB.c libXaw3d-1.6.1/src/SmeBSB.c
+index f8bf987..d7c8b9d 100644
+--- libXaw3d-1.6.1/src/SmeBSB.c
++++ libXaw3d-1.6.1/src/SmeBSB.c
+@@ -207,6 +207,8 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+     else
+ 	entry->sme_bsb.label = XtNewString( entry->sme_bsb.label );
+ 
++    if (!entry->sme_bsb.font) XtError("Aborting: no font found\n");
++
+     CreateGCs(new);
+ 
+     GetBitmapInfo(new, TRUE);	/* Left Bitmap Info */
+diff --git libXaw3d-1.6.1/src/Tip.c libXaw3d-1.6.1/src/Tip.c
+index 5542fc5..9eeffbd 100644
+--- libXaw3d-1.6.1/src/Tip.c
++++ libXaw3d-1.6.1/src/Tip.c
+@@ -248,6 +248,8 @@ XawTipInitialize(Widget req, Widget w, ArgList args, Cardinal *num_args)
+     TipWidget tip = (TipWidget)w;
+     XGCValues values;
+ 
++    if (!tip->tip.font) XtError("Aborting: no font found\n");
++
+     tip->tip.timer = 0;
+ 
+     values.foreground = tip->tip.foreground;
+-- 
+1.7.9.4
+

Added: trunk/dports/x11/Xaw3d/files/0009-Xaw3d-1.6.1-hsbar.patch.patch
===================================================================
--- trunk/dports/x11/Xaw3d/files/0009-Xaw3d-1.6.1-hsbar.patch.patch	                        (rev 0)
+++ trunk/dports/x11/Xaw3d/files/0009-Xaw3d-1.6.1-hsbar.patch.patch	2012-03-25 04:27:51 UTC (rev 91175)
@@ -0,0 +1,275 @@
+From 4ba59ebe3eb0c8cceb93361ea06602e8c97d0b27 Mon Sep 17 00:00:00 2001
+From: Markus Steinborn <gnugv_maintainer at yahoo.de>
+Date: Thu, 1 Mar 2012 18:10:29 +0100
+Subject: [PATCH 9/9] Xaw3d-1.6.1-hsbar.patch
+
+---
+ src/Text.c     |   12 +++++---
+ src/Viewport.c |   91 +++++++++++++++++---------------------------------------
+ 2 files changed, 35 insertions(+), 68 deletions(-)
+
+diff --git libXaw3d-1.6.1/src/Text.c libXaw3d-1.6.1/src/Text.c
+index b0e7a2c..1b09ba4 100644
+--- libXaw3d-1.6.1/src/Text.c
++++ libXaw3d-1.6.1/src/Text.c
+@@ -495,8 +495,10 @@ CreateHScrollBar(TextWidget ctx)
+ 		    (XtPointer) NULL);
+ 
+ /**/
+-  ctx->text.r_margin.bottom += hbar->core.height + hbar->core.border_width;
+-  ctx->text.margin.bottom = ctx->text.r_margin.bottom;
++  if (ctx->text.scroll_vert == XawtextScrollAlways) {
++    ctx->text.r_margin.bottom += hbar->core.height + hbar->core.border_width;
++    ctx->text.margin.bottom = ctx->text.r_margin.bottom;
++  }
+ /**/
+   PositionHScrollBar(ctx);
+   if (XtIsRealized((Widget)ctx)) {
+@@ -519,8 +521,10 @@ DestroyHScrollBar(TextWidget ctx)
+   if (hbar == NULL) return;
+ 
+ /**/
+-  ctx->text.r_margin.bottom -= hbar->core.height + hbar->core.border_width;
+-  ctx->text.margin.bottom = ctx->text.r_margin.bottom;
++  if (ctx->text.scroll_vert == XawtextScrollAlways) {
++    ctx->text.r_margin.bottom -= hbar->core.height + hbar->core.border_width;
++    ctx->text.margin.bottom = ctx->text.r_margin.bottom;
++  }
+ /**/
+   if (ctx->text.vbar == NULL)
+       XtRemoveCallback((Widget) ctx, XtNunrealizeCallback, UnrealizeScrollbars,
+diff --git libXaw3d-1.6.1/src/Viewport.c libXaw3d-1.6.1/src/Viewport.c
+index a37a9a1..602449a 100644
+--- libXaw3d-1.6.1/src/Viewport.c
++++ libXaw3d-1.6.1/src/Viewport.c
+@@ -244,7 +244,7 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+     XtVaGetValues((Widget)(w->viewport.threeD), XtNshadowWidth, &sw, NULL);
+     if (sw)
+     {
+-	pad = 2;
++	pad = 2 * sw;
+ 
+ 	arg_cnt = 0;
+ 	XtSetArg(threeD_args[arg_cnt], XtNborderWidth, 0); arg_cnt++;
+@@ -262,8 +262,8 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+     XtSetArg(clip_args[arg_cnt], XtNright, XtChainRight); arg_cnt++;
+     XtSetArg(clip_args[arg_cnt], XtNtop, XtChainTop); arg_cnt++;
+     XtSetArg(clip_args[arg_cnt], XtNbottom, XtChainBottom); arg_cnt++;
+-    XtSetArg(clip_args[arg_cnt], XtNwidth, w->core.width - 2 * sw); arg_cnt++;
+-    XtSetArg(clip_args[arg_cnt], XtNheight, w->core.height - 2 * sw); arg_cnt++;
++    XtSetArg(clip_args[arg_cnt], XtNwidth, w->core.width - pad); arg_cnt++;
++    XtSetArg(clip_args[arg_cnt], XtNheight, w->core.height - pad); arg_cnt++;
+ 
+     w->viewport.clip = XtCreateManagedWidget("clip", widgetClass, new,
+ 					     clip_args, arg_cnt);
+@@ -283,8 +283,8 @@ Initialize(Widget request, Widget new, ArgList args, Cardinal *num_args)
+  * Set the clip widget to the correct height.
+  */
+ 
+-    clip_width = w->core.width - 2 * sw;
+-    clip_height = w->core.height - 2 * sw;
++    clip_width = w->core.width - pad;
++    clip_height = w->core.height - pad;
+ 
+     if ( (h_bar != NULL) &&
+ 	 ((int)w->core.width >
+@@ -509,23 +509,13 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+     XtWidgetGeometry intended;
+     Dimension pad = 0, sw = 0;
+ 
+-    /*
+-     * I've made two optimizations here. The first does away with the
+-     * loop, and the second defers setting the child dimensions to the
+-     * clip if smaller until after adjusting for possible scrollbars.
+-     * If you find that these go too far, define the identifiers here
+-     * as required.  -- djhjr
+-     */
+-#define NEED_LAYOUT_LOOP
+-#undef PREP_CHILD_TO_CLIP
+-
+     if (child == (Widget) NULL) return;
+ 
+     XtVaGetValues(threeD, XtNshadowWidth, &sw, NULL);
+-    if (sw) pad = 2;
++    if (sw) pad = 2 * sw;
+ 
+-    clip_width = w->core.width - 2 * sw;
+-    clip_height = w->core.height - 2 * sw;
++    clip_width = w->core.width - pad;
++    clip_height = w->core.height - pad;
+     intended.request_mode = CWBorderWidth;
+     intended.border_width = 0;
+ 
+@@ -536,10 +526,8 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 			     &clip_width, &clip_height);
+     }
+     else {
+-#ifdef NEED_LAYOUT_LOOP
+         Dimension prev_width, prev_height;
+ 	XtGeometryMask prev_mode;
+-#endif
+ 	XtWidgetGeometry preferred;
+ 
+ 	needshoriz = needsvert = False;
+@@ -553,31 +541,25 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 	if (!w->viewport.allowhoriz)
+ 	    intended.request_mode |= CWWidth;
+ 
+-#ifdef PREP_CHILD_TO_CLIP
+-	if ((int)child->core.width < clip_width)
+-	    intended.width = clip_width;
++	if ((int)child->core.width < clip_width + pad)
++	    intended.width = clip_width + pad;
+ 	else
+-#endif
+ 	    intended.width = child->core.width;
+ 
+-	if (!w->viewport.allowvert)
+-	    intended.request_mode |= CWHeight;
+-
+-#ifdef PREP_CHILD_TO_CLIP
+-	if ((int)child->core.height < clip_height)
+-	    intended.height = clip_height;
++	if ((int)child->core.height < clip_height + pad)
++	    intended.height = clip_height + pad;
+ 	else
+-#endif
+ 	    intended.height = child->core.height;
+ 
++	if (!w->viewport.allowvert) 
++	    intended.request_mode |= CWHeight;
++
+ 	if (!query) {
+ 	    preferred.width = child->core.width;
+ 	    preferred.height = child->core.height;
+ 	}
+ 
+-#ifdef NEED_LAYOUT_LOOP
+ 	do { /* while intended != prev */
+-#endif
+ 	    if (query) {
+ 	        (void) XtQueryGeometry( child, &intended, &preferred );
+ 		if ( !(preferred.request_mode & CWWidth) )
+@@ -585,12 +567,9 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 		if ( !(preferred.request_mode & CWHeight) )
+ 		    preferred.height = intended.height;
+ 	    }
+-
+-#ifdef NEED_LAYOUT_LOOP
+ 	    prev_width = intended.width;
+ 	    prev_height = intended.height;
+ 	    prev_mode = intended.request_mode;
+-#endif
+ 
+ 	    /*
+ 	     * Note that having once decided to turn on either bar
+@@ -600,7 +579,7 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 
+ #define CheckHoriz()							\
+ 	    if (w->viewport.allowhoriz &&				\
+-		    (int)preferred.width > clip_width + 2 * sw) {	\
+++		    (int)preferred.width > clip_width + pad) {		\
+ 		if (!needshoriz) {					\
+ 		    Widget horiz_bar = w->viewport.horiz_bar;		\
+ 		    needshoriz = True;					\
+@@ -615,7 +594,7 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ /* enddef */
+ 	    CheckHoriz();
+ 	    if (w->viewport.allowvert &&
+-		    (int)preferred.height > clip_height + 2 * sw) {
++		    (int)preferred.height > clip_height + pad) {
+ 		if (!needsvert) {
+ 		    Widget vert_bar = w->viewport.vert_bar;
+ 		    needsvert = True;
+@@ -629,38 +608,22 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 		intended.height = preferred.height;
+ 	    }
+ 
+-#ifdef PREP_CHILD_TO_CLIP
+ 	    if (!w->viewport.allowhoriz ||
+-		    (int)preferred.width < clip_width) {
+-	        intended.width = clip_width;
++		    (int)preferred.width < clip_width + pad) {
++	        intended.width = clip_width + pad;
+ 		intended.request_mode |= CWWidth;
+ 	    }
+ 	    if (!w->viewport.allowvert ||
+-		    (int)preferred.height < clip_height) {
+-	        intended.height = clip_height;
++		    (int)preferred.height < clip_height + pad) {
++	        intended.height = clip_height + pad;
+ 		intended.request_mode |= CWHeight;
+ 	    }
+-#endif
+-#ifdef NEED_LAYOUT_LOOP
++
+ 	} while ( intended.request_mode != prev_mode ||
+ 		  (intended.request_mode & CWWidth &&
+ 			intended.width != prev_width) ||
+ 		  (intended.request_mode & CWHeight &&
+ 			intended.height != prev_height) );
+-#endif
+-
+-#ifndef PREP_CHILD_TO_CLIP
+-	if (!w->viewport.allowhoriz ||
+-		(int)preferred.width < clip_width) {
+-	    intended.width = clip_width;
+-	    intended.request_mode |= CWWidth;
+-	}
+-	if (!w->viewport.allowvert ||
+-		(int)preferred.height < clip_height) {
+-	    intended.height = clip_height;
+-	    intended.request_mode |= CWHeight;
+-	}
+-#endif
+     }
+ 
+     bar_width = bar_height = 0;
+@@ -705,7 +668,7 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 	else {
+ 	    int bw = bar->core.border_width;
+ 	    XtResizeWidget( bar,
+-			    (Dimension)(clip_width + 2 * sw), bar->core.height,
++			    (Dimension)(clip_width + pad), bar->core.height,
+ 			    (Dimension)bw );
+ 	    XtMoveWidget( bar,
+ 			  (Position)((needsvert && !w->viewport.useright)
+@@ -730,7 +693,7 @@ ComputeLayout(Widget widget, Boolean query, Boolean destroy_scrollbars)
+ 	else {
+ 	    int bw = bar->core.border_width;
+ 	    XtResizeWidget( bar,
+-			    bar->core.width, (Dimension)(clip_height + 2 * sw),
++			    bar->core.width, (Dimension)(clip_height + pad),
+ 			    (Dimension)bw );
+ 	    XtMoveWidget( bar,
+ 			  (Position)(w->viewport.useright
+@@ -780,7 +743,7 @@ ComputeWithForceBars(Widget widget, Boolean query, XtWidgetGeometry *intended,
+  */
+ 
+     XtVaGetValues((Widget)(w->viewport.threeD), XtNshadowWidth, &sw, NULL);
+-    if (sw) pad = 2;
++    if (sw) pad = 2 * sw;
+ 
+     if (w->viewport.allowvert) {
+ 	if (w->viewport.vert_bar == NULL)
+@@ -926,7 +889,7 @@ GeometryRequestPlusScrollbar(ViewportWidget w, Boolean horizontal,
+   Dimension pad = 0, sw = 0;
+ 
+   XtVaGetValues((Widget)(w->viewport.threeD), XtNshadowWidth, &sw, NULL);
+-  if (sw) pad = 2;
++  if (sw) pad = 2 * sw;
+ 
+   plusScrollbars = *request;
+   if ((bar = w->viewport.horiz_bar) == (Widget)NULL)
+@@ -997,7 +960,7 @@ GeometryManager(Widget child, XtWidgetGeometry *request, XtWidgetGeometry *reply
+ 	return XtGeometryNo;
+ 
+     XtVaGetValues((Widget)(w->viewport.threeD), XtNshadowWidth, &sw, NULL);
+-    if (sw) pad = 2;
++    if (sw) pad = 2 * sw;
+ 
+     allowed = *request;
+ 
+-- 
+1.7.9.4
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120324/d4bd1328/attachment-0001.html>


More information about the macports-changes mailing list