November 7 - FOX STABLE 1.4.22
|
- Fixed bug in fxloadGIF [and thus also in FXGIFIcon and FXGIFImage; some subltety
with the LZW implementation was wrong. It is very rare as we've lived with this
flaw for a long time before discovering it. The symptom is that the decoder
complains that the image is truncated [it isn't!].
- Bug in FXSettings causes trouble when writing large integer numbers back
to the registry file.
November 2 - FOX STABLE 1.6.0 (Release Candidate 1)
|
This is the first release candidate for FOX 1.6. The input methods for X11 now
work. The next one will implement input methods on Windows. The API's are now
pretty much frozen except insofar as changes are needed for input method support.
Please note, we're doing the "root" method only. On the spot and over the spot
methods will be done later.
- A new class FXComposeContext manages the input context in text entry
widgets.
- Small tweak to movement algorithm of docked bars:- don't add a new galley
when the dock bar is about to be undocked from the dock site. However, you can
still create a new galley by first undocking, and then redocking the dock bar.
- Added restore() API to FXBitmap like FXImage has.
- New API dropFinished() issues message to DND source that target has
successfully acquired drop data and can proceed. This is normally done
automatically when the SEL_DND_DROP message returns, but in a few cases
one may want to release the DND source prior to returning from the handler,
for example when the SEL_DND_DROP message handler takes a long time to
process the DND data.
- Changed the way limits are handled in FXInputDialog.
- Changed some internals of FXFileList and FXDirList.
- FXTreeList, FXDirList makeItemVisible() tweaked to scroll the expand-box
into view.
- Fixed some small drawing and layout issues in FXGroupBox.
- FXTopWindow HICON is deleted if FXTopWindow is.
- Obtain proper HINSTANCE on Windows; don't use GetModuleHandle(NULL) anymore;
see October 29.
- Fixed FXGroupBox caption display issues. Now looks better at default size.
- Implemented extremely dumb and slow StretchBlt on X11.
- Added tooltip capability to pulldown menu items.
- New API in FXApp, getActiveWindow() returns active toplevel window; previously,
this API was called getFocusWindow(). The new implementation of getFocusWindow() returns
the child widget of the active window that has the focus.
October 29 - FOX STABLE 1.4.21
|
- The getDisplay() API now returns the proper HINSTANCE on Windows; thanks to
Henrik and Claus Wann Jensen feedback on this problem. The solution fixes
some instability problems in .DLL use of FOX on Windows.
October 25 - FOX STABLE 1.4.20
|
- Set active window to owner when dialog closes on Windows.
- Fixed Thread Local Storage handle leak on Windows.
- Fixed GDI HICON handle leak for FXTopLevel's big/small icons on Windows.
October 19
|
I have written a few words here about the Unicode table compression method
used in the FOX Unicode implementation. The method achieves very nice compaction of the
Unicode Character Properties tables by recursive partial overlapping identical property
data and indirection blocks.
September 23 - FOX UNSTABLE 1.5.13
|
- Fixed bug in FXText for search selected option.
- Fixed X11 keysym determination code; was not observing shift state.
- Added registry setting for scrollbar width.
- Fixed some problem with FXRex encoding of characters in compiled regular expressions.
- Updated Windows keyboard handling for UTF-8.
September 15 - FOX UNSTABLE 1.5.12
|
- Implemented keyboard translation for X11 to unicode; the Windows keyboard
translation will come in the next version, so stay tuned!.
- Moved fxparseAccel(), fxunparseAccel(), fxparseHotKey(), fxfindHotKey(),
and fxstripHotKey() to FXAccelTable, and dropped the "fx" prefix. FXAccelTable
is a more logical home for these functions.
- Added SEL_DOCKED and SEL_FLOATED messages to signify docking events; these
are generated by FXDockBar as it is being docked or undocked.
- Updated Windows studio project files.
- Updated some documentation items in various widgets.
- Updated Watcom C++ makefiles.
September 13 - FOX UNSTABLE 1.5.11
|
This is the FOX 1.6 pre-release; please test! The next one [barring bugs!] is going to
be FOX 1.6.0!!
- Added unicode clipboard support to FXTable.
- FXTable overlayText() and countText() can now have sets of column and row separators.
- FXTable extractText() can have separator of multiple characters.
- Updated comparecase in FXString for utf-8 awareness.
- Updated list widgets for utf-8 aware item comparison.
- Fixed FXTable overlayText(). Also fixed paste selection in FXTable.
- Fixed FXTable countText() and made it public.
- Corrected FXBZFileStream and FXGZFileStream filenames.
- Added missing getNumPatterns() API to FXFileDialog.
- Changed FXDataTarget constructors so as to avoid accidents.
- Fixed FXText upper/lower case conversion for utf-8.
- Fixed overly enthusiastic argument checking in FXText.
- Added checks against editing non-editable FXText widget.
- Fixed FXTextField against editing when non-editable.
- Fixed some minor issues with FXFont and FXApp for Windows.
- Fixed Windows VC++ studio projects for -DUNICODE.
September 7 - FOX UNSTABLE 1.5.10
|
- Added unicode clipboard and primary selection support to FXText.
- Added unixToDos and dosToUnix API's to FXString.
- Expunged some FXbool's in favor of bool. This is OK where serialization is not required.
- New API's to FXMatXX classes.
- New API's to FXVecXX classes.
- Fixed minor internal issues in FXText.
- Updates FXRangeXX and FXSphereXX classes.
- Added API's to FXText taking FXString.
- Switched argument order in FXText's changeStyle(); it was inconsistent.
- Safe-guarded FXOptionMenu for children it its FXMenuPane not being FXOption's.
September 3 - FOX UNSTABLE 1.5.9
|
- Updated FXBZFileStream to subclass from FXFileStream.
- Ditto updated FXGZFileStream as well.
- Updated makefiles for Watcom C++.
- FXMemMap now supports utf8 filenames on Windows as well.
- Fixed some typos in FXExtentd.
- Fixed missing operator << and >> in FXHiliteStyle for Watcom C++.
September 2 - FOX UNSTABLE 1.5.8
|
- Modifier keys now stick around when a normal key is pressed; thus both press and
release of normal key now have same modifier set applied.
- Fixed strtoll where it is used.
- Fixed compile with Xft for Fedora Core 4; FC4 apparently ships with old version of
fontconfig.
- Fixed build issues with multi-monitor stuff on MS-Windows.
- Added FXExtentf and FXExtentd classes for 2D ranges.
- Added dllName() API to FXSystem.
- Added API's to FXString: compareversion().
- Fixed Windows compile issues with Visual Studio 7.
- FXToolBarGrip no longer gets focus.
- Added some API's to FXRectangle FXSize, FXPoint, FXVec3f (etc.).
August 19 - FOX UNSTABLE 1.5.7
|
- Added NET_WM_PING message support for Extended Window Manager hints.
- New FXSystem namespace added to be a collection of system-interrogation functions.
- New FXIO class added which is the base class for FXFile, FXSocket, FXPipe. So far,
FXFile is the most advanced in implementation; but FXPipe and FXSocket will follow...
- Added extractItem() API to the list widgets; it allows you to remove an item but not
destroy it. The removed item can then be re-added to another list widget.
- Added private copy constructor and assignment operator to list items in order to
prevent accidental copying.
- Added FXPath::convert() API. It will convert a path to local path separator convention.
- Added FXPath::contract() API, which will to the opposite of FXPath::expand().
- Added includeInRadius() API's to FXSphere. These include the new point or sphere
without moving the center of the original FXSphere. This is often convenient when
maintaining nested bounding spheres.
- Added DOCKSITE_NO_WRAP mode to FXDockSite. Passing the DOCKSITE_NO_WRAP will cause
FXDockSite NOT to wrap toolbars to another galley should the amount of space be insufficient.
- Added new FXFile class which encapsulates low-level file manipulation on the system.
- Added -z option to reswrap. This new option causes reswrap to compute the
size of the resource, and incorporate this into the declaration.
- FXSlider, FXRealSlider, FXDial, and FXKnob now respond to keyboard arrows as well
as + and - key bindings.
- Updated FXTopWindow to allow setting unicode title string in Extended Window Manager
Hints-enabled window managers.
- Split off many functions from FXFile into new namespace FXPath; FXPath is a collection
of functions manipulating pathnames in a resonably system-independent way. FXPath knows
about local name conventions, forward and backward slashes, and so on. FXPath knows
about unicode filenames.
- Some other functions from FXFile have been split off into a new class FXStat. FXStat
is a collection of file-metadata such as access time, size, and so on. It replaces the
unix stat() function. FXStat also knows about unicode filenames.
- FXDir has acquired a few additional functions which were moved out of FXFile; the
new static member function listFiles() now is implemented in terms of FXDir's basic
capabilities. FXDir also knows about unicode filenames.
- Fixed makeItemVisible() in FXList, FXIconList, FXTreeList, and FXFoldingList when
widgets aren't realized yet. We now to delayed makeItemVisible() in such cases, causing
a scroll when layout() is finally done.
- More features added to FXKnob; now can operate in speedometer mode.
August 1 - FOX STABLE 1.4.17
|
- Fixed problem in FXMessageBox. When running MBOX_SAVE_CANCEL_DONTSAVE, a click
on Save should return MBOX_CLICKED_SAVE and not MBOX_CLICKED_YES.
- Fixed problem on multi-head Windows machines in FXPopup and FXTopWindow.
- Fixed problem in FXQuatf and FXQuatd.
July 21 - FOX UNSTABLE 1.5.6
|
Well, after weeks of pounding the keyboard, here's a massive number of new
features; first, we've got a nice set of new widgets:- the FXKnob control
contributed by Leandro Nini which can be a drop-in for FXSlider or FXDial
with different looks.
Next, there's FXColorList which is a flavor of FXList which can be used to
select from a set of named colors. To wrap up the color selection methods, we now
also have a new widget called FXColorRing, which is a hue/saturation/value control which manipulates
a colors hue by means of a ring, and saturation and value by
a rotating triangle centered in the hue ring. The tip of the triangle rotates
to follow the hue selected in the outer ring. Its a quite intuitive way to control colors.
Then, we have a UTF-8 enabled FXTextField and FXText widget. FXTextField
supports UTF-8 and UTF-16 clipboard support for interaction with other
applications.
Finally, I have now embarked on the implementation of possessive match
support for FXRex. The possessive match is a fairly recent addition in the
world of regular expressions; what it does is to eliminate back tracking in greedy
closures. For example, the pattern "a*b" is not ever going to match "aaaaaaac", so
instead of performing massive numbers of vain backtracking attempts, we can now write a
pattern "a*+b", which will simply give up as soon as we fail to match the "b" against
the "c".
It is interesting for our purposes as it may substantially
speed up the syntax coloring engine or other sophisticated pattern matching using FXRex.
A detailed list of features follows:
- Unicode support added to FXText; over the next few days, FXText will go
through overhaul of the internals, plus we're adding clipboard and selection
support similar to what FXTextField already has.
- Unicode support added to FXTextField. FXTextField is at this point
pretty complete. Note that due to multi-byte representation of unicode
in UTF8, the cursor in FXTextField is constrained to character-starts,
i.e. positions passed into FXTextField will be adjusted if necessary.
- Added possessive match mode in FXRex. Current implementation is still limited
to possessive match of simple patterns [this will change in subsequent releases].
The syntax is similar to that of the lazy match, except a + instead
of a ? is used. The possessive match is a greedy match that does not backtrack;
therefore, using possessive match for syntax coloring can yield some dramatic speedups
in the editor.
- Also added some [as yet internal] documentation on future syntax FXRex will
support for unicode regular expressions. We stick to the standards whenever
possible.
- Added FXColorRing class to edit color based on hue-ring and saturation/value
triangle. This is now used in FXColorDialog in favor of FXColorWheel. The FXColorRing
provides a single control that can select hue, saturation, and value using more
a intuitive interface than sliders.
- Added Leandro Nini's FXKnob widget. It is a rotational valuator which
can replace dial or slider if different looks are required.
- Split fxchar.h into fxascii.h and fxunicode.h.
- Added new FXColorList widget to pick from named colors; you can load your
own colors in such a list.
- Added notify flag to FXTextField, FXSlider, FXRealSlider, FXDial, FXSpinner,
FXRealSpinner, FXCheckButton, FXToggleButton, FXRadioButton.
- Added API to FXFileDict to change settings database being used.
- Fixed jumping mouse wheel bug in FXScrollBar.
- Fixed some subtleties in FXText w.r.t. makePositionVisible().
- Re-added getWindowCount(), to FXApp. The new implementation is more elegant
in that it eliminates global variables.
- The fxgetticks() is now implemented for x86-64, IA64, PPC, HP-PA, and SPARC-V9,
in addition to x86, when using GCC compiler. Please test!
- Added SSE3, HT detect to fxcpuid() [x86 only!].
- Replaced all old "ctype.h" functions with functions from fxascii.h;
these don't interpret the upper 128 codes and thus are safe to call on UTF-8 encoded
unicode.
- Few bug fixes in FXString as well as additonal API's.
June 29 - FOX UNSTABLE 1.5.5
|
- Added FXDir class for directory scanning; it scans one file at a time.
- Implemented text at an angle drawing routines.
- Added API's to FXScrollPane to get/set number of visible items.
- Fixed windows-related flaw by not disabling arrows in FXScrollPane.
- FXDragCorner now uses Extended Window Manager Hints if available.
- Implemented drawing at angles on Windows also.
June 11 - FOX STABLE 1.4.16
|
- Fixed bug in FXList and FXIconList: select lone item with arrow keys didn't work.
- Fixed sign error in quaternion classes in setAxes(). This only happens in one of the
exceptional cases.
- Issue in FXMemoryStream fixed.
June 4 - FOX STABLE 1.4.15
|
- Fixed x86-64 bug with FXString::vformat().
April 14 - FOX DEVELOPMENT 1.5.4
|
- Added access function wc() to FXString for reading wide character at byte offset.
- Added setData() API's to FXBitmap, analoguous to FXImage.
- The setCurrentItem() function in FXComboBox now has notify parameter; it generates
SEL_COMMAND when current item is programmatically changed; note that the argument passed
to the SEL_COMMAND is the new text in the box.
- Added compose API to FXString.
- Added charCompose() API to FXchar to compose unicode character with diacritic
marks.
- Added Hangul composition/decomposition functions.
- Added API's wide to utf and vice versa API's to fxdefs.h. A whole slew of
new functions. Used internally by FXString but useful elsewhere also.
- The setCurrentItem() function in FXListBox now has notify parameter; it generates
SEL_COMMAND when current item is programmatically changed. The argument passed to
the SEL_COMMAND is the index of the new current item.
- FXTreeListBox was erroneously sending a SEL_CHANGED when calling setCurrentItem()
with notify=TRUE; it should have sent SEL_COMMAND as it sends SEL_COMMAND whenever
the current item changes by other means. It still sends SEL_CHANGED when mouse is
hovering over the list when its popped up.
- FXMDIChild forwards all unhandled messages, but does not forward unhandled
messages with ID's which belong to the FXMDIChild itself.
- Added some checks in FXQuat{f,d}::arc(). Floating point rounding errors
could in rare cases cause trouble.
- Added Euler angles to quaternion and back API's. There are now 6 of them,
one for each sequence of roll/pitch/yaw.
April 9 - FOX DEVELOPMENT 1.5.3
|
- Fixed loadImage() API in FXIconSource. It was returning FXIcon* instead of
FXImage*.
- Added decompose API's to FXString; this returns the decomposition of a string
in terms of its diacritic marks.
- Added decompose tables to fxchar.cpp.
- Added decomposeType(), charNumDecompose(), and charDecompose() API's to fxchar.h.
- Added count() API to FXString; counts number of utf8 characters.
- Added API index() to FXString, which gives utf8 character index of utf8 character at
given byte offset in FXString.
- Added API offset() to FXString, which gives byte offset of utf8 character with given
index.
- Added inc() and dec() API's to FXString to advance byte offset to next/previous utf8
character.
- Added Ascii-only character type functions to fxchar.h. These work when searching
ascii codes in utf8. Using the ctype.h for this purpose would trigger spurious
hits depending on locale settings. So use the fxchar.h versions if possible!
- Dropped fill() API's from FXString:- duplicates functionality of assign().
- Dropped count() API from FXString:- dupplicates contains() API.
- Added many API's to FXString which take wide and narrow characters; in particular,
constructors, assign(), append(), prepend(), insert(), replace(), and assignment operators.
- FXwchar is now typedef-ed to wchar_t when wchar_t is 32-bits. On machines where
wchar_t is 16-bits, FXnchar is typedef-ed as wchar_t. Thus, we can now populate
FXString directly with wide character string constants; on Windows machines this
translates to a call via the FXnchar API, while on UNIX machines this becomes a call
via the FXwchar API.
This may often be more convenient than embedding utf8 string constants into your code;
however, since a translation is involved embedding utf8 character string constants is
probably faster, so use this whenever possible.
April 9 - FOX STABLE 1.4.12
|
- Fixed documentation bugs.
- Fixed loadImage() API in FXIconSource. It was returning FXIcon* instead of
FXImage*.
March 30 - FOX DEVELOPMENT 1.5.2
|
- Added many text codecs; all character sets from FXFont, as well as utf8, utf16, utf16be,
utf16le, utf32, utf32be, and utf32le have been implemented.
- Overhauled and fixed number of bugs with the unicode character classes; renamed some
of the API's and added a few more API's to fxchar.h.
- Added narrow character (FXnchar) type to fxdefs.h. This is used to represent
16-bit unicode.
- FXTextCodec now mostly complete. Added lots of API's for moving between various
unicode transformation formats, and added convenience API's for encoding and decoding
multi-byte characters. Also implemented lots of error checking.
- Added some API's to FXString for utf-8 support, these API's will be used for
adding many utf-8 and wide character convenience functions later.
- Fixed FXTable selection rectangle issue; selection rectangle now set before callbacks
are invoked.
- Added compile #define symbol FLOAT_MATH_FUNCTIONS which can indicate that single-precision
math functions are available; if not set, FOX will use the symbol __USE_ISOC99 or turn
on the single-precision convenience macros.
- Fixed layout in FXListBox. Size of FXListBox should be based on width of ALL strings
currently added, similar to static FXComboBox.
March 20 - FOX DEVELOPMENT 1.5.1
|
- Added scroll capability to FXTabBar and FXTabBook.
- Renamed remove API's in various containet classes to erase which
more closely resembles STL container classes' nomenclature.
March 20 - FOX STABLE 1.4.10
|
- Fixed compile problem on Windows.
March 17 - FOX STABLE 1.4.9
|
- Added fixes to LaTeX syntax coloring (thanks to: Mikkel Kamstrup Erlandsen).
- Fixed typo in FXApp; handleTimout(), should have been handleTimeout().
- Changed some bugs in FXGZStream, FXBZStream, and FXFileStream; in some cases,
the FXStreamEnd flag was set prematurely.
- More work on unicode done.
March 16 - FOX STABLE 1.4.8
|
- FXUndoList should account for FXCommandGroup when FXUndoList::end() is called,
and not at the beginning when FXCommandGroup is still empty.
This is useful if you subclass FXCommandGroup and add extra space when a complex
undo command is completed. As an example, suppose you're disconnecting nodes from
a graph. Then it is not known whether a collection of nodes becomes completely
detached from the graph until the last node is cut loose.
To properly account for space when nodes become completely detached from the
graph, you can then add the extra space to the subclassed FXCommandGroup just
prior to the call to FXUndoList::end(). If you merely remove some connections
but the nodes are still connected by other edges then the space is not added
since the data structures are not completely owned by the undo system yet.
- Also, incorrectly accounted for size changes when merging undo records.
- Adding an undo command should only change the size when its committed, i.e.
either an add() of a simple command at the toplevel, or an end() of a compound
command at the toplevel.
March 8 - FOX DEVELOPMENT 1.5.0
|
This is a development preview; it is not recommended for any development
work at this time; in particular, no effort has been made to make it
compile on all platforms.
Some of the highlights of this release are below.
- Added fxchar.h and fxchar.cpp unicode tables. The fxchar.h header file
provides functions operating on 32-bit wide unicode characters. They support
the full range U+000000 to U+10FFFF. FOX will support wide characters but
most functions are going to be working on UTF-8, which is a more compact
and manageable representation of unicode characters.
Some FXString API's have been added already for UTF-8. Many more will
follow. FXString has API's taking strings (sequences of bytes),
as well as API's taking single character parameters. The former will serve us
well for UTF-8, but for the latter, equivalent API's will be added which
take wide characters, allowing one to e.g. insert wide characters without
explicitly converting to UTF-8.
- Added new class, FXTranslator. FXTranslator, once it is fleshed out,
will be responsible for translating messages into local languages.
- Added new API, tr(), to FXWindow. This gets passed the message text
and optional translation hint. It adds the name of the widget as the
context and then passes these parameters to FXTranslator. Thus, three
things are available to translate a message. Actually, there may be
a forth (fifth) thing as well, and that is the application and vendor
keys, which FXTranslator could get at if needed. Some of the mechanisms
have yet to be worked out, at this time.
- Went through the entire FOX library and added a call to tr() for each
and every message. Once FXTranslator is implemented, this will then
instantly enable localization of FOX.
- Added mouse wheel support for FXComboBox, FXListBox, FXTreeListBox;
I can't believe I didn't add this long ago; its really very convenient!
- Added utf.cpp source file containing some utf helper functions; this
is an internal file.
- If you ever listen to music at your PC you've got to get the [FOX-based!]
Goggles Media Manager. What I
like about it is that you don't have to create play-lists like XMMS; it
keeps its info in a database and can do a number of useful queries.
Yet another nice program from Sander.
March 8 - FOX STABLE 1.4.7
|
- Removed check for used thread-id; this allows restart of a thread.
February 22 - FOX STABLE 1.4.6
|
- Added missing FXAPI in FXGUISignal.
- Removed friend FXEmbeddedWindow from FXApp.
- Flags TABLE_COL_SIZABLE and TABLE_ROW_SIZABLE now cause corresponding row and
column header controls to allow resizing or not.
- Flags TABLE_NO_COLSELECT and TABLE_NO_ROWSELECT disable column and row select
mode for corresponding table headers.
- Fixed bug in FXHeader which caused HEADER_BUTTON to be ignored (button was always
enabled).
- Added flag HEADER_RESIZE to FXHeader which enables interactive header section
resizing by the user; this is now used by the FXTable as well.
- Fixed problem in FXToolBar dealing with special children FXSeparator and FXToolBarGrip
which have special layout from the normal children.
- Removed #error from ControlPanel application.
February 15 - FOX STABLE 1.4.5
|
- Core dump with hitting select all in empty table FXTable fixed.
- Core dump with non-ascii characters in FXSettings fixed.
- Added missing FXRex.h in fx.h.
February 13 - FOX STABLE 1.4.4
|
- Problem in fxtargaio fixed.
- Rewrote important part of fxpcxio routine; all test images of depth 1, 4, 8, and 24
bits per pixel now pass the test.
February 12 - FOX STABLE 1.4.3
|
Well, here's a few other minor updates. Nothing very serious this time.
Now that the worst errors have been taken care of, I'm going to hold off
these rapid releases until there is something serious or after I've been
able to collect a bunch of them.
- Fixed warnings and error that came up on SGI build.
- Fixed TABLE_NO_ROWSELECT and TABLE_NO_ROWSELECT not working right in FXTable.
- Suppress warning on VC++ for DLL binding templates.
February 10 - FOX STABLE 1.4.2
|
- Fixed FXFileSelector popup menu:- was unable to delete directory due to introduced problem.
- Updated Digital Mars C++ compiler makefiles.
- Updated Watcom C++ compiler makefiles.
- Fixed some FXCursor for Digital Mars C++.
- Added FXAPI declaration to FXObjectListOf.
- Fixed type on FXSplashWindow comment.
- Removed default parameter from non-floating bar constructors in FXMenuBar, FXToolBar,
and FXDockBar. One must always pass a 2nd parameter as the two constructors can
otherwise not be distinguished [GCC people: can't this be detected during compilation?].
- Fixed FXMutex reserved memory amount for HP-UX support.
- Fixed FXMemMap for Digital Mars C++ compile issue.
- Removed ControlPanel from Windows Builds; you can remove the warning message
and compile it, but it wont quite work since ControlPanel doesn't change the Windows Registry
but only the file-based registry [Maybe that will change in future versions; however,
the FOX control panel isn't as important on Windows since FOX follows many of the standard
Windows Control Panel settings].
February 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.
February 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.
February 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.
January 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.
January 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.
January 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.
January 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-2022 Jeroen van der Zijp
|