| News [Remove Frame]

Febuary 8 - FOX STABLE 1.4.1

- Fixed bug in fxsaveJPG() routine; saving JPEG images didn't work properly.
- Fixed problem with ControlPanel crash. ControlPanel would crash when registry was empty.

Febuary 7 - FOX STABLE 1.4.0

Well, after another last-minute feature got snuck in over the weekend, I'm pleased to present the new major stable release, the FOX Toolkit version 1.4!
This release is going to make a lot of people happy, since we've accomplished quite a bit of work since the 1.2 release!

- Smooth dragging and side-by-side docking of toolbars and dockable panels has been implemented.
- A new class FXIconSource facilitates loading and scaling of images or icons, from a large variety of image formats.
- The file selection widget now support thumbnail previewing mode. If a filename is recognized as an image, and the thumbnail mode is in effect, the image is loaded and scaled down to serve as the thumbnail.
- Support was added for shaped windows, allowing you to make non-rectangular windows.
- Thread support was augmented with synchronization primitives and a global application mutex was added to deconflict worker threads and GUI thread.
  Also, a new class FXGUISignal serves to wake the GUI thread from a worker thread.
- Editable cell support were added for the Table widgets.
- SUN Raster image and Amiga IFF image file formats have been added.
- Upgraded to XDND release 5, the latest specification of the XDND standard; interoperability with OpenOffice has been accomplished.
- Exception handling for common resource errors was introduced, allowing FOX programs to gracefully handle various runtime errors like running out of window handles and bitmaps and so on.
- Added alpha channel support for TGA format.
- New 7 Segment Display widget was added. It is arbitrarily scalable.
- Ruler widget was completed. This is a document ruler widget a-la MS-Word.
- New class added for support of Memory Mapped Files. This sure helps with manipulating large blocks of data in a platform-independent way.
- New class FXSplashWindow has been added. It uses the new shaped window facility to present an attractive, arbitrarily shaped introduction window for your application.

Febuary 7 - FOX DEVELOPMENT 1.4.0

- Added thumbnail icon previewing mode to FXFileList, when set in big icon mode. This feature uses the new FXIconSource for the loading and scaling.
  It is quite fast for loading icons, but a bit tardy for directories with large collections of photographs.
- Changed setIcon API's in the various list widgets. An optional owned flag is now passed. If the old icon was owned by the list item, it is deleted, and replaced by the new icon. If the new icon is set to be owned, it will be deleted when the list item is deleted, or when it in its turn is replaced when a new icon is set. As a special case, resetting the same icon does not delete the icon but just changes the owned flag; this allows the application to "reposses" or "disown" the icon.
- Also added a new class, FXIconSource, which embodies the knowledge of various image file formats. It has three main API's: loading an icon from a file, loading an icon from a reswrapped stream, or loading an icon from an already opened FXStream.
  These API's are in turn invoked by three other API's, which can load and scale an icon down to a certain size, using either the fast image rescaler or the slower high-quality scaler.
  These six API's are duplicated for loading images instead of icons.
  Finally, the core loading API's are virtual so that the FXIconSource may be subclassed to provide additional image format support.
- Split off FXIconDict into its own class, and reorganized it to use the new FXIconSource class. Consequently a set of API's has been added to FXIconDict to set/get the FXIconSource.
  FXIconDict manages the lifetime of the FXIconSource object it uses; initially, it creates its own icon source.
- Every time I explain the new toolbar system to someone, I say "dock site" when I meant FXToolBarDock. Obviously, the latter is the wrong name. As of today, there is another reason why this name is not ideal and that is that I have added another class, FXDockBar, which is basically a general- purpose FXPacker with docking capabilities. FXToolBar now derives from that, adding just the reorientation capabilities to the FXDockBar's capabilities.
  So now we have a general purpose packer that can be floated, we need a different- looking handle to move it around, and indeed, that is another class now which is another flavor of FXToolBarGrip called FXDockTitle. This serves as both decorative title as well as a grip for moving the bar.
  We reserve the toolbar grip for small handle-bars inside FXToolBars.
