Sophie

Sophie

distrib > Mandriva > 10.0-com > i586 > by-pkgid > af7a4b7f1ee5a4a084c41b9005da5527 > files > 1408

libfox1.1_46-devel-1.1.46-1mdk.i586.rpm

<html>
<head>
<link rel="stylesheet" href="page.css" type="text/css">
<title>News</title>
</head>
<body bgcolor=#ffffff link=#990033 vlink=#990033 alink=#990033 text=#000000>


<!---- TOPIC TITLE WITH LOGO--->
<table border=0 cellpadding= cellspacing=2 width=100% ><tr><td><a href='http://www.fox-toolkit.org' target=_top><img src='art/foxlogo_small.jpg' border=0></a></td><td width=100% valign=bottom id="HEADLINE"><b>
News  <A href='news.html' target="_top" align=left><font  size=-2>[Remove Frame]</font></a>
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE WITH LOGO --->


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 8, 2004 - New drop: DEVELOPMENT FOX 1.1.46
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New stuff in this release
<ul>
  <li>Added FXThread and FXMutex classes for threading support.</li>
  <li>Updated pthread library detection.</li>
  <li>Updated Xft2 detection when compiling with <em>--with-xft=yes</em>.</li>
  <li>Removed <em>nr</em>,<em>nc</em> parameters to FXTable; it was found to be
  confusing.  You can use table->setVisibleRows() and table->setVisibleColumns() to
  force a particular layout size of the table.</li>
  <li>Fixed FXTable default size computation. It didn't properly account for the
  headers.</li>
  <li>Removed confusing "nvis" parameter to FXList, FXTreeList, and other list
  widgets.  Use list->setNumVisible() to set the number of visible items if a
  non-zero value is desired.</li>
  <li>Fixed some issues in FXFont and FXDCWindow as suggested by Ivan Markov.</li>
  <li>Added documentation in the standard tarball delivery.</li>
  <li>If you have cool applications based on FOX, commercial or
  otherwise, please consider submitting a small abstract and screenshot for the 
  FOX projects page!.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 26, 2004 - A New Beginning!
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<b><font color=red size=+1>I'm no longer at CFD Research Corp!</font></b>
<p>
<b>What happened?</b>
<ul>
  <li>CFD Research Corp. and yours truly parted ways.</li>
  <li>See CFD Research Corp. <a href="http://www.cfdrc.com/news/press_releases/cfdrc-esi.html">spins off software products division</a> announcement.</li>
</ul>
<b>What is the status of FOX?</b>
<ul>
  <li>CFD Research has officially disclaimed all copyright interests in FOX; in practical
  terms, that means I get to keep full rights and title to FOX.</li>
  <li>CFD Research will continue to be able to use FOX under the current license.</li>
</ul>
<b>What will happen to FOX in the future?</b>
<ul>
  <li>In the immediate future, I will have a lot more time to concentrate on FOX ;-)</li>
  <li>FOX will continue to be available under its current license, if I can help it.</li>
  <li>I am now offering <b><a href="http://www.fox-toolkit.org/consulting.html">consulting services</a></b>.</li>
  <li>I hope to be able to not only work on, but continue to use FOX myself in the
  future.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 20, 2004 - New drop: DEVELOPMENT FOX 1.1.45
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Nice Anti-aliased fonts are here!
<ul>
  <li>Rolled in Ivan Markov's Xft2 patch (Thanks Ivan!).  Had to change stuff around
  a bit; if I broke it, don't blame Ivan please!).<br>
  Xft2 requires freetype2 as well as fontconfig and Xft2 to be installed;
  it needs to be specifically enabled at this time by passing the option
  <b>--with-xft=yes</b> to configure.  Saying yes means Xft2 will be enabled if the
  header files are present.  If Xft2 is not in your version of XFree, then we
  can't turn it on!<br>
  The initialization of the Xft2 library is at this time extraordinarily slow;
  (but as best as I can tell, its not my fault!).  Still, this is something
  that needs tracking down some time.</li>
  <li>Updated VC++, Borland C++ files based on feedbacks from the mailing list.</li>
  <li>Fixed a few build issues, some important warnings (possible hazards on
  other systems) fixed.</li>
  <li>Added alternative modal error, warning, question, and information
  dialog box routines; these will come in handy if there's no owner window.</li>
  <li>Also added PLACEMENT_OWNER flag to the error (etc!) dialog box routines
  so it comes up centered on the owner window.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 18, 2004 - New drop: DEVELOPMENT FOX 1.1.44
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
A number of small updated and gotcha's:
<ul>
  <li>Added VC++ subproject for <b>wizard</b> demo program.</li>
  <li>Fixed VC++ subprojects shutterbug and pathfinder were not building.</li>
  <li>FXSplitter now enforces minimum size on children during layout.  Previously
  it was only enforcing this during interactive partition resizing.</li>
  <li>Changed the way cursor is erased in FXText and FXTextField.  On laptops running
  Windows XP with ClearType enabled, the text was not looking good.  Thanks to
  Bill Baxter for suggestions on how to fix this.</li>
  <li>Fixed out-of memory write problem in FXObjectList.</li>
  <li>Fixed some obscure semantics in FXString self assignment.</li>
  <li>Fixed similar self-assignment issue in FXObjectList.</li>
  <li>Rolled some old code into FXDCPrint.</li>
  <il>Updated Borland C++ makefiles; added Borland C++ makefiles for shutterbug.</li>
  <li>Added UNIX man-page for shutterbug.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 14, 2004 - New drop: DEVELOPMENT FOX 1.1.43
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Its been a while, but here it is:
<ul>
  <li>Added alpha blended cursors on Windows and on X11 (XFree >= 4.3 is needed).
  On older UNIX systems, we now threshold the color cursors down to black and white.
  The internal, application-visible representation is RGBA, just like all the other
  images; you can easily create a cursor out of a small image in any file
  format.  Thanks for Niall Douglas for some of the code.</li>
  <li>FXCURCursor can now build cursor from any depth reswrapped ICO or CUR file;
  this is very handy because you can design your cursors using VC++ and they will
  still work even on X11.</li>
  <li>Added line-weight and color options to ShutterBug. Added override redirect flag so
  it stays on current desktop under Linux. Also added ability to hide ShutterBug
  while taking a snapshot (thus, the entire screen is uncluttered even by ShutterBug
  itself), and added special full-screen size mode.</li>
  <li>Possible race in runWhileEvents(), runModalWhileEvents() fixed.</li>
  <li>FXObjectList NULL's out grown array. This is needed to prevent problems when
  deleting partially filled lists of objects.</li>
  <li>Newly reimplemented XPM file reader can now handle up to 8 characters/pixel.</li>
  <li>Tabbing into FXSpinner, FXRealSpinner makes focus land on text field only.</li>
  <li>Added message ID's for getting/setting tool tip and help strings on some
  controls via messages.  These can be used in GUI-Updates so that the tooltip,
  for example, may be changed as a result of updating the widget.
  Updating via messages is handy as we then don't need to know the type of
  widget being updated.</li>
  <li>Added support in FXFont for additional encodings (X11).  Now russion "microsoft-cp1251"
  is supported.</li>
  <li>Added new parser in FXFont to parse human-readable string for font description;
  this new one should now be used for registry font settings.  The old fxparsefontdesc()
  and fxunparsefontdesc() should be considered deprecated.
  Another benefit of the new method is that there is syntax to read the font-foundry;
  we can now tell adobe-courier and bitstream-courier apart, for example.</li>
  <li>FXFontSelector panel has added support for additional encodings.</li>
  <li>Changed API of fxsaveICO and FXloadICO slightly so they can be used for .CUR
  files also.</li>
  <li>Patch from Brian Hook which adjusts FXPopup menus to stay on the currently
  active screen (if there are more than 1).</li>
  <li>Fixed issue with window-stacking under Windows.</li>
  <li>Fixed small booboo in FXScrollPane.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 13, 2004 - New drop: STABLE FOX 1.0.49
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Fixed issue with window-stacking under Windows.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
November 20, 2003 - New drop: DEVELOPMENT FOX 1.1.42
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Added new widget, <b>FXScrollPane</b>, which can be used for large scrolling
  popup menus.</li>
  <li>Added new ARROW_AUTO capability to FXArrowButton; this is in support for
  the use of FXArrowButton inside FXScrollPane.</li>
  <li>Added new widget, <b>FXSpring</b>, which can be used for fixed-proportion layout
  when used inside FXHorizontalFrame or FXVerticalFrame.  FXSpring widgets
  can be given different lengths, and when piled side by side inside FXHorizontalFrame
  the different springs stretch or shrink proportional to their given lengths.
  Thus, you can subdivide areas into 60:40 splits for example.
  Thanks to Amanda Ross for this wonderful suggestion.</li>
  <li>Added new example program <b>ratio</b> to show off the use of FXSpring for
  fixed-proportion layouts.</li>
  <li>Greatly improved FXHeader control which now allows unlimited number of
  header items.  Various justify options are now available for the text and
  icon in each item.  The header items also support multi-line text.
  Prior to this release, header controls were scrolled as a whole; now, the items
  themselves are moved.  This permits very wide (greater than 32,000 pixels) contents
  without necessitating the FXHeader control itself to be this wide (which is
  problematic because of the underlying window coordinate system limitations).
  This move has been made in anticipation of using the FXHeader control in FXTable.</li>
  <li>Updated FXIconList and FXFoldingList for new header control functionality.</li>
  <li>Added hand (DEF_HAND_CURSOR) cursor to FXApp.</li>
  <li>Fixed subtle layout bug in FXPopup with uniform packing option.</li>
  <li>Fixed potential buffer overrun bug in FXFileDict.  Depending on your compiler's
  stack frame layout, it may also have prevented some icon bindings from showing up.
  The bug fix was also back-ported to the
  <a href="http://www.fox-toolkit.org/ftp/fox-1.0.48.tar.gz">STABLE version FOX 1.0.48</a>.</li>
  <li>FXStatusLine now only shows help from controls in the parent window or sub-
  dialogs of the parent window containing the status line.</li>
  <li>Fixed some minor bugs in FXRealSpinner.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 30, 2003 - New drop: DEVELOPMENT FOX 1.1.41
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Fixed clipboard and primary selection issues for FOX receiving
  clipboard data or primary selection data from GNOME applications;
  [clipboard and primary selection from KDE applications worked fine].</li>
  <li>Fixed some compiler warnings for 64-bit Linux on AMD64.</li>
  <li>Fixed FXASSERT in FXHash table; also, fixed bookkeeping issue in FXHash
  which caused table growing/shrinking to happen at the wrong times.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 23, 2003 - New drop: DEVELOPMENT FOX 1.1.40
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Added attach() API to FXWindow; this allows a foreign window to be
  swallowed into the FOX widget tree.</li>
  <li>A new FLAG_OWNED is added to FXWindow to determine if the window handle
  is owned by FXWindow or whether it belongs to a foreign window; various
  API's have been fixed accordingly.</li>
  <li>Added new class, FXHash, which maps pointers to pointers; its primary
  purpose is to map window handles to FOX widgets; on X11, we used XFindContext()
  for this in the past, and we used GetWindowLong() on Windows.  Due to the
  introduction of attach() we can no longer use GetWindowLong() on Windows
  and since FXHash is much faster than XFindContext() we now use FXHash on
  both platforms.</li>
  <li>Fixed bug in FXObjectList reported by Dimitris.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 20, 2003 - New drop: DEVELOPMENT FOX 1.1.39
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>FXHeader has been vastly updated; each header item now supports customizable
  layout of icon and label: relative placement of icon and label, as well as
  justification inside the cell. Also, labels inside FXHeaderItem may now be
  multi-line.</li>
  <li>Corrected some little bugs with FXTable; in the near future, FXTable will
  be overhauled, and will use the updated header control.</li>
  <li>Fixed some minor warnings for AMD Athlon-64 compile of FOX.</li>
  <li>Fixed some template instantiation issues in FXElement.h</li>
  <li>FXScrollWindow now observes more layout options for its content window;
  first, LAYOUT_FIX_WIDTH and LAYOUT_FIX_HEIGHT are now observed at all times;
  the options LAYOUT_LEFT, LAYOUT_RIGHT, LAYOUT_CENTER_X, LAYOUT_TOP, LAYOUT_BOTTOM,
  LAYOUT_CENTER_Y, LAYOUT_FILL_X and LAYOUT_FILL_Y are observed if the content window
  is smaller than the visible viewport of the FXScrollWindow.</li>
  <li>The member data content_w, content_h have been removed from FXScrollArea;
  these turned out to be unnecessary in all cases, since the information
  contained in them wasn't very useful.</li>
  <li>Fixed some minor issues with sorting in FXFoldingList; added sortItems()
  API which sorts ALL items, not just items at root level.</li>
  <li>Fixed small problem in FXFile owner() [UNIX only].  When compiled with
  --enable-threadsafe, it was returning a bogus value.</li>
  <li>Fixed some minor issues in FXUndoList; first, killed some complaints
  reported by Borland C++; also, some minor problems accessing the redoName.</li>
  <li>Did some minor speedup tricks, also killing some pointer underflow
  messages reporting by some debuggers (this was not a bug, as no data
  was referenced; however some debuggers flagged this).</li>
  <li>Fixed issue with FXStream buffer pointers; some debuggers were
  flagging pointer overflow when FXMemoryStream called FXStream::open() with
  "unlimited" buffer [we use unlimited buffer for example in reswrapped
  icon reading where we know the reader to stop at the end of the icon
  data].  When the buffer size is set to ULONG_MAX, the end-pointer in
  FXStream is now set to the largest representable pointer value; note
  that this value will be compared but never referenced when used in
  FXMemoryStream.</li>
  <li>FXMDIChild sets target and selector to NULL just after SEL_CLOSE was
  issued from the close() API to prevent any further events:- its target may
  have been deleted in the SEL_CLOSE callback.  Similar logic applies to
  FXTopWindow's close() logic.</li>
  <li>Fixed one memory buglet in glviewer test program.</li>
  <li>Fixed small problem in FXApp peekEvent(); it now returns TRUE whenever
  getNextEvent can be called productively.  Previously, peekEvent() returned
  FALSE even though timers were overdue or chores had been set.</li>
  <li>Renamed FXApp API runWhileEvents() to runModalWhileEvents; added non-modal
  version runWhileEvents().</li>
  <li>Added checking for maximum points in FXDCWindow polygon drawing functions
  under Windows.</li>
  <li>Fixed bug in FXObjectList, forgot to multiply by sizeof(FXObject*).</li>
  <li>Removed unused declaration from FXText.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 8, 2003 - New drop: DEVELOPMENT FOX 1.1.38
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Harmonized parameter-order of FXMEMDUP() with FXMALLOC() and co.</li>
  <li>Added undo-grouping facility to FXUndoList.  In a nutshell, you can
  often break down undo/redo capability into lots of little undo/redo activities,
  which must be performed as a unit.  The new undo extension now allows for this
  using a FXCommandGroup.  FXCommandGroup may be subclassed, although you
  typically only overload undoName() and redoName().  FXUndoList sports new
  API's begin() and end() to bracket a set of undo-commands which need to
  be executed in unison.  These can be arbitrarily nested.<br>
  Also new in the undo-system is that FXCommand now derives from FXObject,
  meaning that it can both send and receive messages.  This is cool because
  it allows FXCommand subclasses to be directly interfaced to other objects,
  (including widgets!) via the normal message system.  The undo merge got
  dropped because I'm not sure the mechanism implemented earlier is satisfactory
  at this point.</li>
  <li>Added Shift-Delete binding for cut-to-clipboard in FXText and FXTextField.</li>
  <li>Fixed memory leaks (mostly icons) in most sample programs.</li>
  <li>Changed internal timer implementation on Windows to allow for programs
  running longer than 24.85 days; the old implemtation worked with 32 integers
  and counting in milliseconds caused a wrap-around in 24.85 days, causing
  possible problems in FOX long-running programs.</li>
  <li>Blocked assignment and copy constructor in FXVisual.</li>
  <li>Changed some more functions for basic types in FXElement.h</li>
  <li>Fixed bug in FXObjectList and removed superfluous buffer clearing (it
  gets overwritten immediately).</li>
  <li>Fixed minor bug in FXString.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
