Last Update: 23 November 2005






Changes for Xarm 2.0.6 include:

  • Fixed one cast in ToolTips.C for 64-bit support
  • Upgraded the autoconf/automake tools to support new platforms
Changes for Xarm 2.0.5 include:

  • Cleaned up include order so that the library now builds correctly on Fedora Core 3 using GCC 3.4.2
  • Fixed the check for new-style C++ header support and cleaned up the examples to actually use the results
Changes for Xarm 2.0.4 include:

  • More cleanups so that Xarm compiles with newer compilers (GCC 3.0.1 and 3.0.2 have been tested) This was pointed out by Gerry Marthe. (Thanks!)
  • A bug-fix in the TreeList when deleting items (again thanks to Gerry Marthe)
  • A ToolTip fix so that Tool Tips align properly when close to the edge of the screen, courtesy of Steve Koh. (Thanks!)
Older Changes for Xarm 2.0.X include:

  • Added one more overload to XarmArg for the new xinput example.
  • The PasswordField now has value methods to replace those inherited from TextField. This allows programs to set the value of the password directly. The string returned from PasswordField::value() should be freed with XtFree just as for TextField.
  • The xpasswd example has been cleaned up and modified to demonstrate the new functionality.
  • Fixes to various headers and a few example sources for Solaris 2.6 CDE compatiblity. Note that this means a Solaris Setup binary should be available soon!
  • The old CObject base class has been removed! This means that most code will probably require a few small modifications to compile with the new version. This is mainly due to the fact that the old versions of addCallback and friends are gone! This also breaks any semblence of binary compatibility with older versions of the library - thus the move to 2.0. Overall, though, I think code written with Xarm will end up much cleaner as a result.
  • The TreeList widget has been tweaked and tuned conciderably. It also now knows about wheel mice! Check the Screen Shots page for an example.
  • Xbae support has been enhanced and now covers versions through 4.8.4 including the Xbae Input widget.

Changes from previous versions:

  • The ToolTip widget is now an XmLabel instead of a home-grown (and drawn!) widget. This makes it work in MultiLanguage environments with the same support as Motif in general. See the xpasswd example and hover over any of it's widgets.
  • Support for versions of OpenGL other than Mesa. Suggested by Carl Best.
  • Fixes for compile time errors in newer versions of GCC. Discovered by Kurt V. Hindenburg.
  • The versioning problem building XarmSetup has been fixed.
  • Major improvements to the Gauge code and the Gauge demo by Dave Rose.
  • Compatability fixes for Xbae 4.7
  • Several bug fixes in the XPM handling code.
  • Improvements in the make process.
  • Tested on several platforms against the newly released OpenMotif 2.1.30
  • A new widget! The XarmTreeList widget isn't a widget in the strictest sense, but rather it's an adaptation of the Xbae Matrix. As such, it requires the Matrix to work. There is also a new example (xtree) to go along with and demonstrate the TreeList. Check out the screenshot!
  • The List wrapper now accepts and returns char ** instead of XmStringTable for selectedItems(). This change was suggested by Charles L. Rennolet.
  • Modified the Matrix wrapper source so that only inline functions are called inside the library. This should allow programs that don't use the Matrix (or the new XarmTreeList) to avoid linking with libXbae.
  • Fixed yet another typo in the Callback templates.
  • Xarm now supports the Mesa Motif Widgets! There is now a configure option (--with-gl=[DIR]). You can specify the path to your GL libraries and includes or let configure try to find them. There is also a cool example, check out examples/cube. The header is Xarm/GLWidgets.h. Xarm.h now defines XARM_HAS_GL if the GL libraries were found. This code inspired by Jiangzhi. NOTE: The GL support requires Mesa 3.1 or higher.
  • Added a check in the configure script for problems with GCC 2.95.2 and above and the X libraries on certain systems. The only place I've noticed this so far is on Solaris 2.6 with GCC 2.95.2. The Solaris X headers do not define the return types of any X functions. Newer GCC's now concider this an error by default instead of a warning. The Xarm configure script will detect this condition and set the compiler flags to work around it.
  • Removed the -Wl,-soname stuff from the Solaris shared library make rules again. This is also related to newer GCC's requiring a new syntax. Some day all this stuff will actually be consistent! Anyway, Xarm will now link correctly on Solaris with the most recent GCC.
  • Xarm now builds properly in environments with both Motif 2.X and CDE installed.
  • Added libdl to the list of libraries for CDE linking. If anyone has problems with this, please let me know.
  • Added a check for two libraries that I know need to be added for at least one version of CDE. The configure script will try to compile a short test program without either one, then with one, then with the other, and finally with both. If you see the message "checking for other required libraries... unknown" then you will need to add any extra libraries to the file config/ to the MOTIF_EXTRA_LIBS variable.
  • The Xarm Callback mechanism now understands Xarm objects! You can now say addCallback(this, &MyApp::onOK, okButton, XmNactivateCallback) instead of the less obvious addCallback(this, &MyApp::onOK, okButton->widget(),XmNactivateCallback) OK, so this might not seem like much, but I think it's an improvement.
  • Xarm now defines XARM_HAS_NEWHEADERS if the current compiler allows #include<iostream> instead of #include <iostream.h>
  • This time, all the standards conformance stuff should be fixed!
  • Finally fixed the Gauge redraw problem!
  • A new example! Xarm now comes with the XarmSetup program included in the examples directory. XarmSetup is a Setup wizard that can be distributed as a stand-alone Xarm installation, configuration and compilation tool. Check it out. I think it's pretty cool!
  • Fixed a bug in the CDE and Motif 2.X ComboBox code related to retrieving selectedItem(). Xarm was freeing the XmString returned from Motif. That is a bad thing to do!
  • Added mapWindow(), unmapWindow() and unmapSubwindows(). These aren't strictly Motif functions but they are useful.
  • Added functionality in the Xbae Matrix wrapper to sort by any column, ascending or descending. Courtesy of Phil Grim.
  • Added an option to the configure script to specify where Xbae is installed. If you say ./configure --with-xbae=[BASEDIR] then it will use [BASEDIR]/include and [BASEDIR]/lib for Xbae.
  • Fixed the Event Handler Callback mechanism. It now correctly handles all combinations of add/remove with different masks.
  • Almost completely redesigned internals! Almost everything is inline now. The library compiles to under 500K using EGCS 1.1 on my Linux system.
  • A new overload for XarmArg so that Xarm object pointers can be passed in place of widget values when setting resources.
  • Auto-detection and support for compilers that use, understand and/or need namespaces.

If you have comments or suggestions, email me at
Jerry Gay:


© 2001 by Gerald L. Gay