- FXMenuTitle now pops its FXMenuPane to the side depending on where the FXMenuBar containing the FXMenuTitle is docked. The idea is to prevent obscuring the other FXMenuTitles and to try and make sure the mouse is not over the menu pane when first popped up; the latter is potentially dangerous since the risk exists of accidentally invoking a menu option by releasing, without movement, the mouse button [under normal circumstances pressing and releasing the mouse lets the panel stay up; but if the panel appears right under the cursor, a menu option may be invoked instead].
- A few more toolbar docking issues; first, toolbars which are stretched should undock only when their default size sticks out, or oscillation will result. Next, new API's have been added to FXToolBarDock which adjust the layout options of the remaining items in the dock when toolbars are undocked or docked.
  Finally, when releasing the mouse in the toolbar grip, the toolbar was not docking at the same place as it was when the timer expired. This has now been fixed.
- Refactored the code a bit between FXToolBar and FXDockSite. Its FXDockSite's responsibility to know about the interpretation of the layout issues of the toolbar inside of itself; this means FXDockSite needs to be informed when toolbars dock and undock, or are moved around. It falls upon FXToolBar to find which dock should be attempted, and to determine based on heuristic fudge constants when something docks or undocks. We now have a single internal function which decides dock/no dock. While not perfect, it can be counted upon to give the same answer solely based on the relative relationships of toolbar and dock, regardless of whether we're docking or undocking. It is hoped that this prevents oscillation as much as possible.
- Finally, we have a new option in the right-mouse popup menu over FXToolBarGrip which gives the user the ability to flip the orientation of the toolbar without having to dock it.
- Fixed bug to allow dragging even when no alternate parent has been specified; you should be able to reorganize the layout inside a dock site even if floating is not an option.
- Hold Control key while dragging toolbars to prevent docking; this allows parking toolbars near edges of the main window where they would otherwise have docked.
- Drag and drop between FOX and OpenOffice works too!
  OpenOffice appears to be using XDND 5. also. I've managed to drag both text from Adie as well as JPEG image files via PathFinder into OpenOffice; I think I may get used to this!.
- Fixed bug in drawEllipse() on Windows; thanks to Mauro Zecchini for discovering this problem.
- FXFile::search() now expands environment variables (e.g. $HOME) and user names (e.g. ~user) in directories from the search path.

Januari 31 - FOX DEVELOPMENT 1.3.26

- Upgraded to XDND version 5 standard. Verified interoperation between KDE and FOX, as well as GTK and FOX. using application/x-color drag. Unfortunately, GTK does not accept color drags from FOX, but FOX does accept color drags from GTK. The problem is GTK, since it doesn't accept color drags from KDE either.
  XDND version 5 brings a final confirmation in response to endDrag(). It is possible that the drop target, in processing the drop, encounters some sort of error. The XDND 5 implementation in FOX allows the drop target to call acceptDrop(), indication which action the target DID manage to perform.
  For example, when attempting to move a file from one place to another, the drop target may accept a drop but be unable to perform it [e.g. running out of disk space]. Returning DRAG_REJECT will allow the drop target to tell the drag source it was unsuccessful, and that it should remove the original file
  Note that we used to perform such a thing by trying to obtain TWO DND data's from the source, the real data and NULL data using the "DELETE" atom.
- FXSettings, doesn't quote values unless leading and trailing spaces or special characters in it.
- Updated Control Panel with capability to set file bindings; thanks to Sander for this!
- Minor tweaks to toolbar dragging.

Januari 30 - FOX DEVELOPMENT 1.3.25

