************************************** Version 0.4.4 (bugfix release) June 21, 2002 Changes since 0.4.3 ************************************** + Update to work with FLTK 1.1 (tested against latest 1.1 cvs as of 06/20/02) and latest 2.x CVS (as of 06/20/02). + Update to build without having to define FL_MAJOR_VERSION first. Now uses the --with-fltk2 configure argument as meaning "use FLTK version 2" rather than fltk 2 pure. So set it for fltk2, leave it off for FLTK 1.1. + Changed link options to not include -lGLU when linking to GL. Not needed. + Fixed the "status" demo program (the "INS" indicator didn't do anything). + Added a "COPYING" file that iterates the license terms more specifically and includes the FLTK and LGPL licenses. (I have been advised that some distributions require this.) + Added workaround for strange focus behaviour when scrolling with the scrollbar. The text widget gets an unfocus when the scrollbar is clicked, but then when you click back on the text, instead of it getting a focus event, it gets another unfocus. This makes the cursor remain invisible when it shouldn't. * Fixed the "multiple" demo program. Works in both FLTK versions now. * Removed the FULL_REDRAW_ALWAYS hack and fixed it to redraw properly. * Fixed numerous drawing problems to do with incorrect usage of the widget coordinates with fltk 2.x. * Removed the CLASSEXPORT define. * Updated the Visual Studio build project. Still not likely to build "out of the box" without changing the project settings first. See readme in the visualc directory. * Updated to use layout() over resize() in 2.x. * Fixes to scrollbar handling. * Fixed status panel on Fl_FancyEditor (positioning problem). ************************************** Version 0.4.3 (bugfix release) August 29, 2001 Changes since 0.4.2 ************************************** * Will reject attempts to LoadFrom(char *) with a null pointer. * Now puts a null byte in the tail end of the buffer during a SaveTo(char *) even if the editor buffers are empty. Will refuse to save to a null pointer. * Will build again under fltk 2.x CVS. Had to change directory and file names on the header files (both included and used). Also added Fluid 2.x files for the test programs. ************************************** Version 0.4.2 (bugfix release) August 26, 2001 Changes since 0.4.1 ************************************** * No longer writes extraneous null byte when saving to file. (Thanks to James Fenn for catching this.) * Added GetTextBufferSize() call on editorengine and Fl_Editor that returns the number of characters that should be allocated in order to save the text to a buffer. The CharacterCount() method returns only characters actually presently in the buffer, while this new method considers the line ending characters that would be added when saving. (Thanks to Jens Wilhelm Wulf for pointing out this shortcoming.) ************************************** Version 0.4.1 (bugfix release) February 18, 2001 Changes since 0.4 ************************************** Scrollbar was apparently broken in 0.4. This fixes that. ************************************** Version 0.4 January 9, 2001 Changes since 0.3 ************************************** * Added autoconfigure support (finally!!). Hopefully this means no more editing Makefiles for other platforms! * Major reorganization! Reorganized source code into fewer files, different layout, and different filename extensions to better merge with FLTK 2.0 source tree. * Renamed and combined the libraries! Instead of the two libraries "librcl" and "librcledit", there is now a single library "libfleditor". Both static and shared versions can be built by using the "--enable-shared" option to the configure script. * Optimized Fl_StatusPanel() update a little better. * Fixed problem in drawing function that caused children of Fl_Editor not to redraw properly sometimes (most visible in the Status bar when running under Windows). * Added LoadFromFile() and SaveToFile() functions that wrap the LoadFrom(FILE *) and SaveTo(FILE *) methods. This lets you put the editor in a DLL under Windows and load/save from files without getting a GPF... * Fixed all compile errors and warnings on MSVC++ * Changed min() and max() members of Fl_ProgressBox to minimum() and maximum() so that compilers which define them as macros won't try to expand them... (like MSVC++) * Changed name of wString::Set to wString::SSet. (It was reported that there was a namespace collision on certain platforms with the Set method.) * Made cursor disappear when widget is not focused. * Added a WantTabs() function for setting whether the widget should allow tabs in the text, or pass them to FLTK for navigation purposes. * Compiles and works with FLTK 1.x or 2.0 CVS as of 01/01/2000. NOTE: NOT YET FULLY FUNCTIONAL UNDER THE 2.0 CVS. Several drawing bugs are there that affect the 2.0 version only. A *really* ugly workaround is in place, but it works by redrawing everything every time. Using it under FLTK 1.x still works as it did before. ************************************** Version 0.3 October 13, 1999 Changes since 0.2 ************************************** * Updated documentation (includes example screenshots). * Fixed segfault when double-clicking an empty editor. * Fixed broken cursor placement when clicking with the mouse. (Was off slightly horizontally if the font wasn't set prior to the calculation). * Broke the editor up into several classes, as follows: Fl_Editor base editor widget (no search/replace, no status panel, etc. Just editing.) Fl_FancyEditor Same functionality as before (search/replace, etc). Fl_MultiEditor like Fl_Editor, but with multiple buffer support. Fl_FancyMultiEditor like Fl_FancyEditor, but with multiple buffer support. Fl_StatusPanel The status panel with CAPS, NUM, INS, and position indicators, etc. Also now includes a progress bar (see below), and has been made slightly more general so as to be useful for things besides just editors. Fl_ProgressBox ** new class ** (see below) * Created Fl_ProgressBox, which is a simple "progress bar" widget. Can optionally show the percentage as text inside the bar (not to be confused with the label, which can be anyplace any normal widget label can be). Defaults to blue bar on a white background with red text, but is entirely configurable. Create as you would any other widget, set the min/max with range(), position with position(), and step it with step(). Example program included. * New example programs, as follows: simple -- shows the basic editor widget. Includes some menus just to exercise some of the features. The menus are NOT part of the widget itself. progress -- shows the progress bar. Just runs from 0 to 100% complete over a ten second period, then exits. status -- shows the status bar all by itself. Pretty boring, actually. You can press CAP and NUM locks and watch it, though. Also shows the embedded progress bar, which runs from 0 to 100% over a ten second period, then hides itself. Ooohhhh.... single and multiple are both based off of FancyEditor, and are otherwise unchanged. ************************************** Version 0.2 October 4, 1999 Changes since 0.1.3 ************************************** * Made scrollbar one pixel wider (looks more like rest of FLTK). * Added "Status Panel" toggle to "single" demo's edit menu. -------- * Changed the justification constants in strings.h to avoid naming conflicts. * Removed unused datetime.h file. * Added a "Browse mode". (activated by calling editor->browse(true)). While in browse mode, the cursor is hidden, and the up/down arrows scroll up and down (assuming, of course, there's something to scroll). Added a HideCursor() function to support this, in addition to the mode switch. * Changed the "single" demo to have read only and browse toggles on the edit menu, just to test those modes. * Changed the scrollbar to behave better -- now it remains invisible until there is actually enough text to need it. Smart enough to show/hide itself as you add/delete text. ------- * Changed some functions from inline to non-inline to reduce code size. Left the ones that made sense as inline. Also recoded some of the inlines slightly to improve performance. * Removed all old non-standard boolean type definitions (BOOL and BOOLB). Also removed a bunch of typedefs (most weren't used anyway). * Exposed editor engine (via Engine() member) to allow for program control over the engine functions. Allows, among other things, changing the position and such. For example, to programmatically move to the top of the editor, just do: editWidget->Engine()->Command(MOVE_TOF); editWidget->SyncDisplay(); --------- * Changed the cursor into a widget. This made the drawing a lot less messy, eliminated the need for make_current(), and fixed problem with double buffered windows. * Changed the "single" test program to use a double buffered window, just for grins and to verify correct operation. * Changes to the Makefile. Now makes both static and shared libraries, Example programs are now statically linked. Just type "make" (or "make all") in the top directory to build everything. * Added a read-only mode. While in readonly mode, all the cursor navigation will still work, as will cut and copy to the clipboard, but anything which writes to the edit buffers is ignored. * Dragging the mouse outside the widget while scrolling will cause a continuous scroll in whichever direction the mouse was dragged (interval speed is definable). * More fixes to scrollbar. * Lots of drawing bug fixes. * More drawing optimizations. The Fl_Editor drawing is now broken down so that individual lines can be drawn using the drawline() protected member. Two new damage states were added (DAMAGE_LINE and DAMAGE_PARTIAL) to allow for more optimal redraw. * Preliminary support structure added for multiple fonts, colors, etc. Added a MeasureTextHeight() function to the engine, and a DrawState structure (stack) to the Fl_Editor. Neither of these do much yet, there's just there for future enhancements, and are subject to change as work progresses. * Tested against FLTK 1.05. ************************************** Version 0.1.3 June 27, 1999 Changes since 0.1.2 ************************************** * Widget now resizes appropriately when turning the panel on and off. * Improvements to scrollbar. Smoother now. *** Many thanks to Pim van Riezen for the patch. *** * Couple of case-sensitive errors fixed (included ".h" files when they were actually ".H") * Triple-click on an empty line works now. * Made resize() a public method and draw() a protected method to match FLTK base widget. ************************************** Version 0.1.2 June 21, 1999 Changes since 0.1.1 ************************************** * Added "line select mode". After triple-clicking the mouse, dragging selects text a line at a time. * Added "scroll select". Selecting with the mouse and then moving the mouse outside the widget boundaries will scroll the text and continue the selection. Added two inline functions (scrollspeed()) to get or set the speed at which this happens, with the default being five lines per second. * Renamed widget source files to better match FLTK naming conventions. fl_edit.cpp --> Fl_Editor.cxx fl_multi_edit.cpp --> Fl_MultiEditor.cxx ************************************** Version 0.1.1 June 19, 1999 Changes since 0.1 ************************************** * Added new mouse behaviour : double-click selects word, triple-click selects line. * Added color text highlighting via selection_color(). * Added read-only flag (get and set with ReadOnly()) * Added ability to turn word wrap on and off. (See documentation for details.) * Forced the widget to take the focus if the mouse is clicked on it while it is unfocused (it was reported that it was not marking text properly without this). * Pressing Backspace while text is selected now erases the text. (Has the same exact effect as pressing Delete.) * Modified middle-mouse handling to force a paste when running on platforms other than Win32. * Fixed drawing bug when selecting text with the mouse (manifested itself as looking like there were multiple regions selected when moving the mouse quickly). * Fixed the scrollbar code to (a) look better, and (b) work better. *** Many thanks to Pim van Riezen for the patch. *** * Renamed header files to be more in keeping with FLTK file naming conventions: fl_edit.h became Fl_Editor.H fl_multi_edit.h became Fl_MultiEditor.H * Changed the header files to use FL_EXPORT instead of RCLE_DLL. Still has the same function (dealing with Visual C++'s DLL exporting quirks under Win32). ************************************** Version 0.1 June 18, 1999 ************************************** Initial Release