[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