- Changed algorithm that determines when a toolbar docks. For a horizontal dock site, the new algorithm docks the toolbar when the upper or lower edge of the bar falls inside the dock (with a slight amount of fudge since dock sites may be collapsed to 0 pixels when there's no bar inside), and when the bar doesn't stick out too much (mostly overlaps with the dock horizontally).
- Also added some small icons to the toolbar grip docking menu.
- Implemented workaround for grab-lost problems which happen under X11 when a window which is grabbed is docked or undocked. The workaround appear to really kill the issue dead and the opaque-dragging toolbars work just super now.
- LAYOUT_DOCK_NEXT and LAYOUT_DOCK_SAME options conflicted with other layout options. One of the two reserved flag bits has now been used.
- Removed the undock timer. Undocking now happens immediately, but docking is still done with a timer since we shouldn't dock just casually dragging a toolbar across a dock site by accident.
- Docking back now happens not only when hovering near a dock area, but also when you release the toolbar grip near a dock area.
- FXMenuTitle now pops its FXMenuPane besides itself instead of below, if the menubar is oriented vertically.
- Fixed SUN Solaris build issue with FXGUISignal class.

Januari 28 - FOX DEVELOPMENT 1.3.24

- Reintroduced FXTextCodec's. These were not be part of official 1.4 API, but apparently were being used by the FOX based SWT Widget Set for the Eclipse Project. Note that FXWString really is permanently gone:- FOX 1.5 will take a different approach to unicode support.
- Fixed Borland C++ build issues and some Borland C++ specific compiler warnings.
- Fixed Visual C++ build issues.

Januari 27 - FOX DEVELOPMENT 1.3.23

- Added new class, FXGUISignal, which allows an FXThread to awaken the FOX GUI and cause it to run some callback message handler. Any number of FXGUISignals may be installed.
- Changed FXToolBar class for docking/floating behaviour against FXToolBarDock.
- Added new class called FXToolBarDock. FXToolBarDock implements rearranging of FXToolBars inside of it. FXToolBarDock is meant to be placed against the sides of an FXTopWindow where docking of toolbars and menubars is to be allowed. FXToolBarDock arranges FXToolBar in multiple galleys or rows. Each galley can have one or more FXToolBar widgets parked side-by-side.
  When space runs out, FXToolBarDock adjusts the number of toolbars on each galley by placing the last bar on the galley onto the next galley down until each galley fits.
- Added new API's to FXUndoList and FXCommand to allow merging of undo records. The undo records can be made mergeable by implementing canMerge() and mergeWith() API's in your subclass of FXCommand. FXUndoList uses these to merge two records when adding a new FXCommand to the undo list.
- Added before() and after() API's to FXWindow to allow testing of order of sinbling windows.
- Changed reparent() function to have extra argument. The new reparent() API makes it possible to insert a widget at any location in the widget tree with a single call. If the widget keeps the same parent, all that happens is a layout recalculation; otherwise, the widget is reparented using a call to the native window interface. The old linkBefore() and linkAfter() API's are now obsolete.
- Added option MBOX_SAVE_CANCEL_DONTSAVE; patch contributed by Sander.
- Augmented FXStream for long file support.
- Added own replacement strtoll() and strtoull() functions in case not available in local C-library.
- 64-bit FXlong and FXulong datatypes are now ALWAYS available.
- Updated FXFile, FXFileList, FXDirList for long file support.
- Added FXLongVal, FXULongVal and signed and unsigned long FXStringVal API's for FXString.
- Dropped FXWString and old text codecs; these are obsolete now.
- Fixed bug in Windows event processing of WM_MOUSEMOVE. When mouse was grabbed, coordinates were wrong when cursor moves outside of grabbed window.
- Fixed bug in getAppName() and getVendorName() in FXApp and similar problems in FXRegistry.
- Upgraded internals of FXIconList, FXList, and FXHeader widgets to use FXObjectListOf template class instead of maintaining own array; this saves some code.
- Changed many access function to return const FXString& instead of FXString. This eliminates generating a string copy.
- Fixed FXMutex reserved memory size to be sufficient for IBM PowerPC/AIX.

X-Mas Release - FOX DEVELOPMENT 1.3.22

- Completed layout computation for FXDockSite widget.
- Fixed highlighting in FXToolBarGrip widget.
- Added API's to FXStream: setBigEndian() and isBigEndian(). These force the FXStream into a particular byte order. Byte swapping will be enabled or disabled depending on the endianness of the platform. The old API isLittleEndian() is removed: to determine byte order, just use FOX_BIGENDIAN macro directly.
- Simplify code for FXHorizontalFrame and FXVerticalFrame a little bit.

December 21 - FOX STABLE 1.2.13

- Backported fixes to 1.2 branch.

December 14 - FOX DEVELOPMENT 1.3.21

- In the FX***Image classes, loadPixels() now can be called even after the image has been created already. It'll resize the server-side pixel storage but not yet call render(), since further manipulations may be desired prior to render().
- Added new colors to FXApp for selected menu foreground and background.
- Fixed some long-standing issues with FXPopup menu handling code. It works better now...
- Added API's like fxcheckTIF(), fxcheckJPG(), etc. These API's read a portion of the image file from the stream, determine if the image format is recognized, and then rewind the stream back to the same point. Thus, you can successively try each image type, create the right FXXXXImage class, and call loadPixels().
  A few of these fxcheckXYZ() API's need some further testing [mostly, due to poorly designed image formats where it is hard to determine the correct type easily].
- Fixed issues with reswrap: first, when passing a prefix for the resource name, the resource name can start with a digit since the prefix is in front of it. Second, the prefix is now also used when using the -r altname option. Finally, filenames on windows can have mixed \ and / path separators. When turning filenames into legal identifiers, we now allow ":" in the name since one could use scope-resolution operator in icon name.
- FXFile::absolute() no longerdoes tilde or environment expansion; there were cases where this was inappropriate and unexpected. You can call FXFile::expand() explicitly where desired.
- FXFileList now shows "." instead of ".." when displaying root of a file system.
- FXFile::simplify didn't handle cases like "/." to "/", causing trouble with the change made to FXFileList; we all knew we had to do slashdot right ;-).
- FXFileDialog could not select "/" when in Directory selection mode. Adding "." in the top directory and simplifying "/." to "/" fixed this problem.
- Changed handling of default color settings; system settings now applied only to settings NOT superceded from FOX Registry. Also, added support to read a few of the most important color settings from X Defaults database, which means FOX displays in colors as set up by your local window manager.
- Updated HTML Syntax patterns from Andy Preston.
- Updated Makefile Syntax patterns.
- Fixed focus navigation code eating key/modifier combinations other than the ones its supposed to; thanks to chafar@alcances.net for pointing this out.
- Hmmm, the FLTK people seem to like my timer-handling code too ;-)