September 24, 2003 - New drop: DEVELOPMENT FOX 1.1.37
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>A new subdirectory started for plotting and charting widgets (libCHART).</li>
  <li>Fixed serious bug in FXTreeList, FXFolding list when deleting items;
  first, references were made to deleted items.  Second, while in the callback
  the item was in an inconsistent state.</li>
  <li>Text now has focus when A.d.i.e. starts up.</li>
  <li>FXObjectList API's added:- can append, insert, remove multiple items now.
  Also has new, more efficient implementation.</li>
  <li>FXDLL now uses LoadLibraryEx(dllname,NULL,LOAD_WITH_ALTERED_SEARCH_PATH)
  under WIN32; this finds sub-DLL's in the same path as the master DLL when loading
  DLL's which themselves load DLL's.</li>
  <li>New API dupElms() added in FXElement.</li>
  <li>Added texture drawing test mode in dctest sample application.</li>
  <li>Updated VC++ for libCHART; DLL building still gives trouble, however...</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
September 17, 2003 - New drop: DEVELOPMENT FOX 1.1.36
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
In this release:
<ul>
  <li>FXTreeList, FXFoldingList API's clearItems(), removeItem() and removeItems()
  now generate no spurious callbacks:- previously, multiple SEL_CHANGED callbacks
  were issued while deleting multiple items; now, only a single SEL_CHANGED
  callback will be generated, at the end of the removal.
  Also, when deleting items, no reference is being made anymore to deleted item's
  icons.  This caused problems in some cases where FXTreeList's destructor was
  being called AFTER the icons of the items were already deleted.</li>
  <li>FXTreeItem, FXFoldingItem had added API's, isParentOf() and isChildOf() to test
  parent/child relationship between items.</li>
  <li>FXUndoList's FXCommand has new added API, merge(), which allows undo-record
  merging.  Undo records may be merged if (a) merging is allowed, (b) the merge
  would not span the <b>marked point</b> of the undo-list, and (c) when the merge()
  function of FXCommand returns TRUE; otherwise, a separate undo record will be added.
  Also, FXUndoList maintains a flag which indicates whether a command is being
  executed.  This may be examined during the execution of an FXCommand to determine
  if it is a user-initiated or undo-initiated action.  Only in user-initiated
  actions do new undo records need to be added.</li>
  <li>FXSpinner, FXRealSpinned have added get/set methods to specify the number
  of columns in the text field.</li>
  <li>FXMDIChild's close window logic has been finalized; call FXMDIChild's close()
  member function to close the MDI child window.  This will generate one final
  callback of type SEL_CLOSE to FXMDIChild's target, after which the FXMDIChild
  will self-destruct.</li>
  <li>FXMDIClient's closeDocument() and closeAllDocuments() API's have been removed;
  instead, we now have more general API's forallWindows(), forallDocuments(), and
  forallDocWindows().  The API forallWindows() sends a message to all MDI child
  windows; forallDocuments() sends one message one window of a group of windows
  sharing the same document.  Finally, forallDocWindows() sends a message to all
  windows of the given document.  All these API's stop routing messages at the
  first unhandled message.</li>
  <li>FXMDIChild now forwards messages first to its contentWindow(), then to its
  target (typically, the "document" in a multiple document interface).</li>
  <li>Fixed FXICOIcon and FXICOImage to handle off-spec icons; according to
  the official documents, ".ico" icons should be 16x16, 24x24, 32x32, 48x48 or
  64x64 pixels.  FOX now handles arbitrary sizes.</li>
  <li>Fixed bug in FXFileStream's position() API:- the file position was not
  being corrected for the bytes already buffered, causing file-position and
  stream position to get out of sync.</li>
  <li>FXPopup can now take taskbar into account under MS-Windows when popping
  up.</li>
  <li>FXProgressDialog forces repaint when label is being updated; frequently,
  not only the bar but also the label are being changed while operation is
  in progress.  Updating the label previously required some explicit calls to
  repaint() and flush().</li>
  <li>Buffer overrun testing added to FXXPMIcon/FXXPMImage input routines.</li>
  <li>New function, fxsavePS(), added to allow saving of image data to postscript
  image file.  Both color and grayscale images are supported, as are some paper
  placement options.</li>
  <li>New syntax-coloring engine is being implemented in A.d.i.e. Editor; this
  work is still in progress, the patterns are currently hardwired for testing
  purposes, until a new GUI is in place.  It is recommended people continue
  to use the stable version of A.d.i.e. in the FOX 1.0 release for editing
  tasks.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 25, 2003 - New drop: DEVELOPMENT FOX 1.1.35
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release:
<ul>
  <li>Added FXPPMImage and FXPPMIcon for Portable Pixmap format support.</li>
  <li>FXColorWheel now supports mouse wheel for hue control.</li>
  <li>Fixed bug in FXSeparator drawing when non-zero padding was passed.</li>
  <li>Fixed introduced bug in FXGIFCursor.</li>
  <li>Added SCROLLBAR_WHEELJUMP option to FXScrollBar; when SCROLLBAR_WHEELJUMP option
  is passed, moving the mouse wheel inside the FXScrollBar will jump scroll instead
  of performing smooth scrolling.  The jump-scrolling mode is usefull when scrolling
  complicated contents which are difficult to redraw quickly.</li>
  <li>When passing the option SCROLLERS_DONT_TRACK to FXScrollArea, the FXScrollArea
  will automatically enable the SCROLLBAR_WHEELJUMP option for the scroll bars.</li>
  <li>When installing <font color=#ff0000>FOX 1.x.y</font>, it will now install the header files into a directory
  <font color=#ff0000>&lt;prefix&gt;/include/fox-1.x</font>, and install the library into
  <font color=#ff0000>&lt;prefix&gt;/lib/libFOX-1.x.a</font>; this will make it easy for
  the new version and the old version of FOX to coexist on one system.</li>
  <li>Updated Borland C++ and Digital Mars C++ Makefiles.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 19, 2003 - New drop: DEVELOPMENT FOX 1.1.34
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Improvements:
<ul>
  <li>Fixed various list widgets so changing icons in items does not incur
  recalc() when icon stays the same.</li>
  <li>Added Bill Baxter's FXRealSpinner class; replaced dial with up/down
  buttons (couldn't make this work nicely).  Changed internal logic so as
  to work in a more user friendly way (keeps nice numbers, rolling mouse
  up and down returns to same value, and so on).</li>
  <li>Now all "artwork" exists outside of the source code; however a
  pre-reswrapped icons.h and icons.cpp is distributed.</li>
  <li>FXSpinner increments/decrements using mouse wheel.</li>
  <li>FXUndoList maintains counter of number of undo/redo records; you can
  connect text fields to these counters for display in the GUI.</li>
  <li>Moved fxmalloc() and co into FXObject.cpp from fxutils.cpp; dynamic
  loading of FOX into <a href="http://fxruby.sourceforge.net">FXRuby</a>
  on Mac OS-X needs this.</li>
  <li>Added list of standard sizes to Shutterbug; makes it much easier
  to snapshot standard icon sizes directly from the screen.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 1, 2003 - New drop: DEVELOPMENT FOX 1.1.33
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
More great improvements:
<ul>
  <li>Added new image type support, XBM (X Bitmap).  X bitmaps are often used
  for black and white icons or cursors, and these new image classes allow for
  convenient manipulation of these images.</li>
  <li>Fixed bug in FXString and FXSettings; actually, there were two bugs:
  first, when strings contained quoted characters it was reading a bit past
  the last character.  Next, the conversion of hex to a value was wrong
  due to a precedence problem.</li>
  <li>Added extra parameter to FXImage::scale().  This is the quality of the
  rescaling.  Current values may be 1 for the old algorithm and 0 for the new,
  very fast dumb-sampling algorithm.  The sampling is ugly, but it sure is
  fast.  We sure intend to have additional scaling algorithms.</li>
  <li>FXText now follows similar GUI update blocking as FXTextField: when
  the focus is on it, it does not update.</li>
  <li>Some additional icons has been made available as GIF files.  They
  are now reswrapped in the process of building the library instead of
  being pasted in the source code; this makes it easier to replace icons
  work with other ones.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 22, 2003 - New drop: DEVELOPMENT FOX 1.1.32
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
More great improvements:
<ul>
  <li>New sample application, <em><b>ShutterBug</b></em> which is a simple screen
  snapshot utility; ShutterBug can lasso any arbitrary area on the screen and
  dump the image to any of the supported file formats.</li>
  <li>FXImage no longer creates its own pixel array in restore(), unless there
  was no a-priori pixel array; in other words, it can read back pixels from
  the server-side representation straight into the pixel buffer passed on the
  constructor.</li>
  <li>FXDirBox now uses FXFileDict, enabling it to display custom icons.</li>
  <li>Updated FXDirSelector; now that FXDirList shows drive names properly under
  windows, the FXDriveBox is no longer needed.  Also, FXDirList and FXDirBox
  share the FXFileDict in FXDirSelector.</li>
  <li>The <font color=#ff0000>radio-behavior has been dropped</font> from FXGroupBox;
  it is no longer desired, for several reasons: <em>first</em>, we have a much better
  mechanism to keep FXRadioButtons in sync using the GUI update mechanism or
  with FXDataTargets; <em>second</em>, physical layout has nothing to do with logical
  behavior, and FXGroupBox is now a purely decorative layout manager, and
  <em>third</em>, the radio-behaviour in FXGroupBox was causing problems when interfacing
  FXRadioButtons with other code due to the spurious extra messages due to the
  radio-behaviour enforcement.</li>
  <li>Removed SEL_UNCHECK_OTHER and SEL_UNCHECK_RADIO message types; this is due to
  the removal of the old FXGroupBox behaviour.</li>
  <li>FXTextField now understands control-arrow cursor movement; control-arrow
  moves the cursor by one whole word.  To make this more useful, FXTextField
  also has new setDelimiters() and getDelimiters() API's with which the user
  can indicate the set of characters which are interpreted as word delimiters.</li>
  <li>FXText's setDelimiters() and getDelimiters() API's have been changed to
  match those of FXTextField.  This makes the class FXCharset obsolete.</li>
  <li>Fixed problem in FXSlider; FXSlider was not drawing correctly when padding
  was non-zero; also, the slider had is now drawn in the GUI base color rather
  than back color; this allows the user to set the back color to a different
  value from base color.</li>
  <li>Fixed FXTreeList's dotted line drawing under Windows: FILL_STIPPLED style
  does not work, but FILL_OPAQUESTIPPLED fortunately does.</li>
  <li>New features added to <b>reswrap</b>:<br>
  <ul>
  <li>Reswrap now understands a new option, <b>-n namespace</b> which causes
  it to generate a C++ namespace scope around the icon-definitions.</li>
  <li>Another new option, <b>-p prefix</b> will place the string <em>prefix</em>
  in front of every symbol generated from the icon filename.</li>
  <li>To force an alternate resource name, you can now use <b>-r resourcename</b>.
  If this option is not passed, the resource name is generated from the file name
  by dropping the extension and replacing the period (".") by an underscore.</li>
  </ul>
  </li>
  <li>FXImageView now offers options to control the placement of the image when the
  viewport is larger than the image; you can align it in various ways using options
  IMAGEVIEW_LEFT, IMAGEVIEW_RIGHT, and so on.  The default alignment is now
  centered in X and Y, so you may have to force IMAGEVIEW_LEFT|IMAGEVIEW_TOP options
  to keep the current image placement.</li>
  <li>FXGLVisual has gained an API, <b>supported()</b> for checking for OpenGL support.  It is
  primarily useful for UNIX/X11 remote displays.  The new API returns the <em>lesser</em>
  of the library's OpenGL version and the remote server's version.  Programs should
  try to limit OpenGL calls to those not exceeding this support level.</li>
  <li>Most icons are now generated by <em>reswrap</em>.  Also, many icons have been
  updated to more modern-looking icons.</li>
  <li>Fixed bug in FXGZStream; forgot to flush buffer at the end.</li>
  <li>Fixed a number of bugs in FXBZStream; BZ2_bzRead() returned BZ_STREAM_END
  and not BZ_OK when at end of stream, causing tail end of file to be left unread.</li>
  <li>In FXTopWindow, absence of DECOR_SHRINKABLE or DECOR_STRETCHABLE should now
  work under Windows. If a window has DECOR_STRETCHABLE but not DECOR_SHRINKABLE,
  then it can not be resized below its default size; likewise, if it has DECOR_SHRINKABLE
  but no DECOR_STRETCHABLE, it can not be resized larger than the default size.</li>
  <li>The <em>undocumented</em> <b>x86-only</b> API fxgetticks() now calls the function
  QueryPerformanceCounter() under Windows; presumably, this is implemented in terms of
  the RDTSC instruction.  The API fxgetticks(), if it exists, allows you to read back
  the CPU's time-stamp counter register, which increments every clock tick.  It enables
  very fine-tuned time measurements.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 8, 2003 - New drop: DEVELOPMENT FOX 1.1.31
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Great improvements in this release:
<ul>
  <li>The new FXStream class is finally here!  This represents another one of
  the major milestones toward FOX 1.2!
  <br>
  <ul>
  <li>Much faster than the old FXStream, especially on small items, where the
  difference is quite dramatic.</li>
  <li>Now provides byte-swapping capability during writing as well as reading.</li>
  <li>Provides buffered operation, permitting more easy subclassing.</li>
  <li>User-specifyable buffer size allows more tuning of buffering to datasets
  of interest to user.</li>
  <li>Now able to position pointer in stream from current- or end-position as
  well as start-position.</li>
  </ul></li>
  <li>Updated FXFileStream.  FXFileStream no longer works over buffered I/O
  but direct system calls (as FXStream already provides its own buffering!).</li>
  <li>Updated FXGZStream which provides file I/O using GNU ZIP style compression.</li>
  <li>Updated FXBZStream; this one uses BZIP2 style compression.</li>
  <li>Fixed bug in vsscanf() for integer overflow handling (only affects systems which
  don't provide their own vsscanf()) [Thank you SGI MIPS Pro C++].</li>
  <li>Fixed FXMDIXXXButton to properly observe frame style while being pressed.</li>
  <li>Regressed FXRootWindow size determination to old method.</li>
  <li>Fixed drawing of accelerator and underscore in FXMenuCommand, FXMenuCheck,
  and FXMenuRadio when drawn grayed out.</li>
  <li>Increased buffer size for fxmessage(), fxerror(), fxwarning(), fxtrace(),
  and fxassert() because it was too small for some people.  The new size is
  compile-time configurable, preprocessor constant MAXMESSAGESIZE, which defaults
  to 1024 if not passed explicitly.</li>
  <li>Updated FXXXXIcon and FXXXXImage classes for changed argument order in new
  FXMemoryStream class.</li>
  <li>Some minor tweaks in new fxsaveGIF() function.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 27, 2003 - New drop: DEVELOPMENT FOX 1.1.30
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New stuff for this release:
<ul>
  <li>New widget, FXFoldingList has been added.  FXFoldingList is a tree list with
  captions; each item may have a number of substrings (as FXIconList, separated by
  tabs).  A header control determines the sizes of each column.</li>
  <li>Fixed buglet on 64-bit machines:- FXID should be 64-bit on 64-bit
  machines.</li>
  <li>Made moveContents() a protected API.  There has been some confusion in
  the past with programs invoking moveContents() instead of setPosition().
  The correct way is to call setPosition() to scroll.  This will verify the
  input, then in its turn invoke moveContents() to adjust the insides of
  a FXScrollArea.</li>
  <li>Changed FXColorWell's drop behavior.  Previously, dragging a color
  over a FXColorWell caused the FXColorWell to emit SEL_CHANGED messages;
  if this leads to a drop, no subsequent SEL_COMMAND followed, causing
  programs which only trapped SEL_COMMAND to behave oddly; now the FXColorWell
  emits a SEL_COMMAND when the color is dropped, and the color does not
  change while dragging over it.</li>
  <li>Fixed some minor issues in FXIconList.  Icon didn't properly disappear
  when 2nd column was made very small.</li>
  <li>Fixed minor type in FXMat3d.</li>
  <li>Changed shape of arrow and reverse arrow cursor slightly under X11.</li>
  <li>FXPopup, FXTopWindow, FXToolTip position-adjustment code now no longer
  assumes root window starts at 0,0.  This means root window may now extend
  in all directions.  This is in support of multi-head configurations.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 23, 2003 - New drop: DEVELOPMENT FOX 1.1.29
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Truely massive numbers of changes this time!  Some long-standing wishes
have finally been implemented:
<ul>
  <li>New API's to FXImage: <b>xshear()</b> and <b>yshear()</b> perform a
  shear operation on the image (turning it into a parallelogram).  The
  area outside the image is filled with an optional background color (the
  default being transparent).</li>
  <li>FXImage now always has an alpha channel; this means its now much more
  convenient to use, as FXImage can now be treated as a rectangular array
  of FXColor.  Treating each pixel as a single 32bit word is much faster;
  also, no runtime test is needed to test for alpha channel presence.</li>
  <li>The image input and output routines have been upgraded to support
  alpha channel also:
  <ul>
  <li>BMP loader now supports 1,4,8,16,24, and 32bpp with alpha channel.</li>
  <li>BMP writer saves to 24 or 32 bit depending on image opacity:- it saves
  as 24bpp whenever image is fully opaque.</li>
  <li>BMP loader was incorrectly yielding darker colors when loading 16bpp
  BMP files; this has now been corrected.</li>
  <li>ICO loader now supports WindowsXP-style 32bpp icons, which support an
  alpha channel.</li>
  <li>ICO writer now saves 24bpp with one bit alpha, or 32bpp with true
  alpha channel.</li>
  <li>PCX loader totally revamped; now supports 1, 4, 8, and 24bpp; it
  does not support 4 planes of 1bit due to lack of documentation on what
  this means.</li>
  <li>TARGA image loader now supports 32, 24, 16, and 8bpp, as well as grey
  scale images.</li>
  <li>TARGA loader was incorrectly loading darker colors in 16bpp mode; this
  was due to lack of rounding.  This problem has now been corrected.</li>
  <li>fxezquantize() bugs have been fixed, and has been speeded up.</li>
  <li>GIF loader now returns proper alpha channel for alpha-color in the
  GIF.</li>
  <li>GIF writer may now uses Lempel-Ziv Welch compression in the USA.  However,
  since FOX is also used internationally, by default the compression is still
  disabled.  If you compile FOX inside the USA, you may pass the -DUSA flag
  to enable GIF compression.</li>
  <li>GIF writer now writes graphic control block when the image has
  transparent areas.</li>
  <li>XPM loader now translates "None" color into proper alpha channel.</li>
  <li>XPM writer now translates transparent pixel to "None" when saving to
  xpm file.</li>
  </ul>
  </li>
  <li>FXGLViewer's readPixels() API now yields rectangular array of FXColors;
  also, this array is <em>right-side up</em> in the sense that it may be
  directly passed to the image output routines.</li>
  <li>Fixed a few remaining 64bit issues for RedHat/Itanium port of FOX.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 23, 2003 - New drop: STABLE FOX 1.0.42
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Fixes for 64-bit compiles:
<ul>
  <li>Added <b>FXival</b> and <b>FXuval</b> definitions from the DEVELOPMENT
  version; these integer types are integers big enough to hold a pointer.
  When casting from <b>int</b> to <b>void*</b> or vice-versa, do so via
  <b>FXival</b> or <b>FXuval</b> to ensure numbers are properly sign-extended
  (or zero-extended) on 64-bit machines.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 6, 2003 - New drop: STABLE FOX 1.0.41
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New stuff in the stable release.
<ul>
  <li>FXFileDict now has TIFF support when compiler flag ALL_IMAGE_FORMATS is passed.</li>
  <li>Registry write problem fixed:- deleted registry keys were not being
  removed from MS-Windows Registry Database in some cases.</li>
  <li>Fixed problem in FXSlider: onLeftButtonRelease handler was sending
  SEL_LEFTBUTTONPRESS message instead of SEL_LEFTBUTTONRELEASE.</li>
  <li>Fixed small problem in FXWindow::create().  Was not passing in the
  right WS_CLIPSIBLINGS|WS_CLIPCHILDREN flags (but there were no consequences
  of this problem as flags we're being set back on in FXDCWindow).</li>
  <li>Fixed bug in FXGLShape: material[1] was not set properly.</li>
  <li>Fixed problem in FXSplitter: onLeftButtonRelease handler was sending
  SEL_LEFTBUTTONPRESS message instead of SEL_LEFTBUTTONRELEASE.</li>
  <li>Fixed problem in FXTable: updateRange issued wrong error message.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 5, 2003 - New drop: DEVELOPMENT FOX 1.1.28
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New stuff in the development release.
<ul>
  <li>Updated reswrap.  The old, unused PPM mode has been dropped. New
  features have been added: it is now possible to reswrap text, for
  example to embed long text into the executable; reswrap automatically
  escapes control characters.  You can use the ASCII mode for text; it
  is also possible to reswrap all input to the form "\xff" which is more
  appropriate for binary data; this mode yields slightly more compact
  text representation of the image than the normal hexadecimal mode.
  A new option can cause reswrap to keep the file extension in the
  symbol; this way it is instantly clear whether an image is a GIF or BMP,
  for example.  The manual page of reswrap has been updated also.</li>
  <li>Fixed little buglet which caused the GUI update to skip one
  widget in its cycle.</li>
  <li>Split off common block of code in FXMetaClass into separate
  function to eliminate redundancy.</li>
  <li>Fixed MDI child drag-rectangle painting problem; occasionally
  the drag-rectangle got clobbered and this caused fragments of the
  drag-rectangle to be left behind.</li>
  <li>Fixed focus problem with MDI child.  In case the content window
  of an MDI child was not focusable, the MDI child window didn't become
  active.</li>
  <li>Also, somewhat related, the MDI child was only activated
  when it received a SEL_FOCUSIN message. This prevented the MDI
  child from becoming active when the window containing it didn't
  have the real keyboard focus from the window manager.</li>
  <li>The FXMDIWindowButton now takes a pointer to the window menu
  (usually FXMDIMenu); previously, FXMDIChild forced its window menu
  to the FXMDIWindowButton in the menubar; this was an unnecessary
  complication as we can simply share the window menu between all
  instances of FXMDIWindowButton's.  Note that the application is
  responsible for properly disposing of the window menu when it is
  destroyed.</li>
  <li>Added setSplit() and getSpit() API's to FXSplitter; previously
  the sizes of the subpanels were set by directly changing the child
  window's size; this was kind of hard to explain.</li>
  <li>Added ID_SETICONVALUE and ID_GETICONVALUE messages.  Using these
  messages, callback functions can change or obtain the icon from the
  sending widget without having to know the type of widget which
  invoked the callback; thus, it works basically like ID_SETINTVALUE
  and ID_GETINTVALUE.</li>
  <li>Replaced old vector classes with new ones.  Besides now being able
  to access components by x, y, z instead of only indexing, they also
  sport a number of additional useful API's.</li>
  <li>Added a 3x3 matrix class, which can be used for 3x3 homogeneous
  transformations or regular 3x3 matrix work.</li>
  <li>Added a 2-vector class analoguous to the 3-vector and 4-vector
  classes; both single and double-precision versions are supplied.</li>
  <li>Updated quaternion classes, also follows new nomenclature.</li>
  <li>Fixed some minor bug in quaternion class member function.</li>
  <li>Changed various math functions inside FOX to be able to take advantage
  of single precision transcendental functions which are now part of the C99
  standard math library; added macros for when no C99 standard functions are
  available.  The single precision functions are usually faster, possibly
  substantially faster for some architectures.</li>
  <li>Fixed trouble with FXAccelTable; releasing, then adding back
  entries resulted in badly filled hash table.  The new implementation
  will be less sensitive to this: first, it resizes sooner, i.e. the
  allowable load factor has been reduced; second, as entries are removed
  the table will now shrink, and in the process the previously
  occupied slots will now be marked as unused.  Finally, as an entry
  is removed an attempt is made to determine if its the last element
  on a collision chain, and if so it will be flagged as an unused
  slot instead of a previously occupied slot.</li>
  <li>Fixed problem under WIN32 with FXVisual returning wrong depth
  of the display; also, was confusing depth (significant bits/pixel)
  and packing (padding bytes which may be in the display buffer to
  have a nice power of two bytes/pixel).</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
May 12, 2003 - New drop: DEVELOPMENT FOX 1.1.27
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New stuff in the development release.
<ul>
  <li>Added support for opaque dragging and resizing of FXMDIChild
  windows; pass MDI_TRACKING flag if desired.  <br></li>
  <li>Fixed WIN32 registry write-back problem in FXRegistry: deleted
  sections were not being deleted from native WIN32 registry.</li>
  <li>Fixed problem with fxloadGIF(): when loading back an image
  previously written by fxsaveGIF(), the number of bytes read in
  was one byte short.  This causes FXStream to get out of sync
  when the image is followed by other data.</li>
  <li>Fixed problem with fxsaveGIF() and fxsaveXPM().  Adjusted
  XPM input/output so that when loading from FXStream, as many
  bytes are being loaded as were saved (provided fxsaveXPM() is
  used to do the saving!).</li>
  <li>Fixed FXShutter to tolerate a zero-value for animspeed; this
  will effectively disable animation of FXShutter closing and
  opening.</li>
  <li>Fixed FXMDIChild to make animation proceed smoother; thanks to
  Thomas Friedrichsmeier for this patch.</li>
  <li>Fixed problem with closing windows: SEL_CLOSE is now blocked
  when closing a window on the bottom of a modal window stack.
  Basically, close button now behaves similar to buttons inside
  the owner window: it beeps and nothing happens.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
May 2, 2003 - New drop: STABLE FOX 1.0.40
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Bugs fixed in the stable release.
<ul>
  <li>Added support for thread-safe build (using POSIX thread-safe
  functions like readdir_r(), getpwuid_r(), and so on).
  Enabled by passing -DFOX_THREAD_SAFE=1 on the command line.  Using
  the thread-safe library calls ensures that
  the GUI thread never interferes with the worker threads if the worker
  threads are making certain kinds of library calls (of course, you might
  want to ensure the worker threads also call the thread-safe API's so
  that they won't interfere with each other!).  <br></li>
  <li>Thread-safe library call support has gone through a few iterations,
  and at this time has been checked on IRIX, SUN, HP/UX (PA-RISC, IPF),
  DEC, and of course Linux.  Do not use this feature in any previous
  version than 1.0.40!</li>
  <li>Fixed problem with multple screens in FXVisual class.</li>
  <li>Added <em>select all</em> (Ctrl-A) and <em>delete file</em> (DEL)
  accelerators to file selector.</li>
  <li>Fixed a few minor issues w.r.t. checking for files, device special
  files, and directories; you can now pick device special files in
  the file selector.</li>
  <li>Fixed minor issue in FXTreeList drawing boxes.</li>
  <li>Could not search for filenames with spaces in FXTreeList.</li>
  <li>Fixed issue with GLVisual and 32-bit hardware accelerated visuals.</li>
  <li>Fixed problem in FXTextField when there is an obscene amount of text inside
  single line text field.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
April 29, 2003 - New drop: DEVELOPMENT FOX 1.1.26
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Stuff in this development snapshot.
<ul>
  <li>Changed addTimeout() to replace the old timer, if it exists, with the
  new timeout value.  This simplifies code as you can simply set the timer
  and if it was set already it now gets reset to the new interval.</li>
  <li>Changed addChore() of course to do the same; it re-appends the
  chore at the end of the list, basically postponing it until after the
  outstanding chores have been performed.</li>
  <li>Fixed forgotten header file include in FXApp for WIN32 build.</li>
  <li>Replaced hard-coded "0" with DefaultScreen(display) in FXVisual;
  this caused problems on X11-based systems having more than 1 screens.</li>
  <li>Removed private GetDC() and ReleaseDC() API's (WIN32 only).</li>
  <li>Fixed FXDCWindow problems:- surface->id() shoule now be treated
  correctly everywhere based on type of surface.</li>
  <li>Added support for thread-safe build (using POSIX thread-safe
  functions like readdir_r()).  Enabled by passing -DFOX_THREAD_SAFE=1
  on the command line.  Using the thread-safe library calls ensures that
  the GUI thread never interferes with the worker threads if the worker
  threads are making certain kinds of library calls (of course, you might
  want to ensure the worker threads also call the thread-safe API's so
  that they won't interfere with each other!).  <br></li>
  <li>Replaced virtual getText() functions in FXListItem (and other list widgets)
  by non-virtuals which yield const FXString&amp;, this eliminates a lot of string
  copying. Returning const FXString&amp; is safe as FXListItem's API's
  are chiefly for FXList and its subclasses to use and not usually directly
  used by application programs.</li>
  <li>Expunged deprecated fxgetusername(), fxgetgroupname(), and fxgetpermissions()
  API's from fxdefs.h.  Use the safer equivalent functions from FXFile instead.</li>
  <li>Removed deprecated setPatternList(const FXchar **ptrns) from FXFileDialog
  and FXFileSelector.  The new function is easier to use and harder to
  abuse.</li>
  <li>Fixed FXText widget:- get selection from clipboard returns value of len larger
  than actual text length; now we're just scanning till the end of string to determine
  the real length.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
April 10, 2003 - New drop: <A href='http://www.fox-toolkit.org/ftp/fox-1.1.25.tar.gz'>DEVELOPMENT FOX 1.1.25</A>
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
New in this release.
<ul>
  <li>Changed the way <b>timers</b> are set or removed. The method addTimeout() is basically
  the same as before, except has a small change in argument-order (permitting default
  parameters more easily).  An overloaded removeTimeout() removes timers by means of
  the same target and message combination as the corresponding addTimeout().  This
  new method is very convenient as it eliminates to a large degree the bookkeeping
  necessary to hang on to the FXTimer pointer.</li>
  <li>Also, addTimeout() now has an optional pointer argument, which is passed back
  as the void* pointer in the callback.  This way, information may be passed from the
  place where the timer is set to the place where the timer callback is called.
  <font color=#ff0000>Note that the pointer in the timer callback handler no longer
  refers to an FXEvent!</font></li>
  <li>Similarly, changed the way <b>chores</b> are handled; the new overloaded removeChore()
  removes a chores by means of the same target and message as the matching addChore() was
  invoked with.  Again, this simplifies coding in many cases.</li>
  <li>Like the timers, addChore() also adds an optional pointer argument, which is
  passed to the chore callback handler when the chore is fired.
  <font color=#ff0000>Note that the pointer in the chore callback handler no longer
  refers to an FXEvent!</font></li>
  <li>Updated all widgets which have timers and chores to use the new timer system;
  all such widgets are now simpler in implementation and actually take a bit less
  memory as well.</li>
  <li>Implemented delayed layout update using chores.  Previously, a change in layout
  was reconciled using a GUI-Update pass.  The new system replaces this by a simple chore
  being set, and thus a layout change no longer incurs an iteration over the entire widget
  tree.  This means layout changes are now substantially less CPU intensive (and
  faster too!).</li>
  <li>Made layout() a public member function.  I had to do this, because the new
  method to force an immediate layout is no longer performed via forceRefresh().<br>
  <font color=#ff0000>If you need immediate layout, then you must now just call layout()
  directly</font>!
  The member function forceRefresh() now only performs a GUI-Update pass on the
  subtree of the widget on which it is called!</li>
  <li>The message handler onUpdate() no longer invokes layout().  This actually
  will speed the GUI-update pass up a little bit, as the new GUI-Update implementation
  will not call layout() anymore.<br>
  If, as a result of a GUI-update, widgets change size (for example caption on a
  label is changed), then there will be no need for an additional GUI-update pass
  for the layout. The result again is substantially less CPU time wasted during idle
  processing, and a more responsive application.</li>
  <li>Implemented delayed layout during window-resizing.
  When resizing dialogs, the system previously rearranged the widgets in the dialog
  immediately.  As a result of this, an interactive (opaque) resize of a complex widget
  tree could start to fall behind the mouse movement.  <br>
  With the new system, it is no longer possible to fall behind, because now it delays
  arrangement of the widgets until it has caught up with the event-stream.
  This makes opaque resizing complex GUI's on slow machines much faster.<br>
  Note that this delayed layout is implemented on X11 only; under WIN32, the
  new delayed layout method appears currently impossible).</li>
  <li>Added some missing API's to FXWString.</li>
  <li>Fixed a buglet in FXString::substitute().  The last occurence of a substring
  ending the string was not being substituted.</li>
  <li>Fixed a few other bugs that had been reported.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
March 13, 2003 - New drop: DEVELOPMENT FOX 1.1.24
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Stuff in this development snapshot.
<ul>
  <li>FXFileList now supports case insensitive as well as case sensitive sorting when
  sorting by names.  It supports two new sort functions for this.</li>
  <li>FXFileList also directly accepts a new message ID_SORT_CASE to toggle case-sensitive
  sorting.  The default is now to sort case-insensitively.</li>
  <li>The sort functions have been renamed with more human-readable names.</li>
  <li>FXText and FXTextField now support a new ID_DELETE_ALL message.  As the name
  indicates, it deletes all the text in the widget.</li>
  <li>Some initial support for <a href="http://www.openwatcom.org/">OpenWatcom C++</a> has been added.
  more to come in the future.</li>
  <li>FXRuler is progressing.  You can get an idea what it will look like now.</li>
  <li>FXGLVisual now thinks a visual with RGBA is OK even if you asked for RGB.
  Some high-end video cards (ATI) support RGBA and no RGB.  For those that do, RGB is
  preferred over RGBA if you asked for RGB.</li>
  <li>FXFileDialog's right-mouse menu offers case-ignore as an option; so does PathFinder.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 25, 2003 - New drop: DEVELOPMENT FOX 1.1.23
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Of course, all bugs from the STABLE release are now also fixed in the DEVELOPMENT release.
Other news:
<ul>
  <li>FXDLL should now compile properly.</li>
  <li>FXSettings keys and section names are now no longer allowed to be NULL or empty.</li>
  <li>FXCheckButton gained a new option, CHECKBUTTON_PLUS, with which you can change
  the appearance from a check to a plus or minus box similar to FXTreeItem;
  the intended use of this feature is to connect FXCheckButton to a layout manager,
  whereby the layout manager can be collapsed or expanded via the ID_TOGGLE_SHOWN
  method; for this reason the plus-sign is shown when the state is FALSE, i.e. when
  the associated layout manager is <em>collapsed</em>.</li>
  <li>FXTable has two new API's, getMinRowHeight() and getMinColumnwidth() which compute
  the minimum height or width of a row or column in the table based on the contents of the
  items; this substantially simplifies setting up a sensible initial table display.</li>
  <li>FXTableItem's getHeight() and getWidth() now yield sensible values; your subclass
  of FXTableItem should overload them if the size computation needs to be different.</li>
</ul>
There have been a few changes to the FXGLViewer:
<ul>
  <li>Dropped the SURFACEPROJECTION and SURFACEPROJECTION display lists; the reasons were
  two-fold: first, display lists may be shared between FXGLViewers and it was never
  clear whose projection matrices were in the display lists; second, there is a better
  way to obtain the desired effect in the form of the OpenGL 1.1 Polygon Offset
  extension; since OpenGL 1.0 is ancient history now, the time seemed ripe to ditch
  the old method.</li>
  <li>FXGLViewer now supports a gradient background; this is simply enabled by
  setting the top and bottom background color to different values; setting them
  to the same values will revert to the uniform background mode.
  You can connect an FXColorWell to the upper and lower gradient color and control
  the gradient easily from your GUI.
  The default gradient background is a blue-sky; most people would like this I hope.</li>
  <li>The VIEWER_LOCKED feature has been removed; we found no one was ever using
  it and it was not so useful anyway.</li>
  <li>We now try a little bit harder getting the OpenGL context into a known
  state before calling scene->draw().  This is partly because we need it for
  the gradient background drawing.
  <li>Support for shift-click and control-click selection, as well as shift-lasso
  and control-lasso is now being improved; the FXGLViewer can distinguish between
  them based on mouse movement: if the mouse moves, its a lasso otherwise its a
  click.  While not entirely finished yet, the basic idea is to give FXGLViewer
  similar callbacks as the list widgets, and give the application more control
  over the interpretation of the mouse events.</li>
</ul>
Other issues:
<ul>
  <li>Slight problem in FXLabel and a few similar widgets fixed: FXString now
  remembers its length, and this should be used to find the end of the string.</li>
  <li>Fixed almost all compiler warnings (Linux, GCC 3.2).  <em>ANY warnings</em>
  still left in the code are <em>intentional</em>!  Don't complain about them,
  they will be fixed when the time comes!!</li>
  <li>Adie is still broken, sorry!  Use the version in the <em>STABLE RELEASE</em>!
  It is still under development, but I'm kind of busy right now so its taking more
  time than I would have liked.</li>
  <li>PathFinder gained some nice Preferences Panel; more is coming.  The current
  version of PathFinder is not finished, but the functionality that's there
  is stable and solid.</li>
  <li>The initial precision in the FOX calculator has been dropped to 15 digits;
  some people complained about roundoff errors (of course, double precision is
  only accurate down to about 16 digits so roundoff errors in the 16th digit
  are to be expected).  I dropped the precision down to 15 because I don't like
  to explain this repeatedly!</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 25, 2003 - New drop: STABLE FOX 1.0.34
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
Over the course of the last week, a number of minor issues have surfaced which
are now fixed.
<ul>
  <li>FXFileDialog now sets both anchor and current file to the same when you suggest an
  initial filename when opening a file.  Thus, a sunsequent shift-click in multiple select
  mode now indeed highlights all files between the suggested selection and the one you
  click on; a minor thing but an annoyance to some.</li>
  <li>FXTextField could not easily tolerate contents exceeding a few thousand characters;
  this was the result of both X11 and WIN32 internally working within a 16-bit coordinate
  system; this caused trouble drawing and highlighting the text inside FXTextField.
  The fix to figure out which characters of the string have a remote possibility of
  falling inside the visible area, and then only drawing those.  As a side-effect,
  the amount of data in the drawing protocol is now also substantially less in such cases
  resulting in faster drawing.</li>
  <li>An accelerator Ctl-A has been added to FXFileDialog to select all files.  Many
  people will find this convenient.  Also, you can select all files from the righ-mouse
  popup menu.</li>
  <li>The test in FXText in API extractStyle() and extractText() was a bit too strict;
  it is not necessary for the return buffer to be non-NULL if the amount of text to be
  extracted is zero-length.</li>
  <li>A small typo has crept in FXRex in the match() API; a forward case-insensitive
  match would sometimes not work correctly.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 22, 2003 - New drop: STABLE FOX 1.0.33
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Minor bug in FXFileDialog: when in multiple file selection mode, FXFileDialog::getFilename()
  was not returning a sensible value.  This caused various kinds of mayhem in different
  places.  The new implementation returns FXString::null when no files were selected, or
  returns the first selected file in multiple selection mode, or the value in the text box
  when in single selection mode.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 19, 2003 - New drop: STABLE FOX 1.0.32
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Updated FXFileList; when no extension is bound, the file extension string becomes the extension of the file name.  This permits sorting by extension even for files with no association.</li>
  <li>Fixed bug in FXText; space-terminated last line could not be clicked by mouse.</li>
  <li>Bug in FXRex fixed; incorrect behavior in forward match case-insensitive literal string.</li>
  <li>Wrong callback message type in FX4Splitter.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 15, 2003 - New drop: DEVELOPMENT FOX 1.1.22
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Updated FXDirList for unlimited path lengths. We found MAXPATHLEN to be exceeded in some case, just like FXFileList. Also, FXDirList now properly lists drives under Windows. Periodic scanning now happens non-recursively.</li>
  <li>Renamed FXTreeList::sortItems() to FXTreeList::sortRootItems().</li>
  <li>Added API's to move items around in FXTreeList.</li>
  <li>Added API's to move items around in FXList and FXIconList.</li>
  <li>Added API's to FXSpinner to set arrow colors.</li>
  <li>Added new API's for loading DLL's or dynamic libraries:
      <ul>
        <li>fxdllOpen(). Opens a DLL with given name, returning a handle.</li>
        <li>fxdllClose(). Closes DLL with the given handle.</li>
        <li>fxdllSymbol(). Returns symbol in the DLL with the given handle.</li>
      </ul>
    </li>
  <li>This has only been coded for Linux and Windows. Other platforms will still need some work. Note that fxdllOpen() may be called multiple times on the same library name. We're counting on the underlying O.S. to reference count (Linux and Windows both do!).</li>
  <li>Added API to FXApp to return drag window. This may be useful to determine which window is currently a drag source. Also added API to FXApp to see if FXApp was already initialized.</li>
  <li>Added API to FXFile to return root of a path. On UNIX, this is only "/" but on Windows this may be something like "c:" or "\\".</li>
  <li>Fixed FXString::vformat().
  <li>In a few days, fox-toolkit.org may go down for an unspecified amount of time as my DSL provider has gone under. Grab it while you can. Otherwise, visit the mirror site:</li>
      <ul>
      <li>FTP:     ftp://fifthplanet.net/pub</li>
      <li>HTTP:  http://www.fifthplanet.net/fox/fox.html</li>
      </ul>
    </li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 9, 2003 - New drop: STABLE FOX 1.0.30
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Minor bug fix:- fixed FXString::vformat(); vformat() uses vsnprintf() if available, vsprintf() otherwise. The former is buffer-overrun safe. Some systems have different symantics for vsnprintf(), and FOX now compensates for this.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
December 29, 2002 - ANNOUNCEMENT
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <p>Due to my ISP (directvdsl) going belly-up, the FOX web-site may be temporarily unavailable sometimes.
  If this happens, point your browser to the mirror site:</p>

  <p>FTP:     ftp://fifthplanet.net/pub<br>
  HTTP:  http://www.fifthplanet.net/fox/fox.html</p>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
December 23, 2002 - New drop: STABLE FOX 1.0.29
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Fixed drawing bug in FXTreeList.  Drawing with TREELIST_SHOWS_BOXES but no </li>
  <li>TREELIST_SHOWS_LINES was all messed up.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
December 5, 2002 - New drop: DEVELOPMENT FOX 1.1.21
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Added new API's to FXString:
    <ul>
      <li><b>substitute()</b>  substitute one substring by another.</li>
      <li><b>contains()</b> count possibly overlapping occurences of a substring in the string.</li>
    </ul>
    There are several overloads for these functions.
  </li>
  <li>Clarified some documentation in FXApp, FXWindow.</li>
  <li>Updated FXFileList to allow it to work with arbitrarily long file names, user names, group names, and directory names.  Some people had paths longer than MAXPATHLEN and this caused problems.</li>
  <li>Moved JUSTIFY_XXX options from FXLabel to FXFrame; various subclasses of FXFrame use these flags (but FXFrame itself does not, as it has no contents!).</li>
  <li>Added support for JUSTIFY_XXX in FXImageFrame.</li>
  <li>Added API FXFile::linkinfo(), which stats the link and not the file the link refers to.</li>
  <li>Added flags TEXTFIELD_AUTOGRAY and TEXTFIELD_AUTOHIDE to FXTextField, enabling it to automatically gray (or hide) when its target does not respond to SEL_UPDATE messages.  This is very useful when messages are routed around, e.g. via MDI widgets.</li>
  <li>Added new widget, FXTriStateButton, which can assume three states (false, true, and maybe), where the maybe state is usually only reached programmatically or by means of SEL_UPDATE handlers.  You can use this widget whenever your application calls for a toggle type button which may have indeterminate state.</li>
  <li>Fixed small buglet in FXTextField; in rare cases, cursor position was outside of text.</li>
  <li>Fixed bug in fxcpuid() implementation:- according to SYSV x86 ABI, EBX is used when compiling PIC for shared libraries; the initial implementation of fxcpuid() was usurping EBX for other uses.  The x86/Linux-only API fxcpuid() returns some flags which detect various interesting features of your x86 CPU, such as SSE, SSE2, MMX, MMXEX, 3DNOW, 3DNOWEXT, and TSC presence.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
November 20, 2002 - New drop: STABLE FOX 1.0.28
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>A minor bug has been discovered in the BMP reader; sanity checking code erroneously rejected 4 bit/pixel RLE compressed bitmaps; apparently, these are pretty rare :-).</li>
  <li>Fixed small buglet in FXOptionMenu:- GUI Update becomes disabled after manipulation of the option menu in some scenarios.</li>
  <li>FXSettings had spelling error in warning message.</li>
  <li>Small bug in FXFile::simplify(); simplify("c:\..\") became "c\" instead of "c:\".</li>
</ul>



<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
November 13, 2002 - New drop: DEVELOPMENT FOX 1.1.20
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>Added nifty API's to FXImage:
    <ul>
      <li><b>fill()</b>  fill image with a constant color.</li>
      <li><b>hgradient()</b> fill image with a horizontal gradient using two colors.</li>
      <li><b>vgradient()</b> fill image with a vertical gradient using two colors.</li>
      <li><b>gradient()</b> fill image with a bi-linear gradient using four different colors.</li>
      <li><b>fade()</b> fade an image to a given color by a certain factor.</li>
      <li><b>blend()</b> blend (transparent) image over a given color.</li>
    </ul>
    Stay tuned for more image manipulation API's!
  </li>
  <li>Added performance (LINUX/GCC/GAS/x86 only) API's:
    <ul>
      <li><b>FXlong fxgetticks()</b> reads Pentium/Athlon time stamp counter register.  This register increments one unit each single clock (for example on my Athlon 1600+ this means 1,400,000,000 ticks/second!).  Very useful to settle heated arguments about whose code is faster :-) </li>
      <li><b>FXuint fxcpuid()</b> determines presence of <em>"interesting"</em> CPU features such as MMX, MMXEX, 3DNOW, 3DNOWEXT, SSE, SSE2, and presence of Time Stamp Counter register.
      You can use this function if:
      <ul>
        <li>You're using GCC/GAS/x86.</li>
        <li>You want to whip up some cool inline MMX, 3DNOW, or SSE(2) code.</li>
      </ul>
      If you're not using GCC and GAS, you'll have to do without!
    </ul>
  </li>
  <li>Fixed small introduced bug in FXTextField:- when replacing selection, old cursor position was sometimes out of range.</li>
  <li>Fixed small problem in FXFile.  FXFile::absolute("c:\..\") was yielding "c\" instead of "c:\".</li>
  <li>Added feature to FXHeader:- when clicking on split between captions, a SEL_CLICKED message is sent to the target.</li>
  <li>Added feature to FXIconList.  When receiving a SEL_CLICKED message from FXHeader, FXIconList recomputes the minimal required space for the caption, given the current list of items in it.</li>
  <li>Made slight change to behaviour of FXTextField.  When replacing selection by another string, only a single callback message now results.</li>
  <li>Added getNumOptions() API to FXOptionMenu. FXOptionMenu also sends a SEL_COMMAND message now after completion of the interaction.  Also fixed GUI updating of FXOptionMenu.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 30, 2002 - New drop: DEVELOPMENT FOX 1.1.19
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li> Changed workings of FXMALLOC() and co. again; the initial theory, I have to admit, was flawed and impractical; the new workings however are far more practical:
  <ul>
    <li><p>FXMALLOC(ptr,type,no)<br>
    Allocate no elements of type to the specified pointer.
    Return FALSE if size!=0 and allocation fails, TRUE otherwise.
    An allocation of a zero size block returns a NULL pointer.
    </li>
    <li><p>FXCALLOC(ptr,type,no)<br>
    Allocate no elements of type to the specified pointer, and clear this
    memory to zero.
    Return FALSE if size!=0 and allocation fails, TRUE otherwise.
    An allocation of a zero size block returns a NULL pointer.
    </li>
    <li><p>FXRESIZE(ptr,type,no)<br>
    Resize a previously allocated block of memory.
    Returns FALSE if size!=0 and reallocation fails, TRUE otherwise.
    If reallocation fails, pointer is left to point to old block; a reallocation
    to a zero size block has the effect of freeing it.
    </li>
    <li><p>FXMEMDUP(ptr,type,src,no)<br>
    Allocate and initialize memory from another block.
    Return FALSE if size!=0 and source!=NULL and allocation fails, TRUE otherwise.
    An allocation of a zero size block returns a NULL pointer.
    </li>
    <li><p>FXFREE(ptr)<br>
    Free a block of memory allocated with either FXMALLOC, FXCALLOC, FXRESIZE,
    or FXMEMDUP.
    It is OK to call free a NULL pointer.
    </li>
  </ul>
  </li>
  <li>Fixed harmless bug in FXTable.</li>
  <li>Removed radio and check behavior from FXMenuCommand; this functionality is now assumed by FXMenuRadio and FXMenuCheck.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 26, 2002 - New drop: DEVELOPMENT FOX 1.1.18
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Fixed argument test in FXText:- NULL text argument is allowed if size is zero.</li>
  <li>Fixed drawing bug on MS-Windows in FXMenuRadio.</li>
  <li>Fixed potential buffer overrun in FXFont.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 25, 2002 - New drop: DEVELOPMENT FOX 1.1.17
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Changed FXMALLOC(), FXRESIZE(), FXCALLOC() macros very slightly; FXCALLOC() and FXMALLOC() new always return a NULL pointer and a FALSE return value when a zero size is passed; previously, this depended on the underlying malloc() implementation of the operating system, and operating systems varied in this behaviour. Also, FXRESIZE() returns a NULL pointer and FALSE return value when resizing to zero size; again, operating systems varied in this behaviour. With these changes, it works the same on all operating systems.</li>
  <li>FXIconList, FXList, FXTreeList was trapping KEY_Delete; this prevented a KEY_Delete from being used as an accelerator.</li>
  <li>FXTable was not compiling with Borland C++ builder. Fixed.</li>
  <li>FXMetaClass destructor was not releasing hash table properly; moreover, was causing divide by zero in a few cases.  The new implementation releases all memory and can't possibly divide by zero, because the modulo operator has been replaced by bit-wise and; this is possible because the hash table is always a power of two.</li>
  <li>FXFile Dialog has accelerator for delete file.</li>
  <li>All messages should now use the new FXSEL, FXSELTYPE, and FXSELID macros. Note FXSEL has the arguments reversed, and the argument order is now the same as the one used in FXMAPFUNC and FXMAPFUNCS; hopefully, this is easy to remember.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 8, 2002 - New drop: DEVELOPMENT FOX 1.1.16
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Regressed API's to return <b>FXString</b> rather than <b>const FXString&</b>, for the following reasons:
    <ul>
      <li>Not consistent.  Some API's *compute* their returned FXStrings, so you're always going to have some API's which can never return const FXString& anyway; but conversely ALL API's can return FXString no matter what, so if its consistency we want then the old way is the only way!</li>
      <li>I don't want to encourage people hanging on to pointers into the private member data of classes; see previous mail on this topic; this reduces my ability to change internal representations of widgets.</li>
      <li>Its not as painful (in terms of run time) as it looks:- many access functions are inlines, and the compiler can decide to eliminate a few copy constructors (if not automatically, then at least with some encouragement like the option "-felide-constructors" for GCC ).</li>
      <li>Once all widgets store FXWString internally, you will really thank me for this:- because if we do it the old way, your software can remain unmodified (thanks to conversion operators between FXString and FXWString), but if we go the via the "const FXString& " route then all the software which tries to take advantage of your trick would have to be rewritten!</li>
    </ul>
  </il>
  <li>Added API's to FXTable to control item appearance:
    <ul>
      <li>setItemJustify() changes justification</li>
      <li>setItemIconPosition() changes icon position relative to the text</li>
      <li>setItemBorders() changes item's border style</li>
      <li>setItemStipple() changes item's stippling</li>
    </ul>
  </li>
  <li>Added patch from Petri Hodju for FXToggleButton's TOGGLEBUTTON_KEEPSTATE implementation.  When this flag is passed to FXToggleButton, the button stays pressed if the state is TRUE.</li>
  <li>Removed __FXMETACLASSINITIALIZER__ from FXObject.h.  FXMetaClass is now made into a proper class instead of a struct.  At startup time, the FXMetaClass's constructor adds the class to the hash table of meta classes, and at termination time the FXMetaClass's destructor takes the class back out.<br> This means if you build DLL's with FOX classes in them loading and unloading the DLL will properly add or remove the class names from the hash table.  <br> This will allow objects to be serialized/deserialized even if they're in a DLL! The only thing left to do is to use the escape code in FXStream to actually load the DLL and we have a proper <b>Plug-In</b> architecture.</li>
  <li>Fixed fxmalloc(), fxcalloc(), and fxresize() so that they return NULL when the desired size is zero; straight malloc() will not do that on all systems.</li>
</ul>



<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 3, 2002 - New drop: STABLE FOX 1.0.26
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Janusz Ganczarski found a very minor bug in the PCX loader code; some PCS images failed to load because of this.</li>
  <li>Fixed bug in FXFile (MS-Windows) in recursive copy routine (see previous announcement).</li>
  <li>Bug in FXToolbar getDockingSide().</li>
  <li>Fixed some stuff in FXTable w.r.t. spanning cells.</li>
  <li>Fixed some stuff related to file time in FXDirList; also, handle was not being closed at the right time, preventing timely directory refreshing; finally fixed sporadic crash.</li>
  <li>Window coordinates and size not updated at the right time (MS-Windows) relative to the SEL_CONFIGURE message being issued.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
October 2, 2002 - New drop: DEVELOPMENT FOX 1.1.15
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Changed internal representation of FXString; the end-of-string character ('\0') is no longer special and all possible bytes are now allowed.</li>
  <li>Added new API's to FXString:
    <ul>
    <li><b>length(int)</b> changes the length of the string buffer to the given size.</li>
    <li><b>section()</b> extracts num segments starting from start from a string delimited by delim.</li>
    <li><b>simplify()</b> simplifies white-space in string.</li>
    <li><b>before()</b> returns characters before n-th occurrence of ch, starting from begin.</li>
    <li><b>rbefore()</b> returns characters before n-th occurrence of ch, starting from end.</li>
    <li><b>after()</b> returns characters after n-th occurrence of ch, starting from begin.</li>
    <li><b>rafter()</b> returns characters after n-th occurrence of ch, starting from end.</li>
    <li><b>find()</b> searches for character, starting from begin.</li>
    <li><b>rfind()</b> searches for character, starting from end.</li>
    <li><b>find()</b> searches for n-th occurrence of character, starting from begin.</li>
    <li><b>rfind()</b> searches for n-th occurrence of character, starting from end.</li>
    <li><b>find_first_of()</b> searches for first character in a set, starting from begin.</li>
    <li><b>find_last_of()</b> searches for first character in a set, starting from end.</li>
    <li><b>find_first_not_of()</b> searches for first character NOT in a set, starting from begin.</li>
    <li><b>find_last_not_of()</b> searches for first character NOT in a set, starting from end.</li>
    <li><b>escape()</b> returns a string where all special characters are escaped.</li>
    <li><b>unescape()</b> returns a string where all escaped characters are turned back into special characters.</li>
  </ul>
  </li>
  <li>Some API's of FXString are now removed:
    <ul>
      <li><b>extract()</b> is replaced by the much more flexible section().</li>
      <li><b>findf()</b> is replaced by find().</li>
      <li><b>findb()</b> is replaced by rfind().</li>
      <li><b>size()</b> no longer exists.</li>
      <li><b>size(int)</b> no longer exists.</li>
    </ul>
    Note that these changes give FXString an API more consistent with the standard <b>std::string</b> class.
  </li>
  <li>New API's to replace some old ones:
    <ul>
      <li><b>fxparseAccel()</b> replaces the old fxparseaccel().  The new flavor takes an FXString parameter.</li>
      <li><b>fxparseHotKey()</b> replaces the old fxparsehotkey().  The new flavor takes an FXString parameter.</li>
      <li><b>fxfindHotKey()</b> replaces the old fxfindhotkeyoffset().  The new flavor takes an FXString parameter. Also, the new version correctly counts when &amp;&amp; occurs in the string.</li>
      <li><b>fxstripHotKey()</b> replaces the old FXString::extract().</li>
    </ul>
  </li>
  <li>Added a new type FXwchar.  This is a wide character for UNICODE.</li>
  <li>Added a new class FXWString.  This is currently under development, and should NOT be used at this time.</li>
  <li>Added a new class FXTextCodec. FXTextCodec's subclasses will provide (state-less) conversions between UNICODE and other character sets.</li>
  <li>Made further improvements to FXTable widget.</li>
  <li>Changed many API's in FOX to return <b>const FXString&amp;</b> instead of FXString. This will eliminate a copy constructor in many cases, and thus speed things up a lot.</li>
  <li>Added option MBOX_SKIP_SKIPALL_CANCEL to FXMessageBox.  Handy if the same dialog can appear for multiple errors.</li>
  <li>Fixed core dump bug in PathFinder.  Destructor was deleting uninitialized data.</li>
  <li>Added help-tag to FXWindow.  Each widget may now have a help tag, which is intended to be a URL for context-sensitive help for widgets and controls.  Utilization of this info is currently up to the programmer.</li>
  <li>Reformatted some web pages for Mozilla.</li>
  <li>Updated some API's to FXArray and FXObjectList.</li>
  <li>Added more error checking into PNG and JPEG loader; a bad image file should not cause an application error anymore, but a simple error code will be returned. Also, the FXImage will be set to empty when a bad file format did not read.</li>
  <li>Fixed bug in FXFile (MS-Windows) in recursive copy routine.</li>
  <li>FXImage, FXIcon, FXBitmap have been made a bit more forgiving when size is 0x0; it no longer terminates the application but creates a 1x1 image instead.</li>
  <li>Changed API's loadPixels() and savePixels() of the various FXImage-derived types to return a boolean which indicates success or failure.</li>
  <li>FXMenuCheck widget added which will draw a check box beside the caption.</li>
  <li>FXWindow::destroy() and FXWindow::detach() will reset FXApp::focusWindow and FXApp::cursorWindow.</li>
  <li>FXDirList bug fixes:- currentitem and anchoritem were left pointing to deleted items in some cases.  Also, directory scanner caused some problems in some cases due to CreateFile() holding handle while FindFirstFile() was trying to open directory for scanning.</li>
  <li>Sublte bug with SEL_CONFIGURE fixed:- on Windows v.s. Unix, the width and height of the widget were different while in the callback.</li>
  <li> Added to FAQ.</li>
</ul>



<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 29, 2002 - New drop: DEVELOPMENT FOX 1.1.14
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  Of course, all bugs found so far in the stable releases have been fixed in the development release.
  <li>Some API's renamed in FXList, FXIconList, FXHeader, FXComboBox and FXListBox:- retrieveItem() has been renamed to getItem(), and replaceItem() has been renamed to setItem(). Its much easier to remember this way.</li>
  <li>FXTable button mode cells now get pressed (thanks to  Alastair Growcott for the patch).</li>
  <li>Added assign() API's to FXString.  Makes it easier to fill FXString with some text.</li>
  <li>Added FXMenuCheck, FXMenuRadio classes.  These will subsume the FXMenuCommand for checked menus and radio menus; FXMenuCommand will just be a command.</li>
  <li>FXMDIClient no longer derived from FXScrollWindow.  This will entail fewer problems.</li>
  <li>FXSeparator class added.  It automatically flips based on width:height ratio.</li>
  <li>Added tag string to FXWindow for on-line help tagging of widgets; help systems may use this to provide context sensitive help for controls or dialogs.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 29, 2002 - New drop: STABLE FOX 1.0.22
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>A slight tweak has been implemented in FXFileList's collating functions:- instead of just sorting based on type, size, etc. it now also sorts on the name if the type, size, etc. are the same.  So if you sort based on e.g. file type, then within each file type, the list is now lexicographically sorted.</li>
  <li>Minor bug with FXShutter widget fixed.  This one shouldn't really have affected anyone.</li>
</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
August 22, 2002 - New drop: STABLE FOX 1.0.21
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Finally, hardware problems over here at fox-toolkit.org seem to have been resolved! Funny thing is, we're not even overclocking!  But nevertheless an Athlon in Alabama in summer on a sunward-facing room has appeared to be a real challenge!</li>
  <li>As of this week, there has been an addendum to the Lesser General Public Licensegoverning the distribution of FOX.  The intent of the change is to make it more practical for applications to link statically against FOX; please refer to the <a href="license.html">license statement</a> for the details.</li>
  <li>Minor bug in FXGLViewer fixed related to image printing.</li>
  <li>Minor buglet in FXTopWindow::setDecorations() fixed.</li>
  <li>FXDriveBox, FXDirBox suffered from uninitialized memory reads:- thanks to valgrind, we found out about this and fixed it.</li>
  <li>Fixed a few bugs in removeRows() and removeColumns() were inconsistent and did not properly deal with with spanning cells.  Also setTableSize was fixed and now initializes cells to be empty, i.e. NULL.</li>
  <li>FXList, FXIconList delete items in reversed order, i.e. starting with the last item. This makes maintaining your own parallel list much easier.</li>
  <li>Fixed problem in FXSpinner.</li>
  <li>Esoteric FXFileList bug fixed (Windows) certain programs (e.g. older version of ws_ftp) set bogus file time on files, this caused FOX to crash.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 25, 2002 - New drop: FOX 1.0.17
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Fixed FXList, FXIconList, FXTable callback. When current item or current row/column is removed, SEL_CHANGED callback is generated.</li>
  <li>Fixed FXPopup menu behavior under Windows.</li>
  <li>Added preliminary support for Digital Mars C++ compiler.</li>
  <li>FXFileList sort by modification date bug was fixed.</li>
</ul>




<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 16, 2002 - New drop: FOX 1.0.15
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>Some patches for Digital Mars C++.</li>
  <li>Only update widgets of new color setting is different from old.</li>
  <li>FXTabItem was using the wrong code to draw itself.</li>
  <li>File time problem retro-ported from development version.</li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 1, 2002 - New drop: FOX 1.1.13
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>Patch from Janusz Ganczarski to add support for 16bpp BMP format files.</li>
  <li>Another patch from Janusz to add support for 32 bit BMP format, as well as some bug fixes to the TARGA image format support.</li>
  <li>Made FXMDIChild draw nicer, by adding interior sunken border.</li>
  <li>Added API's to FXMDIClient for various window placement manipulations.</li>
  <li>Fixed FXMDIClient no loner derives from FXScrollArea. This allows opaque dragging of FXMDIChild windows.</li>
  <li>Adding a FXRuler widget. Ruler widget may be used to place tickmarks and numbers around another widget, for example drawing document; this one will still need lots of work. </li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
July 1, 2002 - New drop: FOX 1.0.14
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>BMP i/o support for 16, and 32 bit, in addition to already implemented 1, 4, 8, and 24 bit BMP images was added.</li>
  <li>Potential infinite loop in FXImage::restore() was fixed.</li>
  <li>In FXMatrix, getNumRows() and getNumColumns() should not depend on child's visibility.</li>
  <li>FXTable: colors should default to normal back color.</li>
</ul>




<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
June 19, 2002 - New drop: FOX 1.1.12
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>Added FXWizard class, and new wizard demo application. </li>
  <li>Added fxparsegeometry() function to parse string of the form:  "[=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>]" Into a width, height, x, and y value. </li>
  <li>Fixed FXProgressBar to be flicker-free when setProgress() is called repeatedly; this is done by directly drawing it in the setProgress() call. </li>
  <li>Added a new widget, FXImageFrame, which may be used for simple rendering of images. </li>
  <li>Split the Adie text editor into multiple top-level windows. This allows a single editor to open any number of documents at the same time. Adie is UNDER CONSTRUCTION right now and NOT FULLY FUNCTIONAL!! </li>
  <li>Added setCancelled() API to FXProgressDialog. </li>
  <li>Added maximize(), minimize(), restore() API's to FXTopWindow. Also added isMaximized(), and isMinimized() API's. The old iconify() and deiconify() has been superceeded by these new API's. The new API's are implemented in terms of the new Extended Window Manager Hints standard. </li>
  <li>New API close() added to FXTopWindow added to close a top level window. The close() API will only close the window after consulting the FXTopWindow's target, if any, whether it is OK to do so. When there is no objection, the FXTopWindow will be deleted. When the last FXMainWindow is closed, the application will receive an ID_QUIT message. </li>
  <li>Polarity of SEL_CLOSED message return value has changed; returning 0 means "no objection" i.e. proceed with the closing. Rationale:- when there is no target, or when the widget's target does not respond, closing the window should proceeed. </li>
  <li>Added drawing a chord arc fill drawing method to FXDCWindow. This augments the pie sector method already present. </li>
  <li>Added polygon region constructor to FXRegion. </li>
  <li>Fixed some idiosyncracies in FXText. When typing to replace a selection with new text, two callbacks, instead of one, were being generated. This implied that a single action needed two undo's to undo it.</li>
  <li>Also fixed was a little quirk that happened when a paste was being performed inside an existing selection. This is now blocked. </li>
  <li>FXTopWindow's now appear where they're supposed to, at least on ICCCM compliant Window Managers; borders are discounted as far as placement of window is concerned. </li>
  <li>A new API isOwnerOf() added to FXWindow which is used inside FXApp to determine whether events are passed to a window or not. The upshot is that modal dialogs can now create non-modal subwindows, and thus events are passed to all windows owned (and ownership is transitive!!) by the modal window, and blocked elsewhere. </li>
  <li>Fixed various focus sublteties, and simplified focus assignment code. The subtleties are for example the assignment of the focus to a child window of a composite, when the focus were to move to the composite. This is useful for mega widgets which need to force the focus on a specific child window when they get the focus. </li>
  <li>Added golden ratio constant in FOX Calculator. </li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
May 12, 2002 - New drop: FOX 1.1.9
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>New FXGradientBar widget is now ready for business! Allows for drag and drop of colors, various color blending features ranging from linear to quadratic, and furthermore horizonal or vertical orientation. </li>
  <li>FXDict, FXMetaClass now deploy a faster, in-lined hashing function. This should translate into slightly faster application startup times. </li>
  <li>Various API's to FXWindow turned into "const" members. </li>
  <li>New API getTempDirectory() added to FXFile. </li>
  <li>FXFileList worked oddly if weird file mod time was found. </li>
  <li>Memory leaks fixed, thanks to valgrind. </li>
  <li>Tentatively added FXGzStream and FXBzStream classes for gzip and bzip2 compressed I/O streaming support. </li>
  <li>FXApp now remembers original display variable passed in. This can be used for later opening of display. </li>
</ul>



<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
April 5, 2002 - New drop: FOX 1.1.8
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>New widget, FXGradientBar, which is used to build color gradient ramps (e.g. for OpenGL texturing...). </li>
  <li>Removed limitation of single FXMainWindow; this means the API FXApp::getMainWindow() has now disappeared. When the last FXMainWindow is closed, the application ID_QUIT is invoked, terminatin the application. </li>
  <li>Behaviour of middle mouse paste in FXText was simplified; this makes a paste of a selection work properly, even if the paste occurs in or near the current selection! </li>
  <li>Introduced name spaces. All FOX API's are now in the namespace "FX", thus the vast number of possible identifier clashes are now avoided; note that a great number of #define's have now been replaced by enum's. </li>
  <li>Renamed FXApp::getRoot() to FXApp::getRootWindow() for consistency. </li>
  <li>Renamed a number of widgets. Various widgets have over the course of time gotten names which did not adhered to the current nomenclature; this made them more difficult to memorize. These widgets have now been renamed for greater consistency:
  <ul>
    <li>FXTooltip becomes FXToolTip</li>
    <li>FXToolbar becomes FXToolBar</li>
    <li>FXScrollbar becomes FXScrollBar</li>
    <li>FXMenubar becomes FXMenuBar</li>
    <li>FXStatusbar becomes FXStatusBar</li>
    <li>FXStatusline becomes FXStatusLine</li>
    <li>FXToolbarShell becomes FXToolBarShell</li>
    <li>FXToolbarGrip becomes FXToolBarGrip</li>
    <li>FXProgressBar becomes FXProgressBar</li>
  </ul>
  </li>
</ul>




<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 26, 2002 - New drop: FOX 1.0.0
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Yes, I went to 1.0!!! Why not? The code has been *very* stable for a while, and its time we called it what it is:- the 1.0 release! </li>
  <li>New API's to FXString. FXString::vscan() and FXString::scan() are API's to parse a string via sscanf-style format conventions. This is very useful in many cases, and obviates the need for some complex coding in the past. </li>
  <li>New API's to FXRegistry (actually, FXSettings). FXSettings::readFormatEntry() and FXSettings::writeFormatEntry() perform sscanf- and sprintf-style access to registry database strings. As with FXString, this obviates the need for complex coding and is very compact and convenient. </li>
  <li>Removed deprecated functions from fxdefs.h. The following functions have been removed: fxprefix(), fxsuffix(), fxexpand(), fxpathname(), fxdirpart(), fxfiletitle(), fxfilepart(), fxfileext(), fxexists(), fxisdir(), fxisfile(), fxbakname(), fxidentical(), fxsplit(), fxshortestpath(), fxupdir(), fxabspath(), fxistopdir(), fxgetcurrentdir(), fxmkdir(), fxgethomedir(), fxsearchpath(). These functions have been moved to the file: fxdeprecated.h and fxdeprecated.cpp. Should your application need them, simply include these two files into your project. Note, the functions above have better maintained, and easier-to-use equivalents in the FXFile namespace. </li>
  <li>A new file, vsscanf.cpp, was added for those systems where vsscanf() and its ilk are not available. Under Linux, and other C99 standard compliant C Libraries, this file is not used. </li>
  <li>Added some missing API's to FXListBox, FXComboBox, and FXTreeListBox; simplified internals of these widgets a bit. </li>
  <li>Fixed some FXDirBox problems; removed reliance on deprecated API's. </li>
  <li>Added a SELECTFILE_MULTIPLE_ALL to FXFileSelector (and FXFileDialog). This mode allows selection of a mix of files and directories. The mode SELECTFILE_MULTIPLE works as before, and selects only multiple, existing filename names (and no directories). </li>
  <li>Fixed FXPopup focus navigation:- hidden menu items should not be focused upon. </li>
  <li>Fixed little biddy problem in FXText and style settings. </li>
  <li>Fixed text in FXReplaceDialog and FXSearchDialog; was not proper.</li>
  <li>Fixed little problem in FXRex::substitute(). </li>
  <li>Fixed some minor configure issues. You can pass overrides for JPEGLIB, PNGLIB, TIFFLIB, ZLIB, and MATHLIB. This is useful if you want to force a different library than the one found in the usual places (for example if you loaded a newer version than your system came with, or want to force static linking, etc.). Also added a test to search for vsscanf() function in your C library. </li>
  <li>Added quick-and-dirty, ad-hoc, "hack" to Adie for syntax coloring. It still piggy-backs on the timer. However, the dialogs to set up highlight styles, language recognition, and syntax patterns is essentially complete. You can now add and remove, and edit syntax patterns fairly reliably. I added a sample C++ and C syntax file you can drop into your .foxrc/Adie registry (or in any of the usual global registry places /usr/lib/foxrc/Adie, /usr/local/lib/foxrc/Adie, etc.) to kick-start some patterns to get you started. The stylizer can now also use patterns with back-references, or capturing parentheses; I will still figure some way to color captured parentheses some day as well.</li>
  <li>WANTED: syntax patterns for various languages: PERL, RUBY, PYTHON, HTML, XML, Pascal, Eiffel, and whatever else you can think of. I will collect these patterns and distribute them in future versions of Adie.</li>
</ul>



<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
February 5, 2002 - New drop: FOX 0.99.193
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->
<ul>
  <li>Added new mode SWITCHER_HCOLLAPSE and SWITCHER_VCOLLAPSE to FXSwitcher; these will cause the FXSwitcher to collapse its default height or width to the currently active child's height or width, respectively. </li>
  <li>Fixed bug in FXDriveBox. The option to report errors went away as FXDriveBox does not set the current drive anymore:- it just sends a message. </li>
  <li>Fixed declaration in FXStringDict API: API's yield const strings. </li>
  <li>Added support for SGI IRIS RGB Image input and output, as well as corresponding image and icon classes. </li>
  <li>Completed editing of style-entries in Adie (language mode and pattern panels not complete yet). Minor style-coloring engine improvements. </li>
  <li>Incorporated documentation man-page for Adie, PathFinder, and Calculator. </li>
  <li>Fixed bug in FXText::changeStyle. </li>
  <li>Added missing API's to FXListBox, FXTreeListBox, FXComboBox. </li>
  <li>Fixed grooved border drawing. </li>
  <li>Relaxed syntax of section and group name in FXSettings database [was too strict earlier for no good reason]. </li>
  <li>FXWindow issues SEL_MOTION events. </li>
  <li>FXRex properly observes REX_NEWLINE for \D, \s, \W, and so on. </li>
</ul>


<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
January 8, 2002 - New drop: FOX 0.99.189
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
<p>
<!--- TOPIC TITLE -->

<ul>
  <li>Optional style buffer was added.  FXText takes roughly same amount of memory/text, unless style buffer is turned on in which case memory usage doubles to store the style information.</li>
  <li>Style table support was added.  You can specify up to 127 different styles, where a style is a combination of fg/bg colors for normal, selected, or highlighted display, i.e. 6 different colors.</li>
  <li>New API's added to manipulate contents of the style buffer. First, normal API's like appendText() and so on now have an equivalent appendStyledText(). The style is a single value 0-127 indexing into style table, to which 128 may be added to achieve underlining. This makes it very easy to add colorful text....</li>
  <li>Its still possible I will add flags to the style table for underlining instead of use a bit in the style buffer; I don't know yet...</li>
  <li>changeStyle() changes the style w/o affecting the text.</li>
  <li>Despite the style additions, drawing has actually been speeded up quite a bit, as some old crap has been removed:
    <ul>
      <li>drawing is split into painting the background and painting the text over it.  This may alleviate some problems on SGI with XDrawImageString.</li>
      <li>drawing no longer loops over virtual characters, it just rect-fills the tail-end of a line; this is of course much faster.</li>
      <li>even better, drawing also accumulates runs of spaces and tabs into a single rect-fill; needless to say that is also much faster.</li>
    </ul>
  </li>
  <li>FXText now maintains a c&