diff options
author | jdp <jdp@FreeBSD.org> | 1997-07-29 05:49:54 +0800 |
---|---|---|
committer | jdp <jdp@FreeBSD.org> | 1997-07-29 05:49:54 +0800 |
commit | 776bb64a6cc0ad3f0f7fe5cf30f7f697c0c649df (patch) | |
tree | e96c324fef4c7fed1acd2757f48c1aabcf10dfed /lang/modula-3-lib | |
parent | 7e4152e5f74bac89f884e9821d155d66a608b6c4 (diff) | |
download | freebsd-ports-gnome-776bb64a6cc0ad3f0f7fe5cf30f7f697c0c649df.tar.gz freebsd-ports-gnome-776bb64a6cc0ad3f0f7fe5cf30f7f697c0c649df.tar.zst freebsd-ports-gnome-776bb64a6cc0ad3f0f7fe5cf30f7f697c0c649df.zip |
Add a patch to fix an incorrectly set WM_NORMAL_HINTS property for
X11 applications. The bug caused some minor problems in window
positioning and resizing.
Diffstat (limited to 'lang/modula-3-lib')
-rw-r--r-- | lang/modula-3-lib/files/patch-br | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lang/modula-3-lib/files/patch-br b/lang/modula-3-lib/files/patch-br new file mode 100644 index 000000000000..75872c65803b --- /dev/null +++ b/lang/modula-3-lib/files/patch-br @@ -0,0 +1,62 @@ +This fixes a couple of problems in the setting of the WM_NORMAL_HINTS +window manager property. + +The flags were set indicating that the width, height, x, and y fields +were valid, but these fields in fact contained garbage. Since the +fields are obsolete now (starting with X11R5), I simply removed the +code that set the corresponding flags. + +Also, the base_width, base_height, width_inc, and height_inc fields +were not set. This caused the window manager to display incorrect +values for window size while resizing it. + +I have sent this patch to DEC SRC. + +Index: m3/ui/src/xvbt/XClient.m3 +--- XClient.m3.orig Mon Mar 6 17:44:15 1995 ++++ XClient.m3 Mon Jul 28 13:45:30 1997 +@@ -520,7 +520,7 @@ + BEGIN + ur.sh := sh; + ur.sv := sv; +- SetSizeHints(xSizeHints, width, height, sh, sv, st, userPosition); ++ SetSizeHints(xSizeHints, width, height, sh, sv, st); + END; + xwa.border_pixel := 0; + xwa.bit_gravity := X.NorthWestGravity; +@@ -1080,19 +1080,17 @@ + PROCEDURE SetSizeHints (VAR xhints : X.XSizeHints; + VAR width, height: CARDINAL; + READONLY sh, sv : VBT.SizeRange; +- st : XScreenType.T; +- userPosition : BOOLEAN ) = ++ st : XScreenType.T ) = + BEGIN + IF sv.hi < VBT.DefaultShape.hi OR sh.hi < VBT.DefaultShape.hi THEN +- xhints.flags := X.PMinSize + X.PMaxSize ++ xhints.flags := X.PMinSize + X.PMaxSize + X.PResizeInc + X.PBaseSize + ELSE +- xhints.flags := X.PMinSize +- END; +- IF userPosition THEN +- INC(xhints.flags, X.USPosition + X.USSize) +- ELSE +- INC(xhints.flags, X.PPosition + X.PSize) ++ xhints.flags := X.PMinSize + X.PResizeInc + X.PBaseSize + END; ++ xhints.base_width := 0; ++ xhints.base_height := 0; ++ xhints.width_inc := 1; ++ xhints.height_inc := 1; + xhints.min_width := sh.lo; + xhints.max_width := + MAX(MIN(sh.hi - 1, Rect.HorSize(st.rootDom)), sh.lo); +@@ -1125,7 +1123,7 @@ + sh := s[Axis.T.Hor]; + sv := s[Axis.T.Ver]; + BEGIN +- SetSizeHints(xhints, width, height, sh, sv, st, ur.userPosition); ++ SetSizeHints(xhints, width, height, sh, sv, st); + TRY + Enter(v); + TRY |