November 29 - FOX DEVELOPMENT 1.3.20

- Fixed problems with FXFileSelector/FXFileDialog; right-mouse popup menu functions Move/Copy/Link/Delete were not quite working right when multiple files were selected.
- Added overloaded setData() to FXImage which changes shape as well as contents of client-side pixel buffer from given pixel array.
- Updated FXDockSite.
- FXFile::getUserDirectory() now uses %USERPROFILE%.
- Added Python and Makefile patterns to Adie.stx syntax coloring file.

November 24 - FOX DEVELOPMENT 1.3.19

- New program, fxdesktop control panel, allows you to set FOX colors and other settings interactively.
- The quaternion function arc() now returns the quaternion representing the rotation of the two vectors, instead of double the angle of rotation about the same axis.
- More new functions for manipulation of quaternions.
- Ascii mode FXRegistry now uses %USERPROFILE% as default location for registry subdirectory. This affects few FOX programs since on Windows, the normal Windows Registry is used by default.
- Added support for Xft in glUseFXFont(). It now properly generates OpenGL display list bitmaps for FreeType fonts.
- Further work in FXFont support for Xft:- now properly fill in properties of the font that matched the desired font.
- Made some API's in FXGLViewer virtual upon request from ESI-Group.
- Fixed some HTML highlight pattern for Adie.
- Read/write ascii based registry from %USERPROFILE%/foxrc on Windows; this is a more logical choice on Windows that %HOME%/.foxrc, which was the old choice. Note, this only affects programs which use the ascii-based registry on Windows. Most FOX programs use the Windows Registry and are thus not affected by this change.
- Fixed problem with FXMessageBox ID_CLICKED_SKIP and ID_CLICKED_SKIPALL.
- Fixed bug in FXStream usage of FXHash.

