FOX Changelog

What's new in FOX 1.7.64

May 24, 2018
  • Switched FXDir to use readdir() instead of now-deprecated readdir_r(). Supposedly now thread-safe.
  • Some internal streamlining in FXRex.
  • In FXText, duplicate line leaves cursor in place, but highlights the new line (if you duplicate one too many, you can therefore immediately delete it again).
  • Add some help messages for PathFinder's Preferences dialog.
  • Add columnFromPos() and posFromColumn() functions in FXText.
  • Fixed bug in FXText not recalculating width if only single line present (was introduced recently).
  • FXRex reverse algorithm was not working for verbatim mode; it does now.
  • Some limitations on FXRex regex-reversal algorithm removed.
  • Adie open-selected rework had introduced some bugs; is fixed now.
  • Added new convenient API's to Math namespace.
  • Added new API's to vector classes.
  • FXText block select, block copy to clipboard, and block delete now work.
  • FXText shiftText() had minor issue shifting text containing tabs; this has been dealt with in a very sophisticated way, an internal routine which is also needed for block operations.

New in FOX 1.7.50 (Jan 12, 2015)

  • Major changes in the regular expression engine. New API amatch() for anchored match, and new API search which replaces match(). More sensible parameter order and moved some flags from run-time to compile time.
  • Internals of FXRex are now ready for UTF8 matching; however parsing part will need to follow before these new capabilities can be put to use.
  • FXRex::substitute() now interprets the usual escape sequences when creating replacement pattern from regular expression match captures.
  • Speedup in FXText getByte(), getChar(), etc. by introduction of branch-free handling of gapped-buffer accesses.
  • Moved hard-wired search and replace dialogs out of FXText and into Adie text editor; this is part of the FXText widget slim-down program.
  • Adie text editor search and replace improvements. Basically, stream-lines mouse-free usability.
  • Adie incremental search bar now pops up at bottom of window. This is much less disruptive as text does not get "pushed down" when this toolbar pops up.
  • The FXHash find() routine now returns the slot index, or -1 if not found. If you use FXHash you should be aware that simply replacing find() by at() will fix your code to the new system. This was done based on request from a user who noted the find() API in FXHash behaved differently from the find() in FXDictionary.
  • Strip leading and trailing space from display in Adie's bookmark menu.
  • Added ParallelMax constant declaration for FXParallelFor.
  • Change to FXText findText() API. The new version can perform not only forward and backward search, but also anchored match. The anchored match is performed if neither SEARCH_FORWARD or SEARCH_BACKWARD flags are passed.
  • Goto Line dialog moved from FXText to Adie text editor proper (also part of FXText widget slimdown program).
  • Adie Replace Dialog now has Search button.
  • Adie Replace Dialog Replace function now first checks if current highlighted text is the one being searched for, and only searches further if it isn't. This logic will therefore replace already highlighted selection, and make it less likely you accidentally "skip" the first item in a search-and-replace session.
  • Also, Search and Replace dialogs stay up until explicitly closed. It was often the case that the first search is not always the desired one, and one had to bring up the dialog a second time. Note that Escape hides the dialog, so no mouse interaction is required for "Power Users".
  • Search and Replace dialog can now replace within selected text only.
  • Some language pattern updates in Adie syntax coloring file.
  • CMake coloring patterns added to syntax file.
  • New match modes added to FXRex: Exact, and NotEmpty. The Exact mode succeeds only if a successful match eats the entire string. The NotEmpty mode succeeds only if the match eats at least one character. Note these are compile time flags, and implemented through special asserts in the matching engine. Thus, the engine will potentially backtrack earlier matches to try other possibilities!
  • Regular expression match engine speeded up by streamlining matcher-setup internally; this particularly affects search().
  • Fixed bug in FXHash::at().
  • Eliminated recursion in simple possessive match in FXRex.
  • Added handy isNull(), isBool(), etc. APIs to FXVariant.
  • Made selection-changing APIs virtual in FXText, for subclassing.

New in FOX 1.7.44 (Dec 11, 2013)

  • Updated FXJSON JavaScript Object Notation I/O class:- removed limits to token size in both input and output operations (formerly limited to buffer size).
  • Minor changes to FXVariant:- added some missing API's, removed toChar() as its useless. Added has() to determine if key is present in case FXVariant is a map.
  • Simplified FXFile and other FXIO subclasses a bit to remove redundant implementations.
  • Added FXIOBuffer, an FXIO device that serializes to/from a memory buffer.
  • FXRanged, FXRangef: now check intersect() results a bit differently.
  • Ray to FXSpheref, FXSphered intersection test changed to allow origin inside sphere possibility.
  • Fixed small bug in wc2nc().
  • Possible buffer overrun in FXDir fixed.
  • Added class FXStringMap.
  • Changed some API's in FXDictionary. Added erase() API to allow removal of slot already located. This is faster, and needed for successful subclassing.
  • FXStat problem fixed on Windows.

