Sync from SUSE:ALP:Source:Standard:1.0 libXaw3d revision ef368cdffb4c21f6c6249af2c26dbdc2
This commit is contained in:
commit
78f91a3eb6
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
25
README.SuSE
Normal file
25
README.SuSE
Normal file
@ -0,0 +1,25 @@
|
||||
Note:
|
||||
|
||||
This /usr/lib/Xaw3d/libXaw8.so.8.0 is a real
|
||||
libXaw3d.so.8.0 linked with `-soname libXaw8.so.8'.
|
||||
|
||||
Therfore do _NOT_ replace /usr/lib/libXaw8.so.8.0.0
|
||||
by /usr/lib/Xaw3d/libXaw.so.8.0
|
||||
|
||||
On any problem starting X11 programs please remove the
|
||||
package xaw3dd.
|
||||
|
||||
Achtung:
|
||||
|
||||
Die Bibliothek /usr/lib/Xaw3d/libXaw8.so.8.0 ist
|
||||
in Wirklichkeit eine libXaw3d.so.8.0, die mit der
|
||||
Option `-soname libXaw8.so.8' gelinkt wurde.
|
||||
|
||||
Darum ersetzten Sie auf KEINEN Fall /usr/lib/libXaw8.so.8.0.0
|
||||
durch /usr/lib/Xaw3d/libXaw8.so.8.0.
|
||||
|
||||
Falls Sie irgendwelche Probleme mit X11-Programmen haben,
|
||||
deinstallieren Sie das Paket xaw3dd.
|
||||
|
||||
|
||||
Werner Fink <feedback@suse.de>
|
9
baselibs.conf
Normal file
9
baselibs.conf
Normal file
@ -0,0 +1,9 @@
|
||||
libXaw3d6
|
||||
libXaw3d7
|
||||
libXaw3d8
|
||||
obsoletes "xaw3d-<targettype> < <version>"
|
||||
libXaw3d-devel
|
||||
requires -libXaw3d-<targettype>
|
||||
requires "libXaw3d6-<targettype> = <version>"
|
||||
requires "libXaw3d7-<targettype> = <version>"
|
||||
requires "libXaw3d8-<targettype> = <version>"
|
BIN
libXaw3d-1.6.5.tar.xz
(Stored with Git LFS)
Normal file
BIN
libXaw3d-1.6.5.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
libXaw3d-1.6.5.tar.xz.sig
Normal file
BIN
libXaw3d-1.6.5.tar.xz.sig
Normal file
Binary file not shown.
400
libXaw3d.changes
Normal file
400
libXaw3d.changes
Normal file
@ -0,0 +1,400 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 16 12:33:24 UTC 2023 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- Update to libXaw3d 1.6.5:
|
||||
* Set close-on-exec when opening files
|
||||
* configure: pass noyywrap to AC_PROG_LEX if using autoconf 2.70 or later
|
||||
* Raises minimum autoconf version from 2.60 to 2.64 for m4_version_prereq
|
||||
* Clears autoconf warning:
|
||||
configure.ac:29: warning: AC_PROG_LEX without either yywrap or noyywrap is obsolete
|
||||
./lib/autoconf/programs.m4:716: _AC_PROG_LEX is expanded from...
|
||||
./lib/autoconf/programs.m4:709: AC_PROG_LEX is expanded from...
|
||||
configure.ac:29: the top level
|
||||
* configure: Use LT_INIT from libtool 2 instead of deprecated AC_PROG_LIBTOOL
|
||||
* AC_PROG_LIBTOOL was replaced by LT_INIT in libtool 2 in 2008,
|
||||
so it's time to rely on it.
|
||||
* Clears autoconf warnings:
|
||||
configure.ac:13: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
|
||||
configure.ac:13: You should run autoupdate.
|
||||
aclocal.m4:3465: AC_PROG_LIBTOOL is expanded from...
|
||||
configure.ac:13: the top level
|
||||
* libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
|
||||
libtoolize: and rerunning libtoolize and aclocal.
|
||||
* Issue #5: incompatible function pointer passed in _XawImRealize()
|
||||
* Import wrapper function with expected arguments from libXaw,
|
||||
where it appears to have been originally fixed in XFree86 3.9Nb
|
||||
by Paulo Cesar Pereira de Andrade.
|
||||
- Port patch xaw3d-secure.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 13 12:21:28 UTC 2022 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- Move https to https even for URLs in comments
|
||||
- Drop not existing URL
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 29 09:46:41 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update to 1.6.4:
|
||||
* convert ISO8859-1 encoded source files to UTF-8
|
||||
* Fix spelling/wording issues
|
||||
* Build xz tarballs instead of bzip2
|
||||
* fix configure doesn't fail if flex is not installed
|
||||
* build-fixes when _CONST_X_STRING is defined
|
||||
* Pass correct number of atoms from SelectSave to _XawTextSaltAwaySelection
|
||||
* Fix fd leak when write() fails in WriteToFile()
|
||||
* Bug 24635: File Descriptor leaks in libxaw-1.0.7
|
||||
- add keyring and signature validation
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 18 14:29:43 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Drop --with-pic (no effect with --disable-static)
|
||||
- Trim old rpm macros/constructs
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 19 10:32:17 UTC 2018 - werner@suse.de
|
||||
|
||||
- Update to new upstream release 1.6.3
|
||||
* Avoid using dead pointer in _XawTextSetSelection
|
||||
* Fix copied from 2D libXaw commit 11c3a104141e1a4946ad949dfb5514df0b66a031
|
||||
* autogen: add default patch prefix
|
||||
* autogen.sh: use quoted string variables
|
||||
* Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
|
||||
fall-outs, when they contain space.
|
||||
* autogen.sh: use exec instead of waiting for configure to finish
|
||||
* Syncs the invocation of configure with the one from the server.
|
||||
* darwin: Remove incorrect export of vendorShellClassRec and vendorShellWidgetClass
|
||||
* Get rid of some extraneous ; at the end of C source lines
|
||||
* Use SEEK_* names instead of raw numbers for fseek whence argument
|
||||
* Just use C89 size_t instead of rolling our own Size_t & Off_t
|
||||
* Fix abs() usage.
|
||||
* For long arguments, use labs().
|
||||
* autogen.sh: Honor NOCONFIGURE=1
|
||||
* configure: Drop AM_MAINTAINER_MODE
|
||||
* Remove support for pre-C89 headers (unifdef -UX_NOT_STDC_ENV)
|
||||
* Replace TXT16 with XChar2b inline
|
||||
* No longer need #define to substitute it now that we no longer set
|
||||
it to a different type on CRAY systems.
|
||||
* Remove CRAY/WORD64 support (unifdef -UCRAY -UWORD64)
|
||||
* Fix --disable-feature options in configure
|
||||
* Make --disable-feature options passed to configure not enable
|
||||
the feature but keep it disabled instead.
|
||||
- Port our patches to new version
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 1 21:16:33 UTC 2014 - crrodriguez@opensuse.org
|
||||
|
||||
- Ensure all "la" files are deleted, not just those in libdir
|
||||
- Enable verbose build
|
||||
- Do not use xorg-x11-devel
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 27 15:15:00 UTC 2014 - fcrozat@suse.com
|
||||
|
||||
- Add baselibs.conf as source.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 18 13:29:15 UTC 2014 - fcrozat@suse.com
|
||||
|
||||
- Add obsoletes to baselibs.conf.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 26 13:38:57 UTC 2013 - jengelh@inai.de
|
||||
|
||||
- Add obsoletes/provides xaw3d-devel because we are now
|
||||
libXaw3d-devel
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 22 07:29:57 UTC 2013 - jengelh@inai.de
|
||||
|
||||
- Redo xaw3d-elf.patch to modify Makefile.am instead and to also
|
||||
include description
|
||||
- Remove hackish Provides: from .spec file that were only
|
||||
for use with symlinks
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 30 09:31:49 UTC 2013 - werner@suse.de
|
||||
|
||||
- Follow crackbrained policy and change SuSE into SUSE
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 29 16:11:10 UTC 2013 - werner@suse.de
|
||||
|
||||
- Make the libraries ELF compatible that is that each library has
|
||||
its own soname as otherwise the runtime linker may show warnings
|
||||
- Enable the configure options for internationalization,
|
||||
multiplane-bitmaps, gray-stipples, and arrow-scrollbars
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 14 23:31:46 UTC 2013 - jengelh@inai.de
|
||||
|
||||
- Rename xaw3d to libXaw3d. Use libXaw.spec and xaw3d.changes as base.
|
||||
- Kill unused Conflicts: axe
|
||||
- Update to new upstream release 1.6.2 (update from prior 1.5E
|
||||
released on 2003-04-17)
|
||||
* Nuke unused source code, resolve many compile warnings,
|
||||
switch to autotools
|
||||
- Drop Xaw3d-1.5E-compat.patch, Xaw3d-1.5E-gvI18N.patch,
|
||||
Xaw3d-1.5E-null.patch, Xaw3d-1.5E-close-destroy-crash.patch
|
||||
(merged upstream).
|
||||
- Drop Xaw3d-1.5E-cast.patch (resolved differently upstream).
|
||||
- Rebased and renamed remaining patches from Xaw3d-1.5E-* to xaw3d-*
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 9 14:42:06 UTC 2011 - werner@suse.de
|
||||
|
||||
- Correct path of latest change as .conf is required
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 4 09:51:40 UTC 2011 - aj@suse.de
|
||||
|
||||
- Add /etc/ld.so.conf.d/xaw3dd for ldconfig (bnc#671725).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 10 17:10:18 CEST 2010 - werner@suse.de
|
||||
|
||||
- Add missing Xaw.so.7 version of Xaw3d (bnc#627314)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 17 16:27:17 CET 2009 - jengelh@medozas.de
|
||||
|
||||
- add baselbis.conf as a source
|
||||
- enable parallel building
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 26 12:53:54 CEST 2009 - mls@suse.de
|
||||
|
||||
- make patch0 usage consistent
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 17 20:18:00 CEST 2009 - crrodriguez@suse.de
|
||||
|
||||
- remove static libraries
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 7 12:34:56 CET 2009 - olh@suse.de
|
||||
|
||||
- obsolete old -XXbit packages (bnc#437293)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 3 16:17:24 CET 2008 - schwab@suse.de
|
||||
|
||||
- Fix broken cast.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de
|
||||
|
||||
- added baselibs.conf file to build xxbit packages
|
||||
for multilib support
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 20 11:46:25 CEST 2007 - dmueller@suse.de
|
||||
|
||||
- fix crash on exit due access to free'ed memory
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 29 15:25:45 CEST 2007 - werner@suse.de
|
||||
|
||||
- Branch off xaw3d-devel to make RPMlint happy
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 29 15:37:23 CEST 2007 - coolo@suse.de
|
||||
|
||||
- BuildRequire bison and flex
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 13 13:42:13 CEST 2006 - werner@suse.de
|
||||
|
||||
- Add compatibility libs for binary only programs (bug #205169)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 12 19:10:16 CEST 2006 - schwab@suse.de
|
||||
|
||||
- Fix soname of overriding libraries [#205169].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 16 18:05:20 CEST 2006 - aj@suse.de
|
||||
|
||||
- Remove unneeded BuildRequires on xorg-x11.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 28 17:15:37 CEST 2006 - werner@suse.de
|
||||
|
||||
- Make it build with X11R7
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 27 17:49:10 CET 2006 - schwab@suse.de
|
||||
|
||||
- Run ldconfig also in xaw3dd package.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:31:06 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 29 16:08:29 CET 2005 - werner@suse.de
|
||||
|
||||
- Avoid array overflow (bug #135587)
|
||||
- Fix long standing bug: redraw shadows arounbd thumb if needed.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 10 11:43:37 CEST 2005 - meissner@suse.de
|
||||
|
||||
- use RPM_OPT_FLAGS.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 2 12:42:14 CET 2005 - meissner@suse.de
|
||||
|
||||
- use NULL at the end of XSetIC* XGetIC* calls to remove
|
||||
warnings in gcc 4. (same way that Xaw in Xlib uses already).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 21 15:50:09 CEST 2004 - werner@suse.de
|
||||
|
||||
- Abort on missing fontset during initialization (bug #44037)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 7 12:46:31 CEST 2004 - werner@suse.de
|
||||
|
||||
- Add some check to abort if the Xt lib does not find fonts or
|
||||
fontsets (bug #44037)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 4 23:39:22 CEST 2004 - ro@suse.de
|
||||
|
||||
- official major version changed from 7 to 8
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 26 16:48:10 CEST 2004 - werner@suse.de
|
||||
|
||||
- Be sure that scrollbars occurs and remain if needed
|
||||
- More compatibility to Xaw
|
||||
- Do not forget fontset check
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 30 14:55:33 CEST 2004 - werner@suse.de
|
||||
|
||||
- Add patch to avoid crash within resource handling (mainly for gv)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 26 15:24:21 CEST 2004 - werner@suse.de
|
||||
|
||||
- Avoid compiler warnings.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 4 14:50:01 CET 2004 - werner@suse.de
|
||||
|
||||
- I like labels with 3D shadow
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 10 16:00:03 CET 2004 - adrian@suse.de
|
||||
|
||||
- build as user
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 1 11:53:25 CEST 2003 - werner@suse.de
|
||||
|
||||
- Avaiod nasty `Actions not found: StartScroll' message
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 28 15:41:39 CEST 2003 - coolo@suse.de
|
||||
|
||||
- use BuildRoot
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 19 18:34:16 CEST 2003 - werner@suse.de
|
||||
|
||||
- Don't crash on wrong cast's: add compat patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 5 15:30:11 CEST 2003 - werner@suse.de
|
||||
|
||||
- Update to Xaw3d-1.5E
|
||||
* Add our thumb patch
|
||||
* Add our secure patch
|
||||
* Add our hsbar patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 5 18:31:02 CEST 2002 - pmladek@suse.cz
|
||||
|
||||
- used macro %{_lib} to fix for lib64
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 14 17:25:19 CET 2000 - werner@suse.de
|
||||
|
||||
- Group tag
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 29 15:34:57 CEST 2000 - werner@suse.de
|
||||
|
||||
- Add security fixes done for libXaw
|
||||
- lib version 6.1 is required by older programs
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 12 11:50:18 CEST 2000 - schwab@suse.de
|
||||
|
||||
- Update library version number.
|
||||
- Use %{_defaultdocdir}.
|
||||
- Fix Scrollbar.c for all archs.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 31 12:51:12 CEST 2000 - nadvornik@suse.cz
|
||||
|
||||
- removed /usr/X11R6/include/X11 from filelist
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 29 12:18:30 MEST 1999 - kukuk@suse.de
|
||||
|
||||
- fix Scrollbar.c for alpha
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 27 16:31:01 CEST 1999 - bs@suse.de
|
||||
|
||||
- fixed requirements for sub packages
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de
|
||||
|
||||
- ran old prepare_spec on spec file to switch to new prepare_spec.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 27 16:25:25 CEST 1999 - werner@suse.de
|
||||
|
||||
- Fix some `inner else'
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 27 14:45:25 MEST 1999 - ro@suse.de
|
||||
|
||||
- update to 1.5
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 12 15:15:48 MET 1998 - bs@suse.de
|
||||
|
||||
- fixed spec file for new rpm.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Mon May 25 17:54:49 MET DST 1998 - werner@suse.de
|
||||
- Add addable security fixes of XFree86[tm] patch 3.3.2-patch2
|
||||
- Second *unused* patch to be able to reverse the background
|
||||
feature of scrollbars
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Tue May 5 23:29:54 MET DST 1998 - werner@suse.de
|
||||
- Update to new release 1.4
|
||||
* add some small fixes
|
||||
- Added some changes from Dimitrios P. Bouras
|
||||
(background color for scrollbar, ...)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Tue Oct 21 22:48:01 MET DST 1997 - werner@suse.de
|
||||
- some changes for the new XFree86[tm] release
|
||||
|
||||
----------------------------------------------------------------------
|
||||
23.08.96: (1.3)
|
||||
- Update von 1.2a Original + 1.1 Patch für scrollbar
|
||||
- 1.3 braucht kein scrollbar-3d patch mehr
|
||||
allerdings können bei 1.3 die Pfeile nicht gedrückt
|
||||
werden und die Resource scrollbarBackground arbeitet
|
||||
nicht.
|
343
libXaw3d.keyring
Normal file
343
libXaw3d.keyring
Normal file
@ -0,0 +1,343 @@
|
||||
pub 1024D/1F2D130E 2007-07-16 [expires: 2018-04-25]
|
||||
uid [ unknown] Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
uid [ unknown] Alan Coopersmith <alanc@freedesktop.org>
|
||||
uid [ unknown] Alan Coopersmith <alan.coopersmith@sun.com>
|
||||
sub 2048g/6E6132BD 2007-07-16
|
||||
sub 4096R/28C642A7 2013-04-26 [expires: 2018-04-25]
|
||||
|
||||
pub 3072R/CAAA50B2 2017-10-04
|
||||
uid [ unknown] Adam Jackson <ajax@nwnk.net>
|
||||
sub 3072R/AEF6BB88 2017-10-04
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQGiBEab+moRBACDH5yKqS3wcc5bdxY7PBNuwKvF5TKMfagmSvuRDtZjjIIWaA/n
|
||||
Z1KboV9Gq5g7kP7+Kfu+Qgd8u65eVsWwmPW10fXvj3aCU53glx2EdGdrHcgiyH2g
|
||||
EQfPiyBw+trIppWFRV0IDXSLMA1FNC92t2nSG/VFHaPTVwcgkIRSfcXDvwCglGdE
|
||||
a6f4uLqoNHP+m4yYnzapFuMD/R4+2AJDAvEWKDdYCGZzlawjAmmWyXrmT7/C/mx9
|
||||
8qUR473l4buXjHgDkkXXlHqdzil1vK85PhrKzNJDCCmlHUJNz+QwiAMOLwpD+kwV
|
||||
Pb57RG7y+a5JQ5+jtVw4RlUxZIk/wj2An9YBO3A5vR7PdjM32ZJCN2+aM4dYfNzQ
|
||||
xQKTA/47icvBaBVTl9rztjg2pd2Aqpc1P/GsIYLGj7XjnnJvGAENBHSH1QjpZMJG
|
||||
CTS9oJ+B0/wrIr+pA+MdFgYAb6ojMQJOO6UChjWWSGjMFcs/CeXhxlLBido3DtAE
|
||||
TbNTwO6OEfAvdosvTdhJFnwvZlJ+zZGGy5CrF2Fd9PUe9tmASbQoQWxhbiBDb29w
|
||||
ZXJzbWl0aCA8YWxhbmNAZnJlZWRlc2t0b3Aub3JnPohoBBMRAgAoAhsDBgsJCAcD
|
||||
AgYVCAIJCgsEFgIDAQIeAQIXgAUCUXnRYgUJFEPYeAAKCRCi+54IHy0TDonxAKCP
|
||||
cAgXNojuujUg5Wqi6v0RBFVSUgCggq1SsVEdq9NDWvXvkeGyNaBivSK0K0FsYW4g
|
||||
Q29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAc3VuLmNvbT6IZgQTEQIAJgIb
|
||||
AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJRedFiBQkUQ9h4AAoJEKL7nggfLRMO
|
||||
6sUAn0jl3h9rY4OJ13Lu7nsKclyhDpOqAKCFgTmaDGRuDRxloLg9jftrn7a7vrQu
|
||||
QWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPohr
|
||||
BBMRAgArAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAIZAQUCUXnRYgUJFEPY
|
||||
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
|
||||
=aTYk
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
LpW12CiCdY+Bg+y+MQTdDxSEI46tQ8Oluw==
|
||||
=YfQM
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
189
libXaw3d.spec
Normal file
189
libXaw3d.spec
Normal file
@ -0,0 +1,189 @@
|
||||
#
|
||||
# spec file for package libXaw3d
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: libXaw3d
|
||||
Version: 1.6.5
|
||||
Release: 0
|
||||
Summary: The 3D Athena Widget Set
|
||||
License: MIT
|
||||
Group: Development/Libraries/C and C++
|
||||
URL: https://xorg.freedesktop.org/
|
||||
#Git-Clone: git://anongit.freedesktop.org/xorg/lib/libXaw3d
|
||||
#Git-Web: https://cgit.freedesktop.org/xorg/lib/libXaw3d/
|
||||
Source: https://xorg.freedesktop.org/releases/individual/lib/%name-%version.tar.xz
|
||||
Source1: https://xorg.freedesktop.org/releases/individual/lib/%name-%version.tar.xz.sig
|
||||
Source2: README.SuSE
|
||||
Source3: baselibs.conf
|
||||
Source9: libXaw3d.keyring
|
||||
Patch1: xaw3d-secure.patch
|
||||
Patch2: xaw3d-thumb.patch
|
||||
Patch3: xaw3d-hsbar.patch
|
||||
Patch4: xaw3d-3dlabel.patch
|
||||
Patch5: xaw3d-fontset.patch
|
||||
Patch6: xaw3d-elf.patch
|
||||
Patch7: xaw3d.patch
|
||||
BuildRequires: autoconf >= 2.60
|
||||
BuildRequires: automake
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xmu)
|
||||
BuildRequires: pkgconfig(xorg-macros) >= 1.8
|
||||
BuildRequires: pkgconfig(xpm)
|
||||
BuildRequires: pkgconfig(xt)
|
||||
|
||||
%description
|
||||
Xaw3d is a general-purpose replacement for the Athena toolkit which
|
||||
adds a 3D appearance and support for XPM images.
|
||||
|
||||
This is a library that can be used instead of the standard
|
||||
Athena Widget Library. It has tried to keep the standard of the
|
||||
libXaw library. There are also programs which explicitly use this
|
||||
library (this is the reason why the library was included).
|
||||
|
||||
NOTE: Do NOT replace /usr/lib/libXaw.so.6.1!
|
||||
|
||||
%package -n libXaw3d6
|
||||
Summary: The 3D Athena Widget Set
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libXaw3d6
|
||||
Xaw3d is a general-purpose replacement for the Athena toolkit which
|
||||
adds a 3D appearance and support for XPM images.
|
||||
|
||||
%package -n libXaw3d7
|
||||
Summary: The 3D Athena Widget Set
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libXaw3d7
|
||||
Xaw3d is a general-purpose replacement for the Athena toolkit which
|
||||
adds a 3D appearance and support for XPM images.
|
||||
|
||||
%package -n libXaw3d8
|
||||
Summary: The 3D Athena Widget Set
|
||||
Group: System/Libraries
|
||||
Provides: Xaw3d = %version-%release
|
||||
# bug437293
|
||||
%ifarch ppc64
|
||||
Obsoletes: xaw3d-64bit
|
||||
%endif
|
||||
# Added for 13.1
|
||||
Obsoletes: xaw3d < %version-%release
|
||||
Provides: xaw3d = %version-%release
|
||||
|
||||
%description -n libXaw3d8
|
||||
Xaw3d is a general-purpose replacement for the Athena toolkit which
|
||||
adds a 3D appearance and support for XPM images.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for the X Athena Widget Set
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: libXaw3d6 = %version
|
||||
Requires: libXaw3d7 = %version
|
||||
Requires: libXaw3d8 = %version
|
||||
Provides: xaw3d:/usr/include/X11/Xaw3d/Xaw3dP.h
|
||||
# bug437293
|
||||
%ifarch ppc64
|
||||
Obsoletes: xaw3d-devel-64bit
|
||||
%endif
|
||||
# O/P added for 13.2
|
||||
Provides: xaw3d-devel = %version-%release
|
||||
Obsoletes: xaw3d-devel < %version-%release
|
||||
|
||||
%description devel
|
||||
Xaw3d is a general-purpose replacement for the Athena toolkit which
|
||||
adds a 3D appearance and support for XPM images.
|
||||
|
||||
This package contains the development headers for the library found
|
||||
in libXaw3d6/libXaw3d7/libXaw3d8.
|
||||
|
||||
%package -n xaw3dd
|
||||
Summary: Select 3D Athena Widgets as a replacement for Athena Widgets
|
||||
Group: System/Libraries
|
||||
Requires: libXaw3d6 = %version
|
||||
Requires: libXaw3d7 = %version
|
||||
Requires: libXaw3d8 = %version
|
||||
|
||||
%description -n xaw3dd
|
||||
Installation of this package will cause programs utilizing the Athena
|
||||
Widget Toolkit to instead use the 3D Athena Widget set.
|
||||
|
||||
If any problems arise using or starting X Window System programs,
|
||||
remove this package.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
autoreconf -fi
|
||||
%configure --docdir=%_docdir/%name --disable-static \
|
||||
--enable-internationalization \
|
||||
--enable-multiplane-bitmaps \
|
||||
--enable-gray-stipples \
|
||||
--enable-arrow-scrollbars \
|
||||
--with-gnu-ld \
|
||||
|
||||
%make_build
|
||||
|
||||
%install
|
||||
%make_install
|
||||
find %{buildroot} -type f -name "*.la" -print -delete
|
||||
|
||||
# Copy README here and then gobble it up via %%doc
|
||||
mkdir -p %{buildroot}%_docdir/xaw3dd
|
||||
cp %_sourcedir/README.SuSE %{buildroot}/%_docdir/xaw3dd/README.SUSE
|
||||
ln -s %_docdir/xaw3dd/README.SUSE %{buildroot}%_libdir/Xaw3d/NOTE
|
||||
|
||||
# Create /etc/ld.so.conf.d/xaw3dd.conf
|
||||
mkdir -p %{buildroot}%_sysconfdir/ld.so.conf.d
|
||||
echo %_libdir/Xaw3d > %{buildroot}%_sysconfdir/ld.so.conf.d/xaw3dd.conf
|
||||
|
||||
%post -n libXaw3d6 -p /sbin/ldconfig
|
||||
%postun -n libXaw3d6 -p /sbin/ldconfig
|
||||
%post -n libXaw3d7 -p /sbin/ldconfig
|
||||
%postun -n libXaw3d7 -p /sbin/ldconfig
|
||||
%post -n libXaw3d8 -p /sbin/ldconfig
|
||||
%postun -n libXaw3d8 -p /sbin/ldconfig
|
||||
%post -n xaw3dd -p /sbin/ldconfig
|
||||
%postun -n xaw3dd -p /sbin/ldconfig
|
||||
|
||||
%files -n libXaw3d6
|
||||
%_libdir/libXaw3d.so.6*
|
||||
|
||||
%files -n libXaw3d7
|
||||
%_libdir/libXaw3d.so.7*
|
||||
|
||||
%files -n libXaw3d8
|
||||
%_libdir/libXaw3d.so.8*
|
||||
|
||||
%files devel
|
||||
%_includedir/X11/Xaw3d/
|
||||
%_libdir/libXaw3d.so
|
||||
%_libdir/pkgconfig/xaw3d.pc
|
||||
%_docdir/%name/
|
||||
|
||||
%files -n xaw3dd
|
||||
%config %_sysconfdir/ld.so.conf.d/xaw3dd.conf
|
||||
%_libdir/Xaw3d/
|
||||
%doc %_libdir/Xaw3d/NOTE
|
||||
%_docdir/xaw3dd/
|
||||
|
||||
%changelog
|
164
xaw3d-3dlabel.patch
Normal file
164
xaw3d-3dlabel.patch
Normal file
@ -0,0 +1,164 @@
|
||||
---
|
||||
libXaw3d-1.6.3/src/Label.c | 65 +++++++++++++++++++++++++++++++--------------
|
||||
1 file changed, 45 insertions(+), 20 deletions(-)
|
||||
|
||||
--- libXaw3d-1.6.3/src/Label.c
|
||||
+++ libXaw3d-1.6.3/src/Label.c 2018-06-19 10:22:20.542598480 +0000
|
||||
@@ -361,9 +361,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;
|
||||
}
|
||||
|
||||
@@ -389,9 +396,11 @@ Initialize(Widget request, Widget new, A
|
||||
{
|
||||
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);
|
||||
@@ -405,18 +414,20 @@ Initialize(Widget request, Widget new, A
|
||||
|
||||
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);
|
||||
@@ -494,14 +505,16 @@ Redisplay(Widget gw, XEvent *event, Regi
|
||||
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
|
||||
@@ -591,14 +604,16 @@ _Reposition(LabelWidget lw, Dimension wi
|
||||
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:
|
||||
@@ -690,17 +705,20 @@ SetValues(Widget current, Widget request
|
||||
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 */
|
||||
}
|
||||
|
||||
@@ -709,15 +727,20 @@ SetValues(Widget current, Widget request
|
||||
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;
|
||||
}
|
||||
@@ -788,9 +811,11 @@ QueryGeometry(Widget w, XtWidgetGeometry
|
||||
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 &&
|
63
xaw3d-elf.patch
Normal file
63
xaw3d-elf.patch
Normal file
@ -0,0 +1,63 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: 2013-11-22 08:20:11.934094533 +0100
|
||||
|
||||
According to Werner Fink, the libraries' DT_SONAME must be
|
||||
libXaw{,3d}.so.{6,7,8} and that we cannot cheat our way with symlinks
|
||||
or otherwise the runtime linker would complain, though this has never
|
||||
been corroborated by some program output. (If you have it, paste it
|
||||
here in the description.)
|
||||
|
||||
On the other hand, the absence (so far) of a runtime linker
|
||||
complaint is observable on openSUSE 12.3's "xaw3dd" package
|
||||
where we did in fact use symlinks.
|
||||
|
||||
ares07:~> ldd /usr/bin/xterm | grep Xaw
|
||||
libXaw.so.7 => /usr/lib64/Xaw3d/libXaw.so.7
|
||||
(0x00007fe219b67000)
|
||||
ares07:~> readelf -a /usr/lib64/Xaw3d/libXaw.so.7 | grep SONAME
|
||||
0x000000000000000e (SONAME) Library soname: [libXaw.so.7]
|
||||
ares07:~> xterm
|
||||
xterm: Xt error: Can't open display:
|
||||
xterm: DISPLAY is not set
|
||||
|
||||
---
|
||||
src/Makefile.am | 22 +++++++++++++++++++++-
|
||||
1 file changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Makefile.am
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Makefile.am
|
||||
+++ libXaw3d-1.6.2/src/Makefile.am
|
||||
@@ -1,4 +1,8 @@
|
||||
-lib_LTLIBRARIES = libXaw3d.la
|
||||
+# The .la file with newest SOVERSION should come last,
|
||||
+# so that it "wins" during `make install`.
|
||||
+lib_LTLIBRARIES = xaw6/libXaw3d.la xaw7/libXaw3d.la libXaw3d.la
|
||||
+xawdir = ${libdir}/Xaw3d
|
||||
+xaw_LTLIBRARIES = xaw6/libXaw.la xaw7/libXaw.la libXaw.la
|
||||
|
||||
AM_YFLAGS = -d -p LayYY
|
||||
|
||||
@@ -73,6 +77,22 @@ libXaw3d_la_LIBADD = \
|
||||
|
||||
libXaw3d_la_LDFLAGS = -version-info 8:0:0 -no-undefined
|
||||
|
||||
+libXaw_la_SOURCES = ${libXaw3d_la_SOURCES}
|
||||
+libXaw_la_LIBADD = ${libXaw3d_la_LIBADD}
|
||||
+libXaw_la_LDFLAGS = ${libXaw3d_la_LDFLAGS}
|
||||
+xaw6_libXaw3d_la_SOURCES = ${libXaw3d_la_SOURCES}
|
||||
+xaw6_libXaw3d_la_LIBADD = ${libXaw3d_la_LIBADD}
|
||||
+xaw6_libXaw3d_la_LDFLAGS = ${libXaw3d_la_LDFLAGS} -version-info 6:0:0
|
||||
+xaw6_libXaw_la_SOURCES = ${libXaw3d_la_SOURCES}
|
||||
+xaw6_libXaw_la_LIBADD = ${libXaw3d_la_LIBADD}
|
||||
+xaw6_libXaw_la_LDFLAGS = ${libXaw3d_la_LDFLAGS} -version-info 6:0:0
|
||||
+xaw7_libXaw3d_la_SOURCES = ${libXaw3d_la_SOURCES}
|
||||
+xaw7_libXaw3d_la_LIBADD = ${libXaw3d_la_LIBADD}
|
||||
+xaw7_libXaw3d_la_LDFLAGS = ${libXaw3d_la_LDFLAGS} -version-info 7:0:0
|
||||
+xaw7_libXaw_la_SOURCES = ${libXaw3d_la_SOURCES}
|
||||
+xaw7_libXaw_la_LIBADD = ${libXaw3d_la_LIBADD}
|
||||
+xaw7_libXaw_la_LDFLAGS = ${libXaw3d_la_LDFLAGS} -version-info 7:0:0
|
||||
+
|
||||
BUILT_SOURCES = laygram.h
|
||||
|
||||
dist_doc_DATA = README.XAW3D
|
277
xaw3d-fontset.patch
Normal file
277
xaw3d-fontset.patch
Normal file
@ -0,0 +1,277 @@
|
||||
---
|
||||
libXaw3d-1.6.3/src/AsciiSink.c | 2 ++
|
||||
libXaw3d-1.6.3/src/Command.c | 2 ++
|
||||
libXaw3d-1.6.3/src/Label.c | 11 ++++++++++-
|
||||
libXaw3d-1.6.3/src/List.c | 14 ++++++++++++--
|
||||
libXaw3d-1.6.3/src/MultiSink.c | 33 ++++++++++++++++++++++++++-------
|
||||
libXaw3d-1.6.3/src/SmeBSB.c | 2 ++
|
||||
libXaw3d-1.6.3/src/Tip.c | 16 ++++++++++++++--
|
||||
libXaw3d-1.6.3/src/XawIm.c | 14 +++++++++-----
|
||||
8 files changed, 77 insertions(+), 17 deletions(-)
|
||||
|
||||
--- libXaw3d-1.6.3/src/AsciiSink.c
|
||||
+++ libXaw3d-1.6.3/src/AsciiSink.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -513,6 +513,8 @@ Initialize(Widget request, Widget new, A
|
||||
{
|
||||
AsciiSinkObject sink = (AsciiSinkObject) new;
|
||||
|
||||
+ if (!sink->ascii_sink.font) XtError("Aborting: no font found\n");
|
||||
+
|
||||
GetGC(sink);
|
||||
|
||||
sink->ascii_sink.insertCursorOn= CreateInsertCursor(XtScreenOfObject(new));
|
||||
--- libXaw3d-1.6.3/src/Command.c
|
||||
+++ libXaw3d-1.6.3/src/Command.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -220,6 +220,8 @@ Initialize(Widget request, Widget new, A
|
||||
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))
|
||||
--- libXaw3d-1.6.3/src/Label.c
|
||||
+++ libXaw3d-1.6.3/src/Label.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -217,7 +217,10 @@ SetTextWidthAndHeight(LabelWidget lw)
|
||||
#ifdef XAW_INTERNATIONALIZATION
|
||||
if ( lw->simple.international == True ) {
|
||||
XFontSet fset = lw->label.fontset;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(fset);
|
||||
+ XFontSetExtents *ext;
|
||||
+
|
||||
+ if (!lw->label.fontset || !(ext = XExtentsOfFontSet(fset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
lw->label.label_height = ext->max_ink_extent.height;
|
||||
if (lw->label.label == NULL) {
|
||||
@@ -402,6 +405,12 @@ Initialize(Widget request, Widget new, A
|
||||
lw->threeD.shadow_width = 0;
|
||||
#endif
|
||||
|
||||
+ if (!lw->label.font) XtError("Aborting: no font found\n");
|
||||
+#ifdef XAW_INTERNATIONALIZATION
|
||||
+ if (lw->simple.international && !lw->label.fontset)
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
+#endif
|
||||
+
|
||||
if (lw->label.label == NULL)
|
||||
lw->label.label = XtNewString(lw->core.name);
|
||||
else
|
||||
--- libXaw3d-1.6.3/src/List.c
|
||||
+++ libXaw3d-1.6.3/src/List.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -362,6 +362,12 @@ Initialize(Widget junk, Widget new, ArgL
|
||||
{
|
||||
ListWidget lw = (ListWidget) new;
|
||||
|
||||
+ if (!lw->list.font) XtError("Aborting: no font found\n");
|
||||
+#ifdef XAW_INTERNATIONALIZATION
|
||||
+ if (lw->simple.international && !lw->list.fontset)
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Initialize all private resources.
|
||||
*/
|
||||
@@ -571,7 +577,9 @@ PaintItemName(Widget w, int item)
|
||||
int x, y, str_y;
|
||||
ListWidget lw = (ListWidget) w;
|
||||
#ifdef XAW_INTERNATIONALIZATION
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(lw->list.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!lw->list.fontset || !(ext = XExtentsOfFontSet(lw->list.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
#endif
|
||||
|
||||
if (!XtIsRealized(w)) return; /* Just in case... */
|
||||
@@ -926,7 +934,9 @@ SetValues(Widget current, Widget request
|
||||
ListWidget nl = (ListWidget) new;
|
||||
Boolean redraw = FALSE;
|
||||
#ifdef XAW_INTERNATIONALIZATION
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(nl->list.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!nl->list.fontset || !(ext = XExtentsOfFontSet(nl->list.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
#endif
|
||||
|
||||
/* If the request height/width is different, lock it. Unless its 0. If */
|
||||
--- libXaw3d-1.6.3/src/MultiSink.c
|
||||
+++ libXaw3d-1.6.3/src/MultiSink.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -252,7 +252,9 @@ PaintText(Widget w, GC gc, Position x, P
|
||||
XFontSet fontset = sink->multi_sink.fontset;
|
||||
Position max_x;
|
||||
Dimension width = XwcTextEscapement(fontset, buf, len);
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!fontset || !(ext = XExtentsOfFontSet(fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
max_x = (Position) ctx->core.width;
|
||||
|
||||
if ( ((int) width) <= -x) /* Don't draw if we can't see it. */
|
||||
@@ -286,7 +288,9 @@ DisplayText(Widget w, Position x, Positi
|
||||
MultiSinkObject sink = (MultiSinkObject) w;
|
||||
Widget source = XawTextGetSource(XtParent(w));
|
||||
wchar_t buf[BUFSIZ];
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(sink->multi_sink.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet(sink->multi_sink.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
int j, k;
|
||||
XawTextBlock blk;
|
||||
@@ -403,8 +407,10 @@ FindDistance (Widget w, XawTextPosition
|
||||
|
||||
XawTextPosition index, lastPos;
|
||||
wchar_t c;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(sink->multi_sink.fontset);
|
||||
XawTextBlock blk;
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet(sink->multi_sink.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
/* we may not need this */
|
||||
lastPos = GETLASTPOS;
|
||||
@@ -437,8 +443,10 @@ FindPosition(Widget w, XawTextPosition f
|
||||
int lastWidth = 0, whiteSpaceWidth = 0;
|
||||
Boolean whiteSpaceSeen;
|
||||
wchar_t c;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(sink->multi_sink.fontset);
|
||||
XawTextBlock blk;
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet(sink->multi_sink.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
lastPos = GETLASTPOS;
|
||||
|
||||
@@ -535,6 +543,11 @@ Initialize(Widget request, Widget new, A
|
||||
|
||||
GetGC(sink);
|
||||
|
||||
+#ifdef XAW_INTERNATIONALIZATION
|
||||
+ if (!sink->multi_sink.fontset) XtError("Aborting: no fontset found\n");
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
sink->multi_sink.insertCursorOn= CreateInsertCursor(XtScreenOfObject(new));
|
||||
sink->multi_sink.laststate = XawisOff;
|
||||
sink->multi_sink.cursor_x = sink->multi_sink.cursor_y = 0;
|
||||
@@ -615,7 +628,9 @@ MaxLines(Widget w, Dimension height)
|
||||
{
|
||||
MultiSinkObject sink = (MultiSinkObject) w;
|
||||
int font_height;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(sink->multi_sink.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet(sink->multi_sink.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
font_height = ext->max_logical_extent.height;
|
||||
return( ((int) height) / font_height );
|
||||
@@ -636,7 +651,9 @@ MaxHeight(
|
||||
int lines )
|
||||
{
|
||||
MultiSinkObject sink = (MultiSinkObject) w;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(sink->multi_sink.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet(sink->multi_sink.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
return(lines * ext->max_logical_extent.height);
|
||||
}
|
||||
@@ -718,7 +735,9 @@ _XawMultiSinkPosToXY(
|
||||
Position *y )
|
||||
{
|
||||
MultiSinkObject sink = (MultiSinkObject) ((TextWidget)w)->text.sink;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet( sink->multi_sink.fontset );
|
||||
+ XFontSetExtents *ext;
|
||||
+ if (!sink->multi_sink.fontset || !(ext = XExtentsOfFontSet( sink->multi_sink.fontset )))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
_XawTextPosToXY( w, pos, x, y );
|
||||
*y += abs( ext->max_logical_extent.y );
|
||||
--- libXaw3d-1.6.3/src/SmeBSB.c
|
||||
+++ libXaw3d-1.6.3/src/SmeBSB.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -204,6 +204,8 @@ Initialize(Widget request, Widget new, A
|
||||
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 */
|
||||
--- libXaw3d-1.6.3/src/Tip.c
|
||||
+++ libXaw3d-1.6.3/src/Tip.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -248,6 +248,12 @@ XawTipInitialize(Widget req, Widget w, A
|
||||
TipWidget tip = (TipWidget)w;
|
||||
XGCValues values;
|
||||
|
||||
+ if (!tip->tip.font) XtError("Aborting: no font found\n");
|
||||
+#ifdef XAW_INTERNATIONALIZATION
|
||||
+ if (tip->tip.international && !tip->tip.fontset)
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
+#endif
|
||||
+
|
||||
tip->tip.timer = 0;
|
||||
|
||||
values.foreground = tip->tip.foreground;
|
||||
@@ -333,7 +339,10 @@ XawTipExpose(Widget w, XEvent *event, Re
|
||||
#ifdef XAW_INTERNATIONALIZATION
|
||||
if (tip->tip.international == True) {
|
||||
Position ksy = tip->tip.internal_height;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(tip->tip.fontset);
|
||||
+ XFontSetExtents *ext;
|
||||
+
|
||||
+ if (!tip->tip.fontset || !(ext = XExtentsOfFontSet(tip->tip.fontset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
ksy += abs(ext->max_ink_extent.y);
|
||||
|
||||
@@ -414,7 +423,10 @@ TipLayout(XawTipInfo *info)
|
||||
#ifdef XAW_INTERNATIONALIZATION
|
||||
if (info->tip->tip.international == True) {
|
||||
XFontSet fset = info->tip->tip.fontset;
|
||||
- XFontSetExtents *ext = XExtentsOfFontSet(fset);
|
||||
+ XFontSetExtents *ext;
|
||||
+
|
||||
+ if (!fset || !(ext = XExtentsOfFontSet(fset)))
|
||||
+ XtError("Aborting: no fontset found\n");
|
||||
|
||||
height = ext->max_ink_extent.height;
|
||||
if ((nl = index(label, '\n')) != NULL) {
|
||||
--- libXaw3d-1.6.3/src/XawIm.c
|
||||
+++ libXaw3d-1.6.3/src/XawIm.c 2018-06-19 10:22:54.985964432 +0000
|
||||
@@ -727,8 +727,10 @@ CreateIC(Widget w, XawVendorShellExtPart
|
||||
SetVaArg( &pe_a[pe_cnt], (XPointer) p->font_set); pe_cnt++;
|
||||
SetVaArg( &st_a[st_cnt], (XPointer) XNFontSet); st_cnt++;
|
||||
SetVaArg( &st_a[st_cnt], (XPointer) p->font_set); st_cnt++;
|
||||
- height = maxAscentOfFontSet(p->font_set)
|
||||
- + maxDescentOfFontSet(p->font_set);
|
||||
+ if (p->font_set) {
|
||||
+ height = maxAscentOfFontSet(p->font_set)
|
||||
+ + maxDescentOfFontSet(p->font_set);
|
||||
+ }
|
||||
height = SetVendorShellHeight(ve, height);
|
||||
}
|
||||
if (p->flg & CIFg) {
|
||||
@@ -857,7 +859,7 @@ SetICValues(Widget w, XawVendorShellExtP
|
||||
XPointer ic_a[20], pe_a[20], st_a[20];
|
||||
int ic_cnt = 0, pe_cnt = 0, st_cnt = 0;
|
||||
XawTextMargin *margin;
|
||||
- int height;
|
||||
+ int height = 0;
|
||||
|
||||
if ((ve->im.xim == NULL) || ((p = GetIcTableShared(w, ve)) == NULL) ||
|
||||
(p->xic == NULL)) return;
|
||||
@@ -884,8 +886,10 @@ SetICValues(Widget w, XawVendorShellExtP
|
||||
SetVaArg( &pe_a[pe_cnt], (XPointer) p->font_set); pe_cnt++;
|
||||
SetVaArg( &st_a[st_cnt], (XPointer) XNFontSet); st_cnt++;
|
||||
SetVaArg( &st_a[st_cnt], (XPointer) p->font_set); st_cnt++;
|
||||
- height = maxAscentOfFontSet(p->font_set)
|
||||
- + maxDescentOfFontSet(p->font_set);
|
||||
+ if (p->font_set) {
|
||||
+ height = maxAscentOfFontSet(p->font_set)
|
||||
+ + maxDescentOfFontSet(p->font_set);
|
||||
+ }
|
||||
height = SetVendorShellHeight(ve, height);
|
||||
}
|
||||
if (p->flg & CIFg) {
|
266
xaw3d-hsbar.patch
Normal file
266
xaw3d-hsbar.patch
Normal file
@ -0,0 +1,266 @@
|
||||
---
|
||||
src/Text.c | 12 +++++--
|
||||
src/Viewport.c | 86 +++++++++++++++++----------------------------------------
|
||||
2 files changed, 35 insertions(+), 63 deletions(-)
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Text.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Text.c
|
||||
+++ libXaw3d-1.6.2/src/Text.c
|
||||
@@ -497,8 +497,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)) {
|
||||
@@ -521,8 +523,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,
|
||||
Index: libXaw3d-1.6.2/src/Viewport.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Viewport.c
|
||||
+++ libXaw3d-1.6.2/src/Viewport.c
|
||||
@@ -244,7 +244,7 @@ Initialize(Widget request, Widget new, A
|
||||
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, A
|
||||
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, A
|
||||
* 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 que
|
||||
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 que
|
||||
&clip_width, &clip_height);
|
||||
}
|
||||
else {
|
||||
-#ifdef NEED_LAYOUT_LOOP
|
||||
Dimension prev_width, prev_height;
|
||||
XtGeometryMask prev_mode;
|
||||
-#endif
|
||||
XtWidgetGeometry preferred;
|
||||
|
||||
needshoriz = needsvert = False;
|
||||
@@ -554,30 +542,29 @@ ComputeLayout(Widget widget, Boolean que
|
||||
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 +572,9 @@ ComputeLayout(Widget widget, Boolean que
|
||||
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 +584,7 @@ ComputeLayout(Widget widget, Boolean que
|
||||
|
||||
#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 +599,7 @@ ComputeLayout(Widget widget, Boolean que
|
||||
/* 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 +613,22 @@ ComputeLayout(Widget widget, Boolean que
|
||||
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 +673,7 @@ ComputeLayout(Widget widget, Boolean que
|
||||
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 +698,7 @@ ComputeLayout(Widget widget, Boolean que
|
||||
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 +748,7 @@ ComputeWithForceBars(Widget widget, Bool
|
||||
*/
|
||||
|
||||
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 +894,7 @@ GeometryRequestPlusScrollbar(ViewportWid
|
||||
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 +965,7 @@ GeometryManager(Widget child, XtWidgetGe
|
||||
return XtGeometryNo;
|
||||
|
||||
XtVaGetValues((Widget)(w->viewport.threeD), XtNshadowWidth, &sw, NULL);
|
||||
- if (sw) pad = 2;
|
||||
+ if (sw) pad = 2 * sw;
|
||||
|
||||
allowed = *request;
|
||||
|
524
xaw3d-secure.patch
Normal file
524
xaw3d-secure.patch
Normal file
@ -0,0 +1,524 @@
|
||||
---
|
||||
libXaw3d-1.6.5/include/X11/Xaw3d/AsciiSrcP.h | 6 +-
|
||||
libXaw3d-1.6.5/include/X11/Xaw3d/MultiSrcP.h | 6 +-
|
||||
libXaw3d-1.6.5/src/Layout.c | 18 +++++-
|
||||
libXaw3d-1.6.5/src/MenuButton.c | 15 ++++-
|
||||
libXaw3d-1.6.5/src/Simple.c | 18 ++++--
|
||||
libXaw3d-1.6.5/src/SimpleMenu.c | 16 ++++--
|
||||
libXaw3d-1.6.5/src/SmeBSB.c | 51 ++++++++++++-------
|
||||
libXaw3d-1.6.5/src/Text.c | 50 ++++++++++++++-----
|
||||
libXaw3d-1.6.5/src/TextPop.c | 71 ++++++++++++++++++++++-----
|
||||
libXaw3d-1.6.5/src/XawAlloc.h | 10 +++
|
||||
libXaw3d-1.6.5/src/XawI18n.h | 2
|
||||
libXaw3d-1.6.5/src/XawIm.c | 4 -
|
||||
12 files changed, 206 insertions(+), 61 deletions(-)
|
||||
|
||||
--- libXaw3d-1.6.5/include/X11/Xaw3d/AsciiSrcP.h
|
||||
+++ libXaw3d-1.6.5/include/X11/Xaw3d/AsciiSrcP.h 2023-08-16 12:29:23.549080277 +0000
|
||||
@@ -80,7 +80,11 @@ SOFTWARE.
|
||||
#ifdef L_tmpnam
|
||||
#define TMPSIZ L_tmpnam
|
||||
#else
|
||||
-#define TMPSIZ 32 /* bytes to allocate for tmpnam */
|
||||
+#ifdef PATH_MAX
|
||||
+#define TMPSIZ PATH_MAX
|
||||
+#else
|
||||
+#define TMPSIZ 1024 /* bytes to allocate for tmpnam */
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
|
||||
--- libXaw3d-1.6.5/include/X11/Xaw3d/MultiSrcP.h
|
||||
+++ libXaw3d-1.6.5/include/X11/Xaw3d/MultiSrcP.h 2023-08-16 12:29:23.549080277 +0000
|
||||
@@ -111,7 +111,11 @@ SOFTWARE.
|
||||
#ifdef L_tmpnam
|
||||
#define TMPSIZ L_tmpnam
|
||||
#else
|
||||
-#define TMPSIZ 32 /* bytes to allocate for tmpnam */
|
||||
+#ifdef PATH_MAX
|
||||
+#define TMPSIZ PATH_MAX
|
||||
+#else
|
||||
+#define TMPSIZ 1024 /* bytes to allocate for tmpnam */
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
|
||||
--- libXaw3d-1.6.5/src/Layout.c
|
||||
+++ libXaw3d-1.6.5/src/Layout.c 2023-08-16 12:29:23.549080277 +0000
|
||||
@@ -40,6 +40,8 @@
|
||||
# include <X11/Xaw3d/LayoutP.h>
|
||||
#endif
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
|
||||
@@ -565,10 +567,18 @@ Evaluate (LayoutWidget l, BoxPtr box, Ex
|
||||
nexpr = LookupVariable (box, expr->u.variable);
|
||||
if (!nexpr)
|
||||
{
|
||||
- char buf[256];
|
||||
- (void) sprintf (buf, "Layout: undefined variable %s\n",
|
||||
- XrmQuarkToString (expr->u.variable));
|
||||
- XtError (buf);
|
||||
+ char *pvar = XrmQuarkToString (expr->u.variable);
|
||||
+ char *msg = "Layout: undefined variable ";
|
||||
+ int len = strlen(msg) + strlen(pvar) + 2;
|
||||
+ char *pbuf, buf[256];
|
||||
+
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf != NULL)
|
||||
+ {
|
||||
+ sprintf(pbuf, "%s%s\n", msg, pvar);
|
||||
+ XtError (buf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
+ }
|
||||
return 0.0;
|
||||
}
|
||||
return Evaluate (l, box, nexpr, natural);
|
||||
--- libXaw3d-1.6.5/src/MenuButton.c
|
||||
+++ libXaw3d-1.6.5/src/MenuButton.c 2023-08-16 12:29:23.549080277 +0000
|
||||
@@ -54,6 +54,8 @@ in this Software without prior written a
|
||||
#include <X11/Xaw3d/XawInit.h>
|
||||
#include <X11/Xaw3d/MenuButtoP.h>
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
static void ClassInitialize(void);
|
||||
static void PopupMenu(Widget, XEvent *, String *, Cardinal *);
|
||||
|
||||
@@ -177,9 +179,16 @@ PopupMenu(Widget w, XEvent *event, Strin
|
||||
|
||||
if (menu == NULL) {
|
||||
char error_buf[BUFSIZ];
|
||||
- (void) sprintf(error_buf, "MenuButton: %s %s.",
|
||||
- "Could not find menu widget named", mbw->menu_button.menu_name);
|
||||
- XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
|
||||
+ char *err1 = "MenuButton: Could not find menu widget named ";
|
||||
+ char *perr;
|
||||
+ int len;
|
||||
+
|
||||
+ len = strlen(err1) + strlen(mbw->menu_button.menu_name) + 1 + 1;
|
||||
+ perr = XtStackAlloc(len, error_buf);
|
||||
+ if (perr == NULL) return;
|
||||
+ sprintf(perr, "%s%s.", err1, mbw->menu_button.menu_name);
|
||||
+ XtAppWarning(XtWidgetToApplicationContext(w), perr);
|
||||
+ XtStackFree(perr, error_buf);
|
||||
return;
|
||||
}
|
||||
if (!XtIsRealized(menu))
|
||||
--- libXaw3d-1.6.5/src/Simple.c
|
||||
+++ libXaw3d-1.6.5/src/Simple.c 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -57,6 +57,8 @@ SOFTWARE.
|
||||
#include <X11/Xaw3d/SimpleP.h>
|
||||
#include <X11/Xmu/Drawing.h>
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
#define offset(field) XtOffsetOf(SimpleRec, simple.field)
|
||||
|
||||
static XtResource resources[] = {
|
||||
@@ -154,11 +156,17 @@ ClassPartInitialize(WidgetClass class)
|
||||
|
||||
if (c->simple_class.change_sensitive == NULL) {
|
||||
char buf[BUFSIZ];
|
||||
-
|
||||
- (void) sprintf(buf,
|
||||
- "%s Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.",
|
||||
- c->core_class.class_name);
|
||||
- XtWarning(buf);
|
||||
+ char *pbuf;
|
||||
+ char *msg1 = " Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.";
|
||||
+ int len;
|
||||
+
|
||||
+ len = strlen(msg1) + strlen(c->core_class.class_name) + 1;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf != NULL) {
|
||||
+ sprintf(pbuf, "%s%s", c->core_class.class_name, msg1);
|
||||
+ XtWarning(pbuf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
+ }
|
||||
c->simple_class.change_sensitive = ChangeSensitive;
|
||||
}
|
||||
|
||||
--- libXaw3d-1.6.5/src/SimpleMenu.c
|
||||
+++ libXaw3d-1.6.5/src/SimpleMenu.c 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -52,6 +52,8 @@ in this Software without prior written a
|
||||
#include <X11/Xmu/Initer.h>
|
||||
#include <X11/Xmu/CharSet.h>
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
#define streq(a, b) ( strcmp((a), (b)) == 0 )
|
||||
|
||||
#define offset(field) XtOffsetOf(SimpleMenuRec, simple_menu.field)
|
||||
@@ -749,9 +751,17 @@ PositionMenuAction(Widget w, XEvent * ev
|
||||
|
||||
if ( (menu = FindMenu(w, params[0])) == NULL) {
|
||||
char error_buf[BUFSIZ];
|
||||
- (void) sprintf(error_buf, "%s '%s'",
|
||||
- "Xaw - SimpleMenuWidget: could not find menu named: ", params[0]);
|
||||
- XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
|
||||
+ char *err1 = "Xaw - SimpleMenuWidget: could not find menu named: ";
|
||||
+ char *perr;
|
||||
+ int len;
|
||||
+
|
||||
+ len = strlen(err1) + strlen(params[0]) + 2 + 1;
|
||||
+ perr = XtStackAlloc(len, error_buf);
|
||||
+ if (perr == NULL)
|
||||
+ return;
|
||||
+ sprintf(perr, "%s'%s'", err1, params[0]);
|
||||
+ XtAppWarning(XtWidgetToApplicationContext(w), perr);
|
||||
+ XtStackFree(perr, error_buf);
|
||||
return;
|
||||
}
|
||||
|
||||
--- libXaw3d-1.6.5/src/SmeBSB.c
|
||||
+++ libXaw3d-1.6.5/src/SmeBSB.c 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -52,6 +52,7 @@ in this Software without prior written a
|
||||
#include <X11/Xaw3d/SmeBSBP.h>
|
||||
#include <X11/Xaw3d/Cardinals.h>
|
||||
#include <stdio.h>
|
||||
+#include "XawAlloc.h"
|
||||
|
||||
/* needed for abs() */
|
||||
#include <stdlib.h>
|
||||
@@ -696,6 +697,8 @@ GetBitmapInfo(Widget w, Boolean is_left)
|
||||
int x, y;
|
||||
unsigned int width, height, bw;
|
||||
char buf[BUFSIZ];
|
||||
+ char *pbuf;
|
||||
+ int len;
|
||||
|
||||
if (is_left) {
|
||||
width = height = 0;
|
||||
@@ -704,18 +707,24 @@ GetBitmapInfo(Widget w, Boolean is_left)
|
||||
if (!XGetGeometry(XtDisplayOfObject(w),
|
||||
entry->sme_bsb.left_bitmap, &root, &x, &y,
|
||||
&width, &height, &bw, &entry->sme_bsb.left_depth)) {
|
||||
- (void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
|
||||
- "Could not get Left Bitmap",
|
||||
- "geometry information for menu entry",
|
||||
- XtName(w));
|
||||
- XtAppError(XtWidgetToApplicationContext(w), buf);
|
||||
+ char *err1 = "Xaw SmeBSB Object: Could not get Left Bitmap geometry information for menu entry ";
|
||||
+ len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf == NULL) return;
|
||||
+ sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
|
||||
+ XtAppError(XtWidgetToApplicationContext(w), pbuf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
}
|
||||
#ifdef NEVER
|
||||
if (entry->sme_bsb.left_depth != 1) {
|
||||
- (void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.",
|
||||
- "Left Bitmap of entry", XtName(w),
|
||||
- "is not one bit deep");
|
||||
- XtAppError(XtWidgetToApplicationContext(w), buf);
|
||||
+ char *err1 = "Xaw SmeBSB Object: Left Bitmap of entry ";
|
||||
+ char *err2 = " is not one bit deep.";
|
||||
+ len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf == NULL) return;
|
||||
+ sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
|
||||
+ XtAppError(XtWidgetToApplicationContext(w), pbuf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -729,18 +738,24 @@ GetBitmapInfo(Widget w, Boolean is_left)
|
||||
if (!XGetGeometry(XtDisplayOfObject(w),
|
||||
entry->sme_bsb.right_bitmap, &root, &x, &y,
|
||||
&width, &height, &bw, &entry->sme_bsb.right_depth)) {
|
||||
- (void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
|
||||
- "Could not get Right Bitmap",
|
||||
- "geometry information for menu entry",
|
||||
- XtName(w));
|
||||
- XtAppError(XtWidgetToApplicationContext(w), buf);
|
||||
+ char *err1 = "Xaw SmeBSB Object: Could not get Right Bitmap geometry information for menu entry ";
|
||||
+ len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf == NULL) return;
|
||||
+ sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
|
||||
+ XtAppError(XtWidgetToApplicationContext(w), pbuf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
}
|
||||
#ifdef NEVER
|
||||
if (entry->sme_bsb.right_depth != 1) {
|
||||
- (void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.",
|
||||
- "Right Bitmap of entry", XtName(w),
|
||||
- "is not one bit deep");
|
||||
- XtAppError(XtWidgetToApplicationContext(w), buf);
|
||||
+ char *err1 = "Xaw SmeBSB Object: Right Bitmap of entry ";
|
||||
+ char *err2 = " is not one bit deep.";
|
||||
+ len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf == NULL) return;
|
||||
+ sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
|
||||
+ XtAppError(XtWidgetToApplicationContext(w), pbuf);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
--- libXaw3d-1.6.5/src/Text.c
|
||||
+++ libXaw3d-1.6.5/src/Text.c 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -78,6 +78,8 @@ SOFTWARE.
|
||||
#include <X11/Xfuncs.h>
|
||||
#include <ctype.h> /* for isprint() */
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
#ifndef MAX_LEN_CT
|
||||
#define MAX_LEN_CT 6 /* for sequence: ESC $ ( A \xx \xx */
|
||||
#endif
|
||||
@@ -535,7 +537,8 @@ Initialize(Widget request, Widget new, A
|
||||
{
|
||||
TextWidget ctx = (TextWidget) new;
|
||||
char error_buf[BUFSIZ];
|
||||
- int s;
|
||||
+ char *perr;
|
||||
+ int s, len;
|
||||
|
||||
ctx->text.threeD = XtVaCreateWidget("threeD", threeDWidgetClass, new,
|
||||
XtNx, 0, XtNy, 0,
|
||||
@@ -584,10 +587,17 @@ Initialize(Widget request, Widget new, A
|
||||
if (ctx->text.scroll_vert != XawtextScrollNever) {
|
||||
if ( (ctx->text.resize == XawtextResizeHeight) ||
|
||||
(ctx->text.resize == XawtextResizeBoth) ) {
|
||||
- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
|
||||
- "Vertical scrolling not allowed with height resize.\n",
|
||||
- "Vertical scrolling has been DEACTIVATED.");
|
||||
- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
|
||||
+ char *err1 = "Xaw Text Widget ";
|
||||
+ char *err2 = ":\nVertical scrolling not allowed with height resize.\n";
|
||||
+ char *err3 = "Vertical scrolling has been DEACTIVATED.";
|
||||
+ len = strlen(err1) + strlen(err2) + strlen(err3) +
|
||||
+ strlen(ctx->core.name) + 1;
|
||||
+ perr = XtStackAlloc(len, error_buf);
|
||||
+ if (perr != NULL) {
|
||||
+ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
|
||||
+ XtAppWarning(XtWidgetToApplicationContext(new), perr);
|
||||
+ XtStackFree(perr, error_buf);
|
||||
+ }
|
||||
ctx->text.scroll_vert = XawtextScrollNever;
|
||||
}
|
||||
else if (ctx->text.scroll_vert == XawtextScrollAlways)
|
||||
@@ -596,18 +606,32 @@ Initialize(Widget request, Widget new, A
|
||||
|
||||
if (ctx->text.scroll_horiz != XawtextScrollNever) {
|
||||
if (ctx->text.wrap != XawtextWrapNever) {
|
||||
- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
|
||||
- "Horizontal scrolling not allowed with wrapping active.\n",
|
||||
- "Horizontal scrolling has been DEACTIVATED.");
|
||||
- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
|
||||
+ char *err1 = "Xaw Text Widget ";
|
||||
+ char *err2 = ":\nHorizontal scrolling not allowed with wrapping active.";
|
||||
+ char *err3 = "\nHorizontal scrolling has been DEACTIVATED.";
|
||||
+ len = strlen(err1) + strlen(err2) + strlen(err3) +
|
||||
+ strlen(ctx->core.name) + 1;
|
||||
+ perr = XtStackAlloc(len, error_buf);
|
||||
+ if (perr != NULL) {
|
||||
+ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
|
||||
+ XtAppWarning(XtWidgetToApplicationContext(new), perr);
|
||||
+ XtStackFree(perr, error_buf);
|
||||
+ }
|
||||
ctx->text.scroll_horiz = XawtextScrollNever;
|
||||
}
|
||||
else if ( (ctx->text.resize == XawtextResizeWidth) ||
|
||||
(ctx->text.resize == XawtextResizeBoth) ) {
|
||||
- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
|
||||
- "Horizontal scrolling not allowed with width resize.\n",
|
||||
- "Horizontal scrolling has been DEACTIVATED.");
|
||||
- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
|
||||
+ char *err1 = "Xaw Text Widget ";
|
||||
+ char *err2 = ":\nHorizontal scrolling not allowed with width resize.\n";
|
||||
+ char *err3 = "Horizontal scrolling has been DEACTIVATED.";
|
||||
+ len = strlen(err1) + strlen(err2) + strlen(err3) +
|
||||
+ strlen(ctx->core.name) + 1;
|
||||
+ perr = XtStackAlloc(len, error_buf);
|
||||
+ if (perr != NULL) {
|
||||
+ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
|
||||
+ XtAppWarning(XtWidgetToApplicationContext(new), perr);
|
||||
+ XtStackFree(perr, error_buf);
|
||||
+ }
|
||||
ctx->text.scroll_horiz = XawtextScrollNever;
|
||||
}
|
||||
else if (ctx->text.scroll_horiz == XawtextScrollAlways)
|
||||
--- libXaw3d-1.6.5/src/TextPop.c
|
||||
+++ libXaw3d-1.6.5/src/TextPop.c 2023-08-16 12:30:21.840038444 +0000
|
||||
@@ -68,6 +68,8 @@ in this Software without prior written a
|
||||
#include <X11/Xos.h> /* for O_RDONLY */
|
||||
#include <errno.h>
|
||||
|
||||
+#include "XawAlloc.h"
|
||||
+
|
||||
#ifdef O_CLOEXEC
|
||||
#define FOPEN_CLOEXEC "e"
|
||||
#else
|
||||
@@ -791,6 +793,8 @@ static Boolean
|
||||
DoSearch(struct SearchAndReplace * search)
|
||||
{
|
||||
char msg[BUFSIZ];
|
||||
+ char *pmsg;
|
||||
+ int len;
|
||||
Widget tw = XtParent(search->search_popup);
|
||||
XawTextPosition pos;
|
||||
XawTextScanDirection dir;
|
||||
@@ -817,9 +821,20 @@ DoSearch(struct SearchAndReplace * searc
|
||||
/* The Raw string in find.ptr may be WC I can't use here, so I re - call
|
||||
GetString to get a tame version. */
|
||||
|
||||
- if (pos == XawTextSearchError)
|
||||
- (void) sprintf( msg, "Could not find string ``%s''.", GetString( search->search_text ) );
|
||||
- else {
|
||||
+ if (pos == XawTextSearchError) {
|
||||
+ char *msg1 = "Could not find string ``";
|
||||
+ char *msg2 = "''.";
|
||||
+ len = strlen(msg1) + strlen(msg2) +
|
||||
+ strlen(GetString( search->search_text )) + 1;
|
||||
+ pmsg = XtStackAlloc(len, msg);
|
||||
+ if (pmsg != NULL) {
|
||||
+ (void) sprintf( pmsg, "%s%s%s", msg1, GetString( search->search_text ),
|
||||
+ msg2);
|
||||
+ } else {
|
||||
+ pmsg = msg;
|
||||
+ (void) sprintf( pmsg, "Could not find string");
|
||||
+ }
|
||||
+ } else {
|
||||
if (dir == XawsdRight)
|
||||
XawTextSetInsertionPoint( tw, pos + text.length);
|
||||
else
|
||||
@@ -831,7 +846,8 @@ DoSearch(struct SearchAndReplace * searc
|
||||
}
|
||||
|
||||
XawTextUnsetSelection(tw);
|
||||
- SetSearchLabels(search, msg, "", TRUE);
|
||||
+ SetSearchLabels(search, pmsg, "", TRUE);
|
||||
+ XtStackFree(pmsg, msg);
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
@@ -952,13 +968,26 @@ Replace(struct SearchAndReplace *search,
|
||||
if (new_pos == XawTextSearchError) {
|
||||
if (count == 0) {
|
||||
char msg[BUFSIZ];
|
||||
+ char *pmsg;
|
||||
+ int len;
|
||||
+ char *msg1 = "*** Error: Could not find string ``";
|
||||
+ char *msg2 = "''. ***";
|
||||
|
||||
/* The Raw string in find.ptr may be WC I can't use here,
|
||||
so I call GetString to get a tame version.*/
|
||||
|
||||
- (void) sprintf( msg, "%s %s %s", "*** Error: Could not find string ``",
|
||||
- GetString( search->search_text ), "''. ***");
|
||||
- SetSearchLabels(search, msg, "", TRUE);
|
||||
+ len = strlen(msg1) + strlen(msg2) +
|
||||
+ strlen(GetString( search->search_text )) + 1;
|
||||
+ pmsg = XtStackAlloc(len, msg);
|
||||
+ if (pmsg != NULL) {
|
||||
+ (void) sprintf( pmsg, "%s%s%s", msg1,
|
||||
+ GetString( search->search_text ), msg2);
|
||||
+ } else {
|
||||
+ pmsg = msg;
|
||||
+ (void) sprintf(pmsg, "*** Error: Could not find string ***");
|
||||
+ }
|
||||
+ SetSearchLabels(search, pmsg, "", TRUE);
|
||||
+ XtStackFree(pmsg, msg);
|
||||
return(FALSE);
|
||||
}
|
||||
else
|
||||
@@ -981,9 +1010,22 @@ Replace(struct SearchAndReplace *search,
|
||||
|
||||
if (XawTextReplace(tw, pos, end_pos, &replace) != XawEditDone) {
|
||||
char msg[BUFSIZ];
|
||||
-
|
||||
- (void) sprintf( msg, "'%s' with '%s'. ***", find.ptr, replace.ptr);
|
||||
+ char *pmsg;
|
||||
+ int len;
|
||||
+ char *msg1 = "' with '";
|
||||
+ char *msg2 = "'. ***";
|
||||
+
|
||||
+ len = 1 + strlen(msg1) + strlen(msg2) + strlen(find.ptr) +
|
||||
+ strlen(replace.ptr) + 1;
|
||||
+ pmsg = XtStackAlloc(len, msg);
|
||||
+ if (pmsg != NULL) {
|
||||
+ (void) sprintf( pmsg, "`%s%s%s%s", find.ptr, msg1, replace.ptr, msg2);
|
||||
+ } else {
|
||||
+ pmsg = msg;
|
||||
+ (void) sprintf(pmsg, "string ***");
|
||||
+ }
|
||||
SetSearchLabels(search, "*** Error while replacing", msg, TRUE);
|
||||
+ XtStackFree(pmsg, msg);
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
@@ -1124,13 +1166,20 @@ SetResourceByName(Widget shell, char *na
|
||||
{
|
||||
Widget temp_widget;
|
||||
char buf[BUFSIZ];
|
||||
+ char *pbuf;
|
||||
+ int len;
|
||||
|
||||
- (void) sprintf(buf, "%s.%s", FORM_NAME, name);
|
||||
+ len = strlen(FORM_NAME) + strlen(name) + 2;
|
||||
+ pbuf = XtStackAlloc(len, buf);
|
||||
+ if (pbuf == NULL) return FALSE;
|
||||
+ (void) sprintf(pbuf, "%s.%s", FORM_NAME, name);
|
||||
|
||||
- if ( (temp_widget = XtNameToWidget(shell, buf)) != NULL) {
|
||||
+ if ( (temp_widget = XtNameToWidget(shell, pbuf)) != NULL) {
|
||||
SetResource(temp_widget, res_name, value);
|
||||
+ XtStackFree(pbuf, buf);
|
||||
return(TRUE);
|
||||
}
|
||||
+ XtStackFree(pbuf, buf);
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
--- libXaw3d-1.6.5/src/XawAlloc.h
|
||||
+++ libXaw3d-1.6.5/src/XawAlloc.h 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -0,0 +1,10 @@
|
||||
+/* $XFree86: xc/lib/Xaw/XawAlloc.h,v 1.1.2.1 1998/05/16 09:05:23 dawes Exp $ */
|
||||
+
|
||||
+#define XtStackAlloc(size, stack_cache_array) \
|
||||
+ ((size) <= sizeof(stack_cache_array) \
|
||||
+ ? (XtPointer)(stack_cache_array) \
|
||||
+ : XtMalloc((unsigned)(size)))
|
||||
+
|
||||
+#define XtStackFree(pointer, stack_cache_array) \
|
||||
+ if ((pointer) != ((XtPointer)(stack_cache_array))) XtFree(pointer); else
|
||||
+
|
||||
--- libXaw3d-1.6.5/src/XawI18n.h
|
||||
+++ libXaw3d-1.6.5/src/XawI18n.h 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -28,12 +28,14 @@ in this Software without prior written a
|
||||
#ifdef HAVE_WCTYPE_H
|
||||
#include <wctype.h>
|
||||
#ifdef HAVE_WIDEC_H
|
||||
+#ifndef NO_WIDEC_H
|
||||
#include <widec.h>
|
||||
#define wcslen(c) wslen(c)
|
||||
#define wcscpy(d,s) wscpy(d,s)
|
||||
#define wcsncpy(d,s,l) wsncpy(d,s,l)
|
||||
#endif
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifdef HAVE_WCHAR_H
|
||||
#include <wchar.h>
|
||||
--- libXaw3d-1.6.5/src/XawIm.c
|
||||
+++ libXaw3d-1.6.5/src/XawIm.c 2023-08-16 12:29:23.553080205 +0000
|
||||
@@ -1524,10 +1524,10 @@ _XawImWcLookupString(
|
||||
|
||||
if ((vw = SearchVendorShell(inwidg)) && (ve = GetExtPart(vw)) &&
|
||||
ve->im.xim && (p = GetIcTableShared(inwidg, ve)) && p->xic) {
|
||||
- return(XwcLookupString(p->xic, event, buffer_return, bytes_buffer,
|
||||
+ return(XwcLookupString(p->xic, event, buffer_return, bytes_buffer/sizeof(wchar_t),
|
||||
keysym_return, status_return));
|
||||
}
|
||||
- ret = XLookupString( event, tmp_buf, 64, keysym_return,
|
||||
+ ret = XLookupString( event, tmp_buf, sizeof(tmp_buf), keysym_return,
|
||||
(XComposeStatus*) status_return );
|
||||
for ( i = 0, tmp_p = tmp_buf, buf_p = buffer_return; i < ret; i++ ) {
|
||||
*buf_p++ = _Xaw_atowc(*tmp_p++);
|
970
xaw3d-thumb.patch
Normal file
970
xaw3d-thumb.patch
Normal file
@ -0,0 +1,970 @@
|
||||
---
|
||||
include/X11/Xaw3d/Scrollbar.h | 6
|
||||
include/X11/Xaw3d/ScrollbarP.h | 3
|
||||
include/X11/Xaw3d/SmeThreeD.h | 3
|
||||
include/X11/Xaw3d/SmeThreeDP.h | 1
|
||||
include/X11/Xaw3d/ThreeD.h | 3
|
||||
include/X11/Xaw3d/ThreeDP.h | 1
|
||||
src/Layout.c | 2
|
||||
src/Paned.c | 6
|
||||
src/Scrollbar.c | 533 ++++++++++++++++++++++++++++++-----------
|
||||
src/SmeThreeD.c | 19 +
|
||||
src/ThreeD.c | 6
|
||||
11 files changed, 436 insertions(+), 147 deletions(-)
|
||||
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/Scrollbar.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/Scrollbar.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/Scrollbar.h
|
||||
@@ -92,6 +92,7 @@ SOFTWARE.
|
||||
scrollRCursor Cursor Cursor XC_sb_right_arrow
|
||||
scrollUCursor Cursor Cursor XC_sb_up_arrow
|
||||
scrollVCursor Cursor Cursor XC_sb_v_double_arrow
|
||||
+ scrollbarBackground ScrollbarBackground Pixel XtDefaultForeground
|
||||
sensitive Sensitive Boolean True
|
||||
shown Shown Float 0.0
|
||||
thickness Thickness Dimension 14
|
||||
@@ -99,6 +100,7 @@ SOFTWARE.
|
||||
thumbProc Callback XtCallbackList NULL
|
||||
topOfThumb TopOfThumb Float 0.0
|
||||
pickTop PickTop Boolean False
|
||||
+ pushThumb PushThumb Boolean True
|
||||
translations Translations TranslationTable see source or doc
|
||||
width Width Dimension thickness or length
|
||||
x Position Position 0
|
||||
@@ -113,11 +115,15 @@ SOFTWARE.
|
||||
#define XtCMinimumThumb "MinimumThumb"
|
||||
#define XtCShown "Shown"
|
||||
#define XtCTopOfThumb "TopOfThumb"
|
||||
+#define XtCScrollbarBackground "ScrollbarBackground"
|
||||
#define XtCPickTop "PickTop"
|
||||
+#define XtCPushThumb "PushThumb"
|
||||
|
||||
#define XtNminimumThumb "minimumThumb"
|
||||
#define XtNtopOfThumb "topOfThumb"
|
||||
+#define XtNscrollbarBackground "scrollbarBackground"
|
||||
#define XtNpickTop "pickTop"
|
||||
+#define XtNpushThumb "pushThumb"
|
||||
|
||||
typedef struct _ScrollbarRec *ScrollbarWidget;
|
||||
typedef struct _ScrollbarClassRec *ScrollbarWidgetClass;
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/ScrollbarP.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/ScrollbarP.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/ScrollbarP.h
|
||||
@@ -66,6 +66,7 @@ typedef struct {
|
||||
XtCallbackList thumbProc; /* jump (to position) scroll */
|
||||
XtCallbackList jumpProc; /* same as thumbProc but pass data by ref */
|
||||
Pixmap thumb; /* thumb color */
|
||||
+ Pixel background; /* background color */
|
||||
#ifndef XAW_ARROW_SCROLLBARS
|
||||
Cursor upCursor; /* scroll up cursor */
|
||||
Cursor downCursor; /* scroll down cursor */
|
||||
@@ -91,9 +92,11 @@ typedef struct {
|
||||
char direction; /* a scroll has started; which direction */
|
||||
#endif
|
||||
GC gc; /* a (shared) gc */
|
||||
+ GC bgc; /* a (shared) gc for background */
|
||||
Position topLoc; /* Pixel that corresponds to top */
|
||||
Dimension shownLength; /* Num pixels corresponding to shown */
|
||||
Boolean pick_top; /* pick thumb at top or anywhere*/
|
||||
+ Boolean push_thumb; /* push thumb in or not */
|
||||
|
||||
} ScrollbarPart;
|
||||
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/SmeThreeD.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/SmeThreeD.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/SmeThreeD.h
|
||||
@@ -46,6 +46,7 @@ SOFTWARE.
|
||||
bottomShadowContrast BottomShadowContrast Int 40
|
||||
userData UserData XtPointer NULL
|
||||
beNiceToColormap BeNiceToColormap Boolean False
|
||||
+ invertBorder InvertBorder Boolean False
|
||||
|
||||
*/
|
||||
|
||||
@@ -63,6 +64,8 @@ SOFTWARE.
|
||||
#define XtCBeNiceToColormap "BeNiceToColormap"
|
||||
#define XtNbeNiceToColourmap "beNiceToColormap"
|
||||
#define XtCBeNiceToColourmap "BeNiceToColormap"
|
||||
+#define XtNinvertBorder "invertBorder"
|
||||
+#define XtCInvertBorder "InvertBorder"
|
||||
#define XtNuserData "userData"
|
||||
#define XtCUserData "UserData"
|
||||
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/SmeThreeDP.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/SmeThreeDP.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/SmeThreeDP.h
|
||||
@@ -43,6 +43,7 @@ typedef struct {
|
||||
XtPointer user_data;
|
||||
Boolean be_nice_to_cmap;
|
||||
Boolean shadowed;
|
||||
+ Boolean invert_border;
|
||||
} SmeThreeDPart;
|
||||
|
||||
/* Full instance record declaration */
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/ThreeD.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/ThreeD.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/ThreeD.h
|
||||
@@ -45,6 +45,7 @@ SOFTWARE.
|
||||
bottomShadowContrast BottomShadowContrast Int 40
|
||||
userData UserData XtPointer NULL
|
||||
beNiceToColormap BeNiceToColormap Boolean False
|
||||
+ invertBorder InvertBorder Boolean False
|
||||
relief Relief XtRelief XtReliefRaised
|
||||
|
||||
*/
|
||||
@@ -63,6 +64,8 @@ SOFTWARE.
|
||||
#define XtCBeNiceToColormap "BeNiceToColormap"
|
||||
#define XtNbeNiceToColourmap "beNiceToColormap"
|
||||
#define XtCBeNiceToColourmap "BeNiceToColormap"
|
||||
+#define XtNinvertBorder "invertBorder"
|
||||
+#define XtCInvertBorder "InvertBorder"
|
||||
#define XtNuserData "userData"
|
||||
#define XtCUserData "UserData"
|
||||
#define XtNrelief "relief"
|
||||
Index: libXaw3d-1.6.2/include/X11/Xaw3d/ThreeDP.h
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/include/X11/Xaw3d/ThreeDP.h
|
||||
+++ libXaw3d-1.6.2/include/X11/Xaw3d/ThreeDP.h
|
||||
@@ -43,6 +43,7 @@ typedef struct {
|
||||
GC bot_shadow_GC;
|
||||
XtPointer user_data;
|
||||
Boolean be_nice_to_cmap;
|
||||
+ Boolean invert_border;
|
||||
XtRelief relief;
|
||||
} ThreeDPart;
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Layout.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Layout.c
|
||||
+++ libXaw3d-1.6.2/src/Layout.c
|
||||
@@ -509,7 +509,7 @@ LookupVariable (BoxPtr child, XrmQuark q
|
||||
static double
|
||||
Evaluate (LayoutWidget l, BoxPtr box, ExprPtr expr, double natural)
|
||||
{
|
||||
- double left, right, down;
|
||||
+ double left = 0.0, right = 0.0, down = 0.0;
|
||||
Widget widget;
|
||||
SubInfoPtr info;
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Paned.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Paned.c
|
||||
+++ libXaw3d-1.6.2/src/Paned.c
|
||||
@@ -1114,13 +1114,14 @@ ManageAndUnmanageGrips(PanedWidget pw)
|
||||
managedP = managed_grips = (WidgetList) XtMalloc(alloc_size);
|
||||
unmanagedP = unmanaged_grips = (WidgetList) XtMalloc(alloc_size);
|
||||
|
||||
- ForAllChildren(pw, childP)
|
||||
+ ForAllChildren(pw, childP) {
|
||||
if (IsPane(*childP) && HasGrip(*childP)) {
|
||||
if ( XtIsManaged(*childP) )
|
||||
*managedP++ = PaneInfo(*childP)->grip;
|
||||
else
|
||||
*unmanagedP++ = PaneInfo(*childP)->grip;
|
||||
}
|
||||
+ }
|
||||
|
||||
if (managedP != managed_grips) {
|
||||
*unmanagedP++ = *--managedP; /* Last grip is never managed */
|
||||
@@ -1615,7 +1616,7 @@ ChangeManaged(Widget w)
|
||||
ResortChildren(pw);
|
||||
|
||||
pw->paned.num_panes = 0;
|
||||
- ForAllChildren(pw, childP)
|
||||
+ ForAllChildren(pw, childP) {
|
||||
if ( IsPane(*childP) ) {
|
||||
if ( XtIsManaged(*childP) ) {
|
||||
Pane pane = PaneInfo(*childP);
|
||||
@@ -1627,6 +1628,7 @@ ChangeManaged(Widget w)
|
||||
else
|
||||
break; /* This list is already sorted. */
|
||||
}
|
||||
+ }
|
||||
|
||||
SetChildrenPrefSizes( (PanedWidget) w, size);
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Scrollbar.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Scrollbar.c
|
||||
+++ libXaw3d-1.6.2/src/Scrollbar.c
|
||||
@@ -134,14 +134,18 @@ static XtResource resources[] = {
|
||||
Offset(scrollbar.thumb), XtRImmediate, (XtPointer) XtUnspecifiedPixmap},
|
||||
{XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
|
||||
Offset(scrollbar.foreground), XtRString, XtDefaultForeground},
|
||||
+ {XtNscrollbarBackground, XtCScrollbarBackground, XtRPixel, sizeof(Pixel),
|
||||
+ Offset(scrollbar.background), XtRString, XtDefaultForeground},
|
||||
{XtNshown, XtCShown, XtRFloat, sizeof(float),
|
||||
Offset(scrollbar.shown), XtRFloat, (XtPointer)&floatZero},
|
||||
{XtNtopOfThumb, XtCTopOfThumb, XtRFloat, sizeof(float),
|
||||
Offset(scrollbar.top), XtRFloat, (XtPointer)&floatZero},
|
||||
{XtNpickTop, XtCPickTop, XtRBoolean, sizeof(Boolean),
|
||||
- Offset(scrollbar.pick_top), XtRBoolean, (XtPointer) False},
|
||||
+ Offset(scrollbar.pick_top), XtRImmediate, (XtPointer) False},
|
||||
{XtNminimumThumb, XtCMinimumThumb, XtRDimension, sizeof(Dimension),
|
||||
- Offset(scrollbar.min_thumb), XtRImmediate, (XtPointer) 7}
|
||||
+ Offset(scrollbar.min_thumb), XtRImmediate, (XtPointer) 7},
|
||||
+ {XtNpushThumb, XtCPushThumb, XtRBoolean, sizeof(Boolean),
|
||||
+ Offset(scrollbar.push_thumb), XtRImmediate, (XtPointer) True}
|
||||
};
|
||||
#undef Offset
|
||||
|
||||
@@ -215,8 +219,7 @@ ScrollbarClassRec scrollbarClassRec = {
|
||||
/* change_sensitive */ XtInheritChangeSensitive
|
||||
},
|
||||
{ /* threeD fields */
|
||||
- /* shadowdraw */ XtInheritXaw3dShadowDraw /*,*/
|
||||
- /* shadowboxdraw */ /*XtInheritXaw3dShadowBoxDraw*/
|
||||
+ /* shadowdraw */ XtInheritXaw3dShadowDraw
|
||||
},
|
||||
{ /* scrollbar fields */
|
||||
/* ignore */ 0
|
||||
@@ -228,7 +231,7 @@ WidgetClass scrollbarWidgetClass = (Widg
|
||||
|
||||
#define NoButton -1
|
||||
#define PICKLENGTH(widget, x, y) \
|
||||
- ((widget->scrollbar.orientation == XtorientHorizontal) ? x : y)
|
||||
+ ((widget->scrollbar.orientation == XtorientHorizontal) ? (x) : (y))
|
||||
#define MIN(x,y) ((x) < (y) ? (x) : (y))
|
||||
#define MAX(x,y) ((x) > (y) ? (x) : (y))
|
||||
|
||||
@@ -248,6 +251,23 @@ ClassInitialize(void)
|
||||
#endif
|
||||
|
||||
/*
|
||||
+ Used to swap X and Y coordinates when the scrollbar is horizontal.
|
||||
+ */
|
||||
+static void swap_short(short *a, short *b)
|
||||
+{
|
||||
+ short tmp = *a;
|
||||
+ *a = *b;
|
||||
+ *b = tmp;
|
||||
+}
|
||||
+static void swap(Dimension *a, Dimension *b)
|
||||
+{
|
||||
+ Dimension tmp = *a;
|
||||
+ *a = *b;
|
||||
+ *b = tmp;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*
|
||||
The original Xaw Scrollbar's FillArea *really* relied on the fact that the
|
||||
server was going to clip at the window boundaries; so the logic was really
|
||||
rather sloppy. To avoid drawing over the shadows and the arrows requires
|
||||
@@ -297,161 +317,371 @@ FillArea (ScrollbarWidget sbw, Position
|
||||
erasing is done cleverly so that no flickering will occur. */
|
||||
|
||||
static void
|
||||
-PaintThumb (ScrollbarWidget sbw, XEvent *event)
|
||||
+PaintThumb (ScrollbarWidget sbw, int pressed, int shadow)
|
||||
{
|
||||
- Dimension s = sbw->threeD.shadow_width;
|
||||
- Position oldtop = sbw->scrollbar.topLoc;
|
||||
- Position oldbot = oldtop + sbw->scrollbar.shownLength;
|
||||
- Dimension margin = MARGIN (sbw);
|
||||
- Dimension tzl = sbw->scrollbar.length - margin - margin;
|
||||
- Position newtop, newbot;
|
||||
- Position floor = sbw->scrollbar.length - margin;
|
||||
+ Dimension margin, tzl;
|
||||
+ Position floor;
|
||||
+ Position oldtop = sbw->scrollbar.topLoc;
|
||||
+ Position oldbot = oldtop + sbw->scrollbar.shownLength;
|
||||
+ Position newtop, newbot;
|
||||
+ Dimension x, y; /* upper-left corner of rectangle */
|
||||
+ Dimension w, h; /* size of rectangle */
|
||||
+ Dimension sw = sbw->threeD.shadow_width;
|
||||
+ Dimension th = sbw->scrollbar.thickness;
|
||||
+ XPoint ipt[4],opt[4]; /* inner and outer points of thumb */
|
||||
+ XPoint pt[4]; /* points used for drawing */
|
||||
+ Display *dpy = XtDisplay (sbw);
|
||||
+ Window win = XtWindow (sbw);
|
||||
+ double thumb_len;
|
||||
+
|
||||
+ margin = MARGIN (sbw);
|
||||
+ tzl = sbw->scrollbar.length - 2*margin;
|
||||
+ floor = sbw->scrollbar.length - margin;
|
||||
|
||||
newtop = margin + (int)(tzl * sbw->scrollbar.top);
|
||||
- newbot = newtop + (int)(tzl * sbw->scrollbar.shown);
|
||||
- if (sbw->scrollbar.shown < 1.) newbot++;
|
||||
- if (newbot < newtop + (int)sbw->scrollbar.min_thumb +
|
||||
- 2 * (int)sbw->threeD.shadow_width)
|
||||
- newbot = newtop + sbw->scrollbar.min_thumb +
|
||||
- 2 * sbw->threeD.shadow_width;
|
||||
- if ( newbot >= floor ) {
|
||||
- newtop = floor-(newbot-newtop)+1;
|
||||
+ thumb_len = tzl * sbw->scrollbar.shown;
|
||||
+ newbot = newtop + (int)thumb_len;
|
||||
+ if ((thumb_len - (int)thumb_len) > 0.5) ++newbot;
|
||||
+
|
||||
+ if (newbot < newtop + (int)sbw->scrollbar.min_thumb + 2 * (int)sw)
|
||||
+ newbot = newtop + sbw->scrollbar.min_thumb + 2 * sw;
|
||||
+
|
||||
+ if (newbot >= floor) {
|
||||
+ newtop = floor - (newbot-newtop) + 1;
|
||||
newbot = floor;
|
||||
}
|
||||
|
||||
sbw->scrollbar.topLoc = newtop;
|
||||
sbw->scrollbar.shownLength = newbot - newtop;
|
||||
+
|
||||
if (XtIsRealized ((Widget) sbw)) {
|
||||
- /* 3D thumb wanted ?
|
||||
- */
|
||||
- if (s)
|
||||
- {
|
||||
- if (newtop < oldtop) FillArea(sbw, oldtop, oldtop + s, 0);
|
||||
- if (newtop > oldtop) FillArea(sbw, oldtop, MIN(newtop, oldbot), 0);
|
||||
- if (newbot < oldbot) FillArea(sbw, MAX(newbot, oldtop), oldbot, 0);
|
||||
- if (newbot > oldbot) FillArea(sbw, oldbot - s, oldbot, 0);
|
||||
-
|
||||
- if (sbw->scrollbar.orientation == XtorientHorizontal)
|
||||
- {
|
||||
- _ShadowSurroundedBox((Widget)sbw, (ThreeDWidget)sbw,
|
||||
- newtop, s, newbot, sbw->core.height - s,
|
||||
- sbw->threeD.relief, TRUE);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- _ShadowSurroundedBox((Widget)sbw, (ThreeDWidget)sbw,
|
||||
- s, newtop, sbw->core.width - s, newbot,
|
||||
- sbw->threeD.relief, TRUE);
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /*
|
||||
- Note to Mitch: FillArea is (now) correctly implemented to
|
||||
- not draw over shadows or the arrows. Therefore setting clipmasks
|
||||
- doesn't seem to be necessary. Correct me if I'm wrong!
|
||||
- */
|
||||
- if (newtop < oldtop) FillArea(sbw, newtop, MIN(newbot, oldtop), 1);
|
||||
- if (newtop > oldtop) FillArea(sbw, oldtop, MIN(newtop, oldbot), 0);
|
||||
- if (newbot < oldbot) FillArea(sbw, MAX(newbot, oldtop), oldbot, 0);
|
||||
- if (newbot > oldbot) FillArea(sbw, MAX(newtop, oldbot), newbot, 1);
|
||||
- }
|
||||
+ /* 3D? */
|
||||
+ if (sw) {
|
||||
+ GC top, bot;
|
||||
+ GC back = sbw->scrollbar.bgc;
|
||||
+ GC fore = sbw->scrollbar.gc;
|
||||
+
|
||||
+ if ((pressed && sbw->scrollbar.push_thumb) ^ sbw->threeD.invert_border) {
|
||||
+ top = sbw->threeD.bot_shadow_GC;
|
||||
+ bot = sbw->threeD.top_shadow_GC;
|
||||
+ } else {
|
||||
+ top = sbw->threeD.top_shadow_GC;
|
||||
+ bot = sbw->threeD.bot_shadow_GC;
|
||||
+ }
|
||||
+
|
||||
+ /* the space above the thumb */
|
||||
+ x = sw;
|
||||
+ y = margin;
|
||||
+ w = th - sw * 2;
|
||||
+ h = newtop - y;
|
||||
+ if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
+ swap(&x, &y);
|
||||
+ swap(&w, &h);
|
||||
+ }
|
||||
+ XFillRectangle(dpy, win, back, x, y, (unsigned int)w, (unsigned int)h);
|
||||
+
|
||||
+ /* the space below the thumb */
|
||||
+ x = sw;
|
||||
+ y = newbot;
|
||||
+ w = th - sw * 2;
|
||||
+ h = tzl + margin - newbot;
|
||||
+ if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
+ swap(&x, &y);
|
||||
+ swap(&w, &h);
|
||||
+ }
|
||||
+ XFillRectangle(dpy, win, back, x, y, (unsigned int)w, (unsigned int)h);
|
||||
+
|
||||
+ /* Return here if only the shadows should be repainted */
|
||||
+ if (shadow) return;
|
||||
+
|
||||
+ /* the thumb itself */
|
||||
+ x = sw * 2;
|
||||
+ y = newtop + sw;
|
||||
+ w = th - sw * 4;
|
||||
+ h = newbot - newtop - 2 * sw;
|
||||
+ if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
+ swap(&x, &y);
|
||||
+ swap(&w, &h);
|
||||
+ }
|
||||
+ /* we can't use "w > 0" and "h > 0" because they are
|
||||
+ usually unsigned quantities */
|
||||
+ if (th - sw * 4 > 0 && newbot - newtop - 2 * sw > 0)
|
||||
+ XFillRectangle(dpy, win, fore, x, y, (unsigned int)w, (unsigned int)h);
|
||||
+
|
||||
+ /* the shades around the thumb
|
||||
+
|
||||
+ o0 +--------------+ o3
|
||||
+ |\ i0 i3 /|
|
||||
+ | +----------+ |
|
||||
+ | | | |
|
||||
+ | | | |
|
||||
+ | | | |
|
||||
+ | +----------+ |
|
||||
+ |/ i1 i2 \|
|
||||
+ o1 +--------------+ o2
|
||||
+
|
||||
+ */
|
||||
+ opt[0].x = opt[1].x = sw;
|
||||
+ opt[0].y = opt[3].y = newtop;
|
||||
+ opt[2].x = opt[3].x = th - sw;
|
||||
+ opt[2].y = opt[1].y = newbot;
|
||||
+
|
||||
+ ipt[0].x = ipt[1].x = opt[0].x + sw;
|
||||
+ ipt[0].y = ipt[3].y = opt[0].y + sw;
|
||||
+ ipt[2].x = ipt[3].x = opt[2].x - sw;
|
||||
+ ipt[2].y = ipt[1].y = opt[2].y - sw;
|
||||
+
|
||||
+ /* make sure shades don't overlap */
|
||||
+ if (ipt[0].x > ipt[3].x)
|
||||
+ ipt[3].x = ipt[2].x = ipt[1].x = ipt[0].x = (ipt[0].x + ipt[3].x) / 2;
|
||||
+ if (ipt[0].y > ipt[1].y)
|
||||
+ ipt[3].y = ipt[2].y = ipt[1].y = ipt[0].y = (ipt[0].y + ipt[1].y) / 2;
|
||||
+ if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
+ int n;
|
||||
+ for (n = 0; n < 4; n++) {
|
||||
+ swap_short(&ipt[n].x, &ipt[n].y);
|
||||
+ swap_short(&opt[n].x, &opt[n].y);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* left */
|
||||
+ pt[0] = opt[0];
|
||||
+ pt[1] = opt[1];
|
||||
+ pt[2] = ipt[1];
|
||||
+ pt[3] = ipt[0];
|
||||
+ XFillPolygon (dpy, win, top, pt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* top */
|
||||
+ pt[0] = opt[0];
|
||||
+ pt[1] = opt[3];
|
||||
+ pt[2] = ipt[3];
|
||||
+ pt[3] = ipt[0];
|
||||
+ XFillPolygon (dpy, win, top, pt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* bottom */
|
||||
+ pt[0] = opt[1];
|
||||
+ pt[1] = opt[2];
|
||||
+ pt[2] = ipt[2];
|
||||
+ pt[3] = ipt[1];
|
||||
+ XFillPolygon (dpy, win, bot, pt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* right */
|
||||
+ pt[0] = opt[3];
|
||||
+ pt[1] = opt[2];
|
||||
+ pt[2] = ipt[2];
|
||||
+ pt[3] = ipt[3];
|
||||
+ XFillPolygon (dpy, win, bot, pt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+
|
||||
+ } else {
|
||||
+ /* Return here if only the shadows should be repainted */
|
||||
+ if (shadow) return;
|
||||
+
|
||||
+ /*
|
||||
+ * Note to Mitch: FillArea is (now) correctly implemented to
|
||||
+ * not draw over shadows or the arrows. Therefore setting clipmasks
|
||||
+ * doesn't seem to be necessary. Correct me if I'm wrong!
|
||||
+ */
|
||||
+ if (newtop < oldtop) FillArea(sbw, newtop, MIN(newbot, oldtop), 1);
|
||||
+ if (newtop > oldtop) FillArea(sbw, oldtop, MIN(newtop, oldbot), 0);
|
||||
+ if (newbot < oldbot) FillArea(sbw, MAX(newbot, oldtop), oldbot, 0);
|
||||
+ if (newbot > oldbot) FillArea(sbw, MAX(newtop, oldbot), newbot, 1);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef XAW_ARROW_SCROLLBARS
|
||||
static void
|
||||
-PaintArrows (ScrollbarWidget sbw)
|
||||
-{
|
||||
- XPoint pt[20];
|
||||
- Dimension s = sbw->threeD.shadow_width;
|
||||
- Dimension t = sbw->scrollbar.thickness;
|
||||
- Dimension l = sbw->scrollbar.length;
|
||||
- Dimension tms = t - s, lms = l - s;
|
||||
- Dimension tm1 = t - 1;
|
||||
- Dimension lmt = l - t;
|
||||
- Dimension lp1 = lmt + 1;
|
||||
- Dimension sm1 = s - 1;
|
||||
- Dimension t2 = t / 2;
|
||||
- Dimension sa30 = (Dimension)(1.732 * s ); /* cotangent of 30 deg */
|
||||
- Display *dpy = XtDisplay (sbw);
|
||||
- Window win = XtWindow (sbw);
|
||||
- GC top = sbw->threeD.top_shadow_GC;
|
||||
- GC bot = sbw->threeD.bot_shadow_GC;
|
||||
-
|
||||
+PaintArrows (ScrollbarWidget sbw, int toppressed, int botpressed)
|
||||
+{
|
||||
+ XPoint ipt[6], opt[6]; /* inner and outer points */
|
||||
+ XPoint rpt[4]; /* the rectangle around arrows */
|
||||
+ XPoint tpt[6]; /* temporary for args to XFillPolygon */
|
||||
+ Dimension sw = sbw->threeD.shadow_width;
|
||||
+ Dimension th = sbw->scrollbar.thickness;
|
||||
+ Dimension len = sbw->scrollbar.length;
|
||||
+ Display *dpy = XtDisplay (sbw);
|
||||
+ Window win = XtWindow (sbw);
|
||||
+ GC top, bot;
|
||||
+ GC back = sbw->scrollbar.bgc;
|
||||
+ GC fore = sbw->scrollbar.gc;
|
||||
|
||||
if (XtIsRealized ((Widget) sbw)) {
|
||||
/* 3D arrows?
|
||||
*/
|
||||
- if (s) {
|
||||
- /* upper/right arrow */
|
||||
- pt[0].x = sm1; pt[0].y = tm1;
|
||||
- pt[1].x = t2; pt[1].y = sm1;
|
||||
- pt[2].x = t2; pt[2].y = s + sa30;
|
||||
- pt[3].x = sm1 + sa30; pt[3].y = tms - 1;
|
||||
-
|
||||
- pt[4].x = sm1; pt[4].y = tm1;
|
||||
- pt[5].x = tms; pt[5].y = tm1;
|
||||
- pt[6].x = t2; pt[6].y = sm1;
|
||||
- pt[7].x = t2; pt[7].y = s + sa30;
|
||||
- pt[8].x = tms - sa30; pt[8].y = tms - 1;
|
||||
- pt[9].x = sm1 + sa30; pt[9].y = tms - 1;
|
||||
-
|
||||
- /* lower/left arrow */
|
||||
- pt[10].x = tms; pt[10].y = lp1;
|
||||
- pt[11].x = s; pt[11].y = lp1;
|
||||
- pt[12].x = t2; pt[12].y = lms;
|
||||
- pt[13].x = t2; pt[13].y = lms - sa30;
|
||||
- pt[14].x = s + sa30; pt[14].y = lmt + s + 1;
|
||||
- pt[15].x = tms - sa30; pt[15].y = lmt + s + 1;
|
||||
-
|
||||
- pt[16].x = tms; pt[16].y = lp1;
|
||||
- pt[17].x = t2; pt[17].y = lms;
|
||||
- pt[18].x = t2; pt[18].y = lms - sa30;
|
||||
- pt[19].x = tms - sa30; pt[19].y = lmt + s + 1;
|
||||
+ if (sw) {
|
||||
+ /*
|
||||
+ The points are numbered like this:
|
||||
+
|
||||
+ r0 +---------+ r3
|
||||
+ | ^ o2 |
|
||||
+ | /|\ | a = i0
|
||||
+ | /c^ \ | b = i1
|
||||
+ | / / \ \ | c = i2
|
||||
+ |/a<--->b\|
|
||||
+ o0 +---------+ o1
|
||||
+ | |
|
||||
+ | |
|
||||
+ o3 +---------+ o4
|
||||
+ |\d<--->e/|
|
||||
+ | \ \ / / | d = i3
|
||||
+ | \fv / | e = i4
|
||||
+ | \|/ | f = i5
|
||||
+ | v o5 |
|
||||
+ r1 +---------+ r2
|
||||
+ */
|
||||
+
|
||||
+ rpt[0].x = rpt[1].x = opt[0].x = opt[3].x = sw;
|
||||
+ ipt[0].x = ipt[3].x = sw * 2.5;
|
||||
+ opt[2].x = opt[5].x = ipt[2].x = ipt[5].x = th / 2;
|
||||
+ ipt[1].x = ipt[4].x = th - (int)(sw * 2.5);
|
||||
+ rpt[2].x = rpt[3].x = opt[1].x = opt[4].x = th - sw;
|
||||
+
|
||||
+ rpt[0].y = rpt[3].y = opt[2].y = sw;
|
||||
+ ipt[2].y = sw * 3.2;
|
||||
+ ipt[0].y = ipt[1].y = th - sw;
|
||||
+ opt[0].y = opt[1].y = th;
|
||||
+ opt[3].y = opt[4].y = len - th;
|
||||
+ ipt[3].y = ipt[4].y = len - th + sw;
|
||||
+ ipt[5].y = len - (int)(sw * 3.2);
|
||||
+ rpt[1].y = rpt[2].y = opt[5].y = len - sw;
|
||||
+
|
||||
+ /* some ugly kludges to make them look right */
|
||||
+ opt[2].y--;
|
||||
+ opt[0].x--;
|
||||
+ ipt[2].y--;
|
||||
+ ipt[0].x--;
|
||||
+
|
||||
+ /* make sure shades don't overlap */
|
||||
+ if (ipt[0].x > ipt[1].x) {
|
||||
+ Dimension tmp = (ipt[0].x + ipt[1].x) / 2;
|
||||
+ ipt[4].x = ipt[3].x = ipt[1].x = ipt[0].x = tmp;
|
||||
+ }
|
||||
+ if (ipt[0].y < ipt[2].y) {
|
||||
+ ipt[2].y = ipt[1].y = ipt[0].y = (ipt[0].y + ipt[2].y) / 2;
|
||||
+ ipt[5].y = ipt[4].y = ipt[3].y = (ipt[3].y + ipt[5].y) / 2;
|
||||
+ }
|
||||
|
||||
/* horizontal arrows require that x and y coordinates be swapped */
|
||||
if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
int n;
|
||||
- int swap;
|
||||
- for (n = 0; n < 20; n++) {
|
||||
- swap = pt[n].x;
|
||||
- pt[n].x = pt[n].y;
|
||||
- pt[n].y = swap;
|
||||
+ for (n = 0; n < 6; n++) {
|
||||
+ swap(&ipt[n].x, &ipt[n].y);
|
||||
+ swap(&opt[n].x, &opt[n].y);
|
||||
}
|
||||
+ for (n = 0; n < 4; n++)
|
||||
+ swap(&rpt[n].x, &rpt[n].y);
|
||||
+ }
|
||||
+
|
||||
+ if (toppressed ^ sbw->threeD.invert_border) {
|
||||
+ top = sbw->threeD.bot_shadow_GC;
|
||||
+ bot = sbw->threeD.top_shadow_GC;
|
||||
+ } else {
|
||||
+ top = sbw->threeD.top_shadow_GC;
|
||||
+ bot = sbw->threeD.bot_shadow_GC;
|
||||
+ }
|
||||
+
|
||||
+ /* top-left background */
|
||||
+ tpt[0] = rpt[0];
|
||||
+ tpt[1] = opt[0];
|
||||
+ tpt[2] = opt[2];
|
||||
+ XFillPolygon (dpy, win, back, tpt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* top-right background */
|
||||
+ tpt[0] = rpt[3];
|
||||
+ tpt[1] = opt[2];
|
||||
+ tpt[2] = opt[1];
|
||||
+ XFillPolygon (dpy, win, back, tpt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the right shade */
|
||||
+ tpt[0] = opt[1];
|
||||
+ tpt[1] = opt[2];
|
||||
+ tpt[2] = ipt[2];
|
||||
+ tpt[3] = ipt[1];
|
||||
+ XFillPolygon (dpy, win, bot, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the left shade */
|
||||
+ tpt[0] = opt[2];
|
||||
+ tpt[1] = opt[0];
|
||||
+ tpt[2] = ipt[0];
|
||||
+ tpt[3] = ipt[2];
|
||||
+ XFillPolygon (dpy, win, top, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the bottom shade */
|
||||
+ tpt[0] = opt[0];
|
||||
+ tpt[1] = opt[1];
|
||||
+ tpt[2] = ipt[1];
|
||||
+ tpt[3] = ipt[0];
|
||||
+ XFillPolygon (dpy, win, bot, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the arrow itself */
|
||||
+ XFillPolygon (dpy, win, fore, ipt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ if (botpressed ^ sbw->threeD.invert_border) {
|
||||
+ top = sbw->threeD.bot_shadow_GC;
|
||||
+ bot = sbw->threeD.top_shadow_GC;
|
||||
+ } else {
|
||||
+ top = sbw->threeD.top_shadow_GC;
|
||||
+ bot = sbw->threeD.bot_shadow_GC;
|
||||
}
|
||||
- XFillPolygon (dpy, win, top, pt, 4, Complex, CoordModeOrigin);
|
||||
- XFillPolygon (dpy, win, bot, pt + 4, 6, Complex, CoordModeOrigin);
|
||||
- XFillPolygon (dpy, win, top, pt + 10, 6, Complex, CoordModeOrigin);
|
||||
- XFillPolygon (dpy, win, bot, pt + 16, 4, Complex, CoordModeOrigin);
|
||||
+
|
||||
+ /* bottom-left background */
|
||||
+ tpt[0] = rpt[1];
|
||||
+ tpt[1] = opt[5];
|
||||
+ tpt[2] = opt[3];
|
||||
+ XFillPolygon (dpy, win, back, tpt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* bottom-right background */
|
||||
+ tpt[0] = rpt[2];
|
||||
+ tpt[1] = opt[4];
|
||||
+ tpt[2] = opt[5];
|
||||
+ XFillPolygon (dpy, win, back, tpt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the left shade */
|
||||
+ tpt[0] = opt[3];
|
||||
+ tpt[1] = opt[5];
|
||||
+ tpt[2] = ipt[5];
|
||||
+ tpt[3] = ipt[3];
|
||||
+ XFillPolygon (dpy, win, top, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the right shade */
|
||||
+ tpt[0] = opt[5];
|
||||
+ tpt[1] = opt[4];
|
||||
+ tpt[2] = ipt[4];
|
||||
+ tpt[3] = ipt[5];
|
||||
+ XFillPolygon (dpy, win, bot, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the top shade */
|
||||
+ tpt[0] = opt[4];
|
||||
+ tpt[1] = opt[3];
|
||||
+ tpt[2] = ipt[3];
|
||||
+ tpt[3] = ipt[4];
|
||||
+ XFillPolygon (dpy, win, top, tpt, 4, Convex, CoordModeOrigin);
|
||||
+
|
||||
+ /* the arrow itself */
|
||||
+ XFillPolygon (dpy, win, fore, ipt+3, 3, Convex, CoordModeOrigin);
|
||||
|
||||
} else {
|
||||
- pt[0].x = 0; pt[0].y = tm1;
|
||||
- pt[1].x = t; pt[1].y = tm1;
|
||||
- pt[2].x = t2; pt[2].y = 0;
|
||||
-
|
||||
- pt[3].x = 0; pt[3].y = lp1;
|
||||
- pt[4].x = t; pt[4].y = lp1;
|
||||
- pt[5].x = t2; pt[5].y = l;
|
||||
+
|
||||
+ tpt[0] = opt[0];
|
||||
+ tpt[1] = opt[1];
|
||||
+ tpt[2] = opt[2];
|
||||
+ tpt[3] = opt[3];
|
||||
+ tpt[4] = opt[4];
|
||||
+ tpt[5] = opt[5];
|
||||
|
||||
/* horizontal arrows require that x and y coordinates be swapped */
|
||||
if (sbw->scrollbar.orientation == XtorientHorizontal) {
|
||||
int n;
|
||||
- int swap;
|
||||
- for (n = 0; n < 6; n++) {
|
||||
- swap = pt[n].x;
|
||||
- pt[n].x = pt[n].y;
|
||||
- pt[n].y = swap;
|
||||
- }
|
||||
+ for (n = 0; n < 6; n++)
|
||||
+ swap(&tpt[n].x, &tpt[n].y);
|
||||
}
|
||||
/* draw the up/left arrow */
|
||||
- XFillPolygon (dpy, win, sbw->scrollbar.gc,
|
||||
- pt, 3,
|
||||
- Convex, CoordModeOrigin);
|
||||
+ XFillPolygon (dpy, win, fore, tpt, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
/* draw the down/right arrow */
|
||||
- XFillPolygon (dpy, win, sbw->scrollbar.gc,
|
||||
- pt+3, 3,
|
||||
- Convex, CoordModeOrigin);
|
||||
+ XFillPolygon (dpy, win, fore, tpt+3, 3, Convex, CoordModeOrigin);
|
||||
+
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -471,6 +701,7 @@ Destroy (Widget w)
|
||||
XtRemoveTimeOut (sbw->scrollbar.timer_id);
|
||||
#endif
|
||||
XtReleaseGC (w, sbw->scrollbar.gc);
|
||||
+ XtReleaseGC (w, sbw->scrollbar.bgc);
|
||||
}
|
||||
|
||||
/* Function Name: CreateGC
|
||||
@@ -487,9 +718,22 @@ CreateGC (Widget w)
|
||||
XtGCMask mask;
|
||||
unsigned int depth = 1;
|
||||
|
||||
+ /* make GC for scrollbar background */
|
||||
+ if (sbw->threeD.be_nice_to_cmap ||
|
||||
+ DefaultDepthOfScreen (XtScreen(w)) == 1) {
|
||||
+ mask = GCTile | GCFillStyle;
|
||||
+ gcValues.tile = sbw->threeD.bot_shadow_pxmap;
|
||||
+ gcValues.fill_style = FillTiled;
|
||||
+ } else {
|
||||
+ mask = GCForeground;
|
||||
+ gcValues.foreground = sbw->scrollbar.background;
|
||||
+ }
|
||||
+ sbw->scrollbar.bgc = XtGetGC(w, mask, &gcValues);
|
||||
+
|
||||
+ /* make GC for scrollbar foreground */
|
||||
if (sbw->scrollbar.thumb == XtUnspecifiedPixmap) {
|
||||
sbw->scrollbar.thumb = XmuCreateStippledPixmap (XtScreen(w),
|
||||
- (Pixel) 1, (Pixel) 0, depth);
|
||||
+ (Pixel) 0, (Pixel) 0, depth);
|
||||
} else if (sbw->scrollbar.thumb != None) {
|
||||
Window root;
|
||||
int x, y;
|
||||
@@ -520,6 +764,9 @@ CreateGC (Widget w)
|
||||
/* the creation should be non-caching, because */
|
||||
/* we now set and clear clip masks on the gc returned */
|
||||
sbw->scrollbar.gc = XtGetGC (w, mask, &gcValues);
|
||||
+ gcValues.foreground = sbw->scrollbar.foreground;
|
||||
+ gcValues.background = sbw->core.background_pixel;
|
||||
+ mask = GCForeground | GCBackground;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -610,8 +857,10 @@ SetValues(Widget current, Widget request
|
||||
if (XtIsRealized (desired)) {
|
||||
if (sbw->scrollbar.foreground != dsbw->scrollbar.foreground ||
|
||||
sbw->core.background_pixel != dsbw->core.background_pixel ||
|
||||
- sbw->scrollbar.thumb != dsbw->scrollbar.thumb) {
|
||||
+ sbw->scrollbar.thumb != dsbw->scrollbar.thumb ||
|
||||
+ sbw->scrollbar.background != dsbw->scrollbar.background) {
|
||||
XtReleaseGC (desired, sbw->scrollbar.gc);
|
||||
+ XtReleaseGC (desired, sbw->scrollbar.bgc);
|
||||
CreateGC (desired);
|
||||
redraw = TRUE;
|
||||
}
|
||||
@@ -658,11 +907,14 @@ Redisplay(Widget w, XEvent *event, Regio
|
||||
XRectInRegion (region, x, y, width, height) != RectangleOut) {
|
||||
/* Forces entire thumb to be painted. */
|
||||
sbw->scrollbar.topLoc = -(sbw->scrollbar.length + 1);
|
||||
- PaintThumb (sbw, event);
|
||||
+ PaintThumb (sbw, 0, 0);
|
||||
+ } else {
|
||||
+ /* Redraw the surounding shadows of the thumb */
|
||||
+ PaintThumb (sbw, 0, 1);
|
||||
}
|
||||
#ifdef XAW_ARROW_SCROLLBARS
|
||||
/* we'd like to be region aware here!!!! */
|
||||
- PaintArrows (sbw);
|
||||
+ PaintArrows (sbw, 0, 0);
|
||||
#endif
|
||||
|
||||
}
|
||||
@@ -888,12 +1140,13 @@ NotifyScroll (Widget w, XEvent *event, S
|
||||
if (PICKLENGTH (sbw,x,y) < sbw->scrollbar.thickness) {
|
||||
/* handle first arrow zone */
|
||||
call_data = -MAX (A_FEW_PIXELS, sbw->scrollbar.length / 20);
|
||||
- XtCallCallbacks (w, XtNscrollProc, (XtPointer)(call_data));
|
||||
+ XtCallCallbacks (w, XtNscrollProc, (XtPointer) call_data);
|
||||
/* establish autoscroll */
|
||||
sbw->scrollbar.timer_id =
|
||||
XtAppAddTimeOut (XtWidgetToApplicationContext (w),
|
||||
(unsigned long) 300, RepeatNotify, (XtPointer)w);
|
||||
sbw->scrollbar.scroll_mode = 1;
|
||||
+ PaintArrows (sbw, 1, 0);
|
||||
} else if (PICKLENGTH (sbw,x,y) > sbw->scrollbar.length - sbw->scrollbar.thickness) {
|
||||
/* handle last arrow zone */
|
||||
call_data = MAX (A_FEW_PIXELS, sbw->scrollbar.length / 20);
|
||||
@@ -903,6 +1156,7 @@ NotifyScroll (Widget w, XEvent *event, S
|
||||
XtAppAddTimeOut (XtWidgetToApplicationContext (w),
|
||||
(unsigned long) 300, RepeatNotify, (XtPointer)w);
|
||||
sbw->scrollbar.scroll_mode = 3;
|
||||
+ PaintArrows (sbw, 0, 1);
|
||||
} else if (PICKLENGTH (sbw, x, y) < sbw->scrollbar.topLoc) {
|
||||
/* handle zone "above" the thumb */
|
||||
call_data = - sbw->scrollbar.length;
|
||||
@@ -911,10 +1165,10 @@ NotifyScroll (Widget w, XEvent *event, S
|
||||
/* handle zone "below" the thumb */
|
||||
call_data = sbw->scrollbar.length;
|
||||
XtCallCallbacks (w, XtNscrollProc, (XtPointer)(call_data));
|
||||
- } else
|
||||
- {
|
||||
- /* handle the thumb in the motion notify action */
|
||||
- }
|
||||
+ } else {
|
||||
+ /* but we need to re-paint it "pressed in" here */
|
||||
+ PaintThumb (sbw, 1, 0);
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
#else /* XAW_ARROW_SCROLLBARS */
|
||||
@@ -976,6 +1230,9 @@ EndScroll(Widget w, XEvent *event, Strin
|
||||
/* no need to remove any autoscroll timeout; it will no-op */
|
||||
/* because the scroll_mode is 0 */
|
||||
/* but be sure to remove timeout in destroy proc */
|
||||
+ /* release all buttons */
|
||||
+ PaintArrows (sbw, 0, 0);
|
||||
+ PaintThumb (sbw, 0, 0);
|
||||
#else
|
||||
XtVaSetValues (w, XtNcursor, sbw->scrollbar.inactiveCursor, NULL);
|
||||
XFlush (XtDisplay (w));
|
||||
@@ -1044,7 +1301,7 @@ MoveThumb (Widget w, XEvent *event, Stri
|
||||
#ifdef XAW_ARROW_SCROLLBARS
|
||||
sbw->scrollbar.scroll_mode = 2; /* indicate continuous scroll */
|
||||
#endif
|
||||
- PaintThumb (sbw, event);
|
||||
+ PaintThumb (sbw, 1, 0);
|
||||
XFlush (XtDisplay (w)); /* re-draw it before Notifying */
|
||||
}
|
||||
|
||||
@@ -1131,6 +1388,6 @@ void XawScrollbarSetThumb (Widget w,
|
||||
sbw->scrollbar.shown = (shown > 1.0) ? 1.0 :
|
||||
(shown >= 0.0) ? shown : sbw->scrollbar.shown;
|
||||
|
||||
- PaintThumb (sbw, NULL);
|
||||
+ PaintThumb (sbw, 0, 0);
|
||||
}
|
||||
|
||||
Index: libXaw3d-1.6.2/src/SmeThreeD.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/SmeThreeD.c
|
||||
+++ libXaw3d-1.6.2/src/SmeThreeD.c
|
||||
@@ -71,6 +71,9 @@ static XtResource resources[] = {
|
||||
{XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
|
||||
XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate,
|
||||
(XtPointer)0}
|
||||
+ ,
|
||||
+ {XtNinvertBorder, XtCInvertBorder, XtRBoolean, sizeof(Boolean),
|
||||
+ offset(sme_threeD.invert_border), XtRImmediate, (XtPointer) False},
|
||||
};
|
||||
|
||||
#undef offset
|
||||
@@ -210,7 +213,7 @@ AllocTopShadowPixmap (Widget new)
|
||||
Display *dpy = XtDisplayOfObject (new);
|
||||
Screen *scn = XtScreenOfObject (new);
|
||||
unsigned long top_fg_pixel = 0, top_bg_pixel = 0;
|
||||
- char *pm_data;
|
||||
+ char *pm_data = NULL;
|
||||
Boolean create_pixmap = FALSE;
|
||||
|
||||
/*
|
||||
@@ -266,7 +269,7 @@ AllocBotShadowPixmap (Widget new)
|
||||
Display *dpy = XtDisplayOfObject (new);
|
||||
Screen *scn = XtScreenOfObject (new);
|
||||
unsigned long bot_fg_pixel = 0, bot_bg_pixel = 0;
|
||||
- char *pm_data;
|
||||
+ char *pm_data = NULL;
|
||||
Boolean create_pixmap = FALSE;
|
||||
|
||||
if (DefaultDepthOfScreen (scn) == 1) {
|
||||
@@ -562,8 +565,16 @@ _XawSme3dDrawShadows(Widget gw)
|
||||
|
||||
if (tdo->sme_threeD.shadowed)
|
||||
{
|
||||
- top = tdo->sme_threeD.top_shadow_GC;
|
||||
- bot = tdo->sme_threeD.bot_shadow_GC;
|
||||
+ if (tdo->sme_threeD.invert_border)
|
||||
+ {
|
||||
+ bot = tdo->sme_threeD.top_shadow_GC;
|
||||
+ top = tdo->sme_threeD.bot_shadow_GC;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ top = tdo->sme_threeD.top_shadow_GC;
|
||||
+ bot = tdo->sme_threeD.bot_shadow_GC;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
top = bot = tdo->sme_threeD.erase_GC;
|
||||
Index: libXaw3d-1.6.2/src/ThreeD.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/ThreeD.c
|
||||
+++ libXaw3d-1.6.2/src/ThreeD.c
|
||||
@@ -73,6 +73,8 @@ static XtResource resources[] = {
|
||||
{XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
|
||||
XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate,
|
||||
(XtPointer)0},
|
||||
+ {XtNinvertBorder, XtCInvertBorder, XtRBoolean, sizeof(Boolean),
|
||||
+ offset(threeD.invert_border), XtRImmediate, (XtPointer) False},
|
||||
{XtNrelief, XtCRelief, XtRRelief, sizeof(XtRelief),
|
||||
offset(threeD.relief), XtRString, (XtPointer) defRelief}
|
||||
};
|
||||
@@ -637,7 +639,7 @@ _Xaw3dDrawShadows (Widget gw, XEvent *ev
|
||||
GC realbot = tdw->threeD.bot_shadow_GC;
|
||||
GC top, bot;
|
||||
|
||||
- if (out) {
|
||||
+ if ((out ^ tdw->threeD.invert_border)) {
|
||||
top = tdw->threeD.top_shadow_GC;
|
||||
bot = tdw->threeD.bot_shadow_GC;
|
||||
} else {
|
||||
@@ -774,7 +776,7 @@ _ShadowSurroundedBox(Widget gw, ThreeDWi
|
||||
Window win = XtWindow(gw);
|
||||
GC top, bot;
|
||||
|
||||
- if (out)
|
||||
+ if ((out ^ tdw->threeD.invert_border))
|
||||
{
|
||||
top = tdw->threeD.top_shadow_GC;
|
||||
bot = tdw->threeD.bot_shadow_GC;
|
70
xaw3d.patch
Normal file
70
xaw3d.patch
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
src/Scrollbar.c | 11 +++++++----
|
||||
src/SimpleMenu.c | 2 +-
|
||||
src/Xaw3dP.c | 2 +-
|
||||
3 files changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: libXaw3d-1.6.2/src/Scrollbar.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Scrollbar.c
|
||||
+++ libXaw3d-1.6.2/src/Scrollbar.c
|
||||
@@ -159,9 +159,8 @@ static Boolean SetValues(Widget, Widget,
|
||||
|
||||
#ifdef XAW_ARROW_SCROLLBARS
|
||||
static void HandleThumb(Widget, XEvent *, String *, Cardinal *);
|
||||
-#else
|
||||
-static void StartScroll(Widget, XEvent *, String *, Cardinal *);
|
||||
#endif
|
||||
+static void StartScroll(Widget, XEvent *, String *, Cardinal *);
|
||||
static void MoveThumb(Widget, XEvent *, String *, Cardinal *);
|
||||
static void NotifyThumb(Widget, XEvent *, String *, Cardinal *);
|
||||
static void NotifyScroll(Widget, XEvent *, String *, Cardinal *);
|
||||
@@ -170,9 +169,8 @@ static void EndScroll(Widget, XEvent *,
|
||||
static XtActionsRec actions[] = {
|
||||
#ifdef XAW_ARROW_SCROLLBARS
|
||||
{"HandleThumb", HandleThumb},
|
||||
-#else
|
||||
- {"StartScroll", StartScroll},
|
||||
#endif
|
||||
+ {"StartScroll", StartScroll},
|
||||
{"MoveThumb", MoveThumb},
|
||||
{"NotifyThumb", NotifyThumb},
|
||||
{"NotifyScroll", NotifyScroll},
|
||||
@@ -1055,6 +1053,11 @@ RepeatNotify(XtPointer client_data, XtIn
|
||||
client_data);
|
||||
}
|
||||
|
||||
+static void StartScroll (Widget w, XEvent *event, String *params, Cardinal *num_params )
|
||||
+// String *params; /* direction: Back|Forward|Smooth */
|
||||
+// Cardinal *num_params; /* we only support 1 */
|
||||
+{
|
||||
+}
|
||||
#else /* XAW_ARROW_SCROLLBARS */
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
Index: libXaw3d-1.6.2/src/SimpleMenu.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/SimpleMenu.c
|
||||
+++ libXaw3d-1.6.2/src/SimpleMenu.c
|
||||
@@ -1302,7 +1302,7 @@ SetMarginWidths(Widget w)
|
||||
SimpleMenuWidget smw = (SimpleMenuWidget)w;
|
||||
SmeObject *entry;
|
||||
SmeBSBObject bsb_entry;
|
||||
- Dimension l_mrgn, l_bmw, r_mrgn, r_bmw;
|
||||
+ Dimension l_mrgn = 0, l_bmw, r_mrgn = 0, r_bmw;
|
||||
|
||||
if (smw->simple_menu.left_whitespace || smw->simple_menu.right_whitespace)
|
||||
{
|
||||
Index: libXaw3d-1.6.2/src/Xaw3dP.c
|
||||
===================================================================
|
||||
--- libXaw3d-1.6.2.orig/src/Xaw3dP.c
|
||||
+++ libXaw3d-1.6.2/src/Xaw3dP.c
|
||||
@@ -73,7 +73,7 @@ stipplePixmap(Widget w, Pixmap pm, Color
|
||||
Display *dpy;
|
||||
XpmImage image;
|
||||
XpmAttributes attr;
|
||||
- XpmColor *src_table, *dst_table;
|
||||
+ XpmColor *src_table = NULL, *dst_table;
|
||||
int i, j, index = -1;
|
||||
|
||||
if (pm == None)
|
Loading…
Reference in New Issue
Block a user