Halloween Release - FOX DEVELOPMENT 1.3.18

- Important change: consolidated reparentItem(), moveItemBefore(), and moveItemAfter() in FXFoldingList and FXTreeList into a single new API called moveItem(). This is much easier to remember and also allows one to move an item into the right place in the tree in a single call.
- Another important change: harmonized and simplified item addition API's in FXTreeList, FXFoldingList, and FXTreeListBox. The new API's are simpler to use, and easier to remember due to more similar naming to similar API's in the other list widgets.
- Added setHeaders() API's to FXIconList and FXFoldingList. setHeaders() allows you to populate the entire header control of the list widget with a single call.
- Fixed slight offset in editable cell text v.s. non-edited cell in FXTable.
- Added new API's to list widgets. The new API's fillItems() can be used to populate a list widget with a number of items in one fell swoop. The new items are appended to the already existing ones.
- Updated FXSpheref and FXSphered. including one point at a time now produces smaller bounding spheres. Also, empty sphere cases are now handled properly.
- Fixed FXTreeListBox. When adding or removing items, the field was not updated properly.

October 28, 2004 - FOX DEVELOPMENT 1.3.17

- Added editability to FXTable. You can edit cells in the table. From a user's perspective, editing a cell in FXTable is initiated in a number of different ways:

  - Double-click. This will create an input control in the cell and allow you to type.
  - Hit F2 function key, or RETURN key.
  - Start typing any printable character. This works if the input control is a text field; other input controls may drop the input.
  - Send an ID_START_INPUT message to the table.
  The editing ends in one of two ways. If the input is to be discarded, you can hit the ESC key. If the input is to be accepted, you can hit RETURN or nativage to the next cell using arrows or TAB keys.
- Added API's startInput(), cancelInput(), acceptInput() to FXTable. These API's introduce sub-classable input editing for table items to the FXTable class.
- Added setEditable() and isEditable() API's to FXTable.
- getColumnX() and getRowY() in FXTable now return proper scrolled x and y positions of the start of a column (row).
- Removed setColumnX() and setRowY() API's. Functionality of these API's is more intelligibly supported by calling setColumnWidth() and setColumnHeight().
- Added new API's to FXTableItem. The getControlFor() creates and populates a editor control to be used to edit the item. It is used by FXTable to determine what type of control to use to edit a cell. By making this virtual, you can make custom FXTableItems which are edited by a control of your choice.
  The FXTableItem setFromControl() API is used to populate the item from the control. Its function is to read the control and extract the data into the item. In typical usage, it is envisioned that getControlFor() and setFromControl() are both reimplemented for subclassed FXTableItems.
- Added more extensive documentation for FXRegistry.
- Added center-justification mode to FXTextField. In addition to right- and left-justified text in the text field, you can now also have centered text. Centered text larger than the text field can scroll both ways. For backward compatibility reasons, the centered mode is only enabled when explicitly passing JUSTIFY_CENTER_X in the setJustify() API [otherwise, all text fields would end up being centered!].
- Added API changeFocus() to FXWindow; it lets a parent widget know when the focus child is changed.
- Added new API changeFocus() to FXWindow. It can be used by a composite widget to know when the focus changes to another child.
- Added _POSIX_PTHREAD_SEMANTICS for older SUN Solaris thread support.
- Added some API's in FXXYZStream classes.
- Defaulted the normal FOX font to "helvetica,90" normally and "Sans,90" when XFT is enabled.
- Removed deprecated timer and chore API's from FXApp.

Older News

Older news...

Copyright © 1997-2005 Jeroen van der Zijp