New in FOX 1.6.49 (Dec 10, 2013)

  • Check index out of bounds in FXTabBook::setCurrent().

New in FOX 1.7.33 (Jun 1, 2012)

  • Issue with Windows7 OpenGL pixel format supporting composition is weighted heavier, thus picking composition mode preferentially. This makes it less likely that the visual will match non-Aero capable pixel formats.
  • Fixed TIFF image save/load.
  • Fixed quaternion arc() for vectors that are 180 degrees apart.
  • Some tweaks in FXAtomic: more optimal code for non-PIC compiles; also, check for PIE (position independent executable).
  • Fixed problem in FXRex regarding non-ASCII characters.
  • Repaired some broken syntax patterns in Adie.stx syntax file.
  • SSE-ified lerp() API added to vector classes.
  • Fixed SSE unaligned store problem in FXMat4d; exhibited itself on 32-bit systems.
  • Setjmp()/longjmp() issue fixed in fxpngio.cpp.
  • Operator FXbool in FXAutoPtr and FXRefPtr interfered with comparison operators; removed it.
  • Added API's to FXMat4 classes.
  • Added serialization capability to FXExpression class.

New in FOX 1.7.30 (Oct 24, 2011)

  • Vastly expanded code docs for FXText widget.
  • Improved Syntax parser for Adie text editor.
  • FXFileList now issues proper callbacks when files or directories are changed on the disk while FXFileList is displaying them.
  • FXFileSelector puts FXFileList into ICONLIST_SINGLESELECT mode when SELECTFILE_ANY mode is in effect. This is as it should be since the user may type a filename that doesn't yet exist.
  • Several unnecessary directory scans have been eliminated when FXFileDialog first appears. This makes the FXFileDialog much faster than it was before.
  • Python syntax rules updated in Adie.stx.
  • Added coloring rules for merge-conflicts for C, C++, and a few other languages to Adie.stx.
  • Fixed bugs in Adie.stx now flagged by stricter syntax parser.
  • Non-recursive forceRefresh() in FXWindow.
  • FXIconList generates SEL_DELETED, SEL_INSERTED instead of SEL_REPLACED. These callbacks are more useful.
  • PathFinder shows useful information in its status line.
  • Can now change permissions of multiple files from PathFinder properties panel.
  • PathFinder can now change file-associations and icon-assignments, just like ControlPanel. For now, these have effect only in PathFinder itself, but this should change in the future.
  • Typo in FXComplexd fixed.
  • Workarounds for disk stat for MacOSX and other non-Linux Unices.
  • Fixed bug in FXMat3d SSE2 code. Was using aligned access.
  • FXFileList and FXDirList items keep track of mode-bits. This actually simplifies stuff quite a bit.
  • Useless directory rescan eliminated when sort-function changed in FXFilelist and FXDirList.
  • Issue SEL_CHANGED if current item is replaced in FXIconList, FXList, etc.
  • Adie remembers if extension-less file syntax was changed by hand; next time same file is loaded, syntax will be restored properly.
  • First-time bug in ControlPanel fixed; rare, issue only occurs ControlPanel is ran first time and no registry exists yet on disk.
  • Option added to PathFinder to scale image to available space when using internal image viewer.
  • Vendor-key in FXApp's constructor now defaults to FXString::null. This is the more common usage pattern.
  • Option added to PathFinder to control file-item space and whether or not to auto-size columns display.
  • Bold, strikethrough, underline style flags now saved in Adie.
  • New syntax rule option in Adie.stx: all-matching "background" rule. When used, you can colorize all text not matched with the regular rules, as override to the default colors used by the Adie editor.

New in FOX 1.7.25 (Nov 24, 2010)

  • Change in configure.ac to check intrinsics header files with modified compiler flags; header files are not compilable with default options.
  • Updated Borland C++ makefiles.
  • Update Visual Studio 6 project files with missing headers.
  • Small fixes in FXAutoPtr.h.
  • Change some inlined API's of FXProgressDialog to non-inline.