aboutsummaryrefslogtreecommitdiff
path: root/libXaw/old-doc/Changelog
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2009-11-06 11:03:40 +0000
committermarha <marha@users.sourceforge.net>2009-11-06 11:03:40 +0000
commit08cb4425442ca65ec28d6a2f023f885e35a7f0ed (patch)
treea9061a472d247bce27d7fb6c700c5b7e2755d036 /libXaw/old-doc/Changelog
parentccdb20929567c70c1bbdd5df275ca7bea5c747a7 (diff)
parentace7902333b6f61aab5a6035dbcb222763bff186 (diff)
downloadvcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.tar.gz
vcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.tar.bz2
vcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.zip
Added libXaw
Diffstat (limited to 'libXaw/old-doc/Changelog')
-rw-r--r--libXaw/old-doc/Changelog1370
1 files changed, 1370 insertions, 0 deletions
diff --git a/libXaw/old-doc/Changelog b/libXaw/old-doc/Changelog
new file mode 100644
index 000000000..263ae04d5
--- /dev/null
+++ b/libXaw/old-doc/Changelog
@@ -0,0 +1,1370 @@
+Patch 1 (#1655) 15 April 1998
+
+ Description of the actions system:
+--------------------------------------------------------------------
+ All the actions have the syntax:
+
+action-name(boolean-expression, args)
+
+ Where:
+action-name:
+ Any string with a translation binding in the binary for the widget.
+
+boolean-expression:
+ [{~}]variable-name|resource-name|constant-name[{&|^}[[{~}]variable-name|resource-name|constant-name]]...
+
+variable-name:
+ Any string starting with a '$' character (actually it's not possible
+ to mask this character; I'll fix it). Variables are actually created
+ with the translations 'declare' and 'get-values'. Example:
+ get-values(1, $x, x)
+ declare(1, $armed, true)
+
+resource-name:
+ Any resource name of the widget. Note that it requires a <TYPE> to
+ string converter in the code (I added some on the patches), since
+ all variables values are stored in a 'String' format. Example:
+ borderWidth
+ height
+ font
+ background
+
+constant-name:
+ Especial values. They aren't normally contants, but a special state
+ not triggered with resources or variables (They have the highest
+ precedence, so, to allow these strings as resource names I'll need
+ to allow some sort of escape sequences). Examples:
+ mine # event->xany.window == XtWindow(widget)
+ faked # event->xany.send_event != 0
+ true # you know
+ false # " "
+
+args:
+ Special strings values interpreted by the translation binding.
+
+The operators (currently) understood are:
+ ~ - NOT
+ & - AND
+ | - OR
+ ^ - XOR
+ ( - RP
+ ) - LP
+ The final result value is and'ed with 1.
+
+Sample translation to make a label widget behave like a button:
+<Map>:\
+ get-values(1, $fg, foreground, $bg, background)\n\
+<Btn1Down>:\
+ set-values(1, foreground, yellow, background, gray30)\n\
+<Btn1Up>:\
+ set-values(1, foreground, $fg, background, $bg)\n
+
+
+ Description of the displayList system:
+--------------------------------------------------------------------
+ The display list has the syntax:
+
+[class-name:]function-name args[{;|\n}]...
+
+ Where:
+class-name:
+ Any registered set of functions. The code registers the class 'xlib',
+ and if the class name is not specified, this class is assumed.
+
+function-name:
+ A string binding to the correct function to be called.
+
+args:
+ A set of converted and shareable arguments, to the function. The
+ positioning/sizing arguments currently implemented have the syntax:
+{+-}<integer> or <integer>/<integer>. Examples:
+ +0,+0 top, left
+ -0,-0 bottom, right
+ -+10,-+10 bottom+10, right+10
+ +0,1/2 left, vcenter
+
+ All displayLists are shared by:
+ widget->core.screen
+ widget->core.colormap
+ widget->core.depth
+ I have added only partial code for handling non-windowed widgets (gadgets).
+I'll fix it.
+
+ Example for drawing two lines crossing the widget:
+foreground black;\
+line +0,+0,-0,-0;\
+line +0,-0,-0,+0
+
+
+
+Patch 2 (#1660) 19 April 1998
+
+ + More functions for displayList's
+ + Fixes for simpleMenuWidget, xfontsel should work very better now. Try
+ this with the newer patches to verify the changes:
+ xfontsel -xrm '*XFontSel*SimpleMenu*font:
+-*-helvetica-medium-r-*-*-16-*-*-*-*-*-*-1'
+ + Small bug fix to boxWidget, viewres should work better now. Try this
+ to verify the changes:
+ viewres -xrm '*Viewres*Box.borderWidth: 1'
+ + Small bug fix to panedWidget, when pressing in a gripWidget but not
+ moving the pointer, or releasing at the same coordinates.
+
+Patch 3 (#1673) 25 April 1998
+
+ + Changes in layout code for the Form widget. To see the changes, run xcalc
+ and resize it several times (try giving it a very small size and the
+ restore the size). The new code uses a 'known' reference size/position
+ to avoid integer rounding problems.
+ + A optimization for the Form widget. Now it unmaps itself before resizing
+ the child widgets. This way the layout process is very faster.
+ + The List widget will try to fit in a 32767x32767 window size. It checks
+ if the width or height will become bigger than 32767 and if will, changes
+ the number of columns. This fixes xman (at least for me, that have several
+ entries in the section 3 of the manpages).
+ + New functions to displayList's and fixes to some bad bugs (I'm yet working
+ on that file).
+ + Change in the Scrollbar functionality. It was redrawing the thumb when
+ triggering the MoveThumb action. This is bad because several programs
+ choose to recalculate the thumb position with XawScrollbarSetThumb, causing
+ screen flickering. Now it redraws the thumb when triggering the NotifyThumb
+ action. To verify the changes, run xfm or xman and try to scroll past the
+ end of a window; it will keep erasing and redrawing the thumb.
+ + Other change in the Scrollbar is that it will only draw in the rectangle:
+ 1, 1, core.width - 1, core.height - 1. It is better when creatting a 3d
+ effect with displayList's.
+
+
+Patch 4 (#1678) 3 May 1998
+
+Included the patches for the recent problems with libXaw.
+Several 'gratuitous' small changes, to compile cleanly with gcc -Wall.
+Some bug fixes for DisplayList.c.
+Colored pixmaps support. I'm building a abstraction layer for the colored
+ pixmaps, so that it should be easy to support more pixmap formats
+ (actually, only X bitmaps).
+
+
+Patch 5 (#1686) 11 May 1998
+
+ + Patch to libXmu, so that the StringToCursor converter will understand the
+ string 'None', that means not to use a cursor. This is useful when
+ overriding resource settings, and the user wants to use the parent window
+ cursor, or the root window cursor. Any unrecognized name will generate
+ a 'None' cursor, but then with a warning message.
+ + SimpleWidget was modified to allow setting the cursor to none, when it
+ was a valid cursor.
+ + Modification in the Actions.c,
+ from:
+ typedef struct _XawActionVar {
+ XrmQuark qname;
+ String value;
+ } XawActionVar;
+ to:
+ typedef struct _XawActionVar {
+ XrmQuark qname;
+ XrmQuark qvalue;
+ } XawActionVar;
+ This does not cause any problems, since the exported interface remains
+ the same. This is required to avoid to much copies of the same string.
+ + Values of action variables can start with '$'.
+ + If a resource name clashes with a special constant name when evaluating
+ a boolean expression (in the translations code), it's enough
+ start the resource name with '\\' (it can always be used, but is
+ only useful if there is a name clash :).
+ + The only code that loads data files actually is the pixmap code. To avoid
+ security problems, the code only loads files that are group readable,
+ regular file, non suid and non sgid.
+ + If the code to load a pixmap does not find a match, and the pixmap name
+ has a extension, try without the extension.
+ + Function 'line-with' added to displayList code.
+ + Added DisplayListToString and PixmapToString converters.
+ + Bug fixes in the pixmap name interpretation.
+
+
+Patch 6 (#1701) 24 May 1998
+
+ Xaw
+ ------
+ + Allows setting the resources label_x and label_y inherited from labelWidget.
+ This is useful for moving the contents of a button when it is pressed
+ ( I included a simple test for it )
+ + Added OS/2 patchs
+ + The buffer overflow problems were resolved in a different way. I added
+ a function XmuSnprintf, that is used by Xaw and Xmu.
+ + Correction of a problem in SimpleMenu, when it tries to optimize the
+ space used by the menu.
+
+ Xmu
+ -----
+ + Function XmuNCopyISOLatin1Lowered, defined in <X11/Xmu/CharSet.h>
+ + Function XmuSnprintf, defined in <X11/Xmu/SysUtil.h>
+ + All ocurrences of sprintf were replaced by XmuSnprintf and all ocurrences
+ of XmuCopyISOLatin1Lowered were replaced by XmuNCopyISOLation1Lowered.
+
+
+Patch 7 (#1738) 21 June 1998
+
+ + Corrected problem with the Command widget, when it was made insensitive
+ without calling the 'reset' action.
+ + Rework of the SimpleMenu code for optimizing the space used. Now it
+ really works as intended.
+ + Fixed portability problems with my previous patches.
+ + Corrected problem pointed by 'grano@cs.Helsinki.FI'. He have followed up
+ a bug report to the devel mailing list. While the problem exist, his
+ patch was not complete, so I did a rework of the AsciiSrc.c:Scan() and
+ MultiSrc.c:Scan() functions.
+ + I added clipping code to the {Ascii,Multi}Sink widgets, to allow use of
+ displayList's as decoration. The best solution I found to avoid too much
+ server requests, and keep full binary compatability was to use the resize
+ method of these widgets, to tell them to the parent widget have changed
+ it's size.
+ + Now the TextWidget has a xterm/emacs like cursor. And it is possible to
+ especify a cursor color.
+ + Fixed several problems caused by code assuming a line of text will be
+ shown as one line in the TextWidget. This is not always true when
+ it uses XawtextWrapLine or XawTextWrapWord, the most common problem was
+ the cursor becomming invisible, after calling the function
+ Text.c:_XawTextShowPosition() that is called to make sure it is visible ;)
+ + Added code that it will not forget the cursor distance from the left of
+ the window while moving the cursor one line up or down.
+ + Ansification of the text code (not yet complete). Private routines now
+ uses prototypes and wide parameters. External routines were kept
+ as before (but with prototypes not masked by NeedFunctionPrototypes),
+ to avoid binary compatability problems. The bigger problem I found in the
+ ansification was a function with 6 parameters being called with only 5.
+ + Several routines were rewritten, sometimes from scratch.
+ + The cursor navigation of the TextWidget was completely reviewed. It
+ should be very familiar to Emacs users. The most Emacs like behaviour is
+ when the cursor in move one line up or down and becomes invisible; the
+ text will be scrolled so that the line with the cursor will be centered
+ in the screen. Also, when doing page up, the cursor will be positioned
+ in the bottom-left, instead of allways in the top-left.
+
+Patch 8 (#1752) 27 June 1998
+
+ + There was a problem with the previous patch regarding to portability.
+ The problem was strcasecmp. I was planning to provide the funcionality
+ in libXmu, and forgot when creating the previous patch :(. There is
+ already a strcasecmp equivalent in libXmu, that is
+ Lower.c:XmuCompareISOLatin1(), so I used that function.
+ + The previous patch was working correctly for viewing text, but there were
+ some cases the text window could end not displaying correctly the text.
+ This problem was fixed.
+ + Now, the only real need of scrollbars is when doing long jumps on the
+ text, because the cursor will be always visible since this new patch
+ does horizontal scrolling automatically.
+
+
+Patch 9 (#1755) 28 June 1998
+
+ + Removed all my RCS idents in the files.
+ + Declared functions as static in the prototype and in the definition
+ (this basically reverts a previous patch, but should help when applying
+ the patches sequentially).
+ + Changed the code in Pixmap.c to use strtok instead of strsep, that is
+ not portable.
+ + Corrected problem with previous patch that would cause trouble when
+ a text widget had more than 32K bytes, and would also cause offset
+ mismatches if a program access private structures (AsciiSinkP.h).
+
+
+#1776 6 July 1998
+
+Corrected problem when moving the cursor over a non-printing character,
+ i.e. ^Q ^X
+Does not allow anymore scrolling of the text width Ctrl+Z if the text has
+ only one line, or only one line of text.
+Several changes in the TextWidget. I did not gratuitously break binary
+ compatability. Source compatability is only granted to programs that
+ do not access private structures. This is required because there are
+ several changes in the behaviour of the TextWidget, and if a program
+ becomes non compilable, it is because it will not work properly with
+ the changes in the text widget (please read bellow for a explanation)
+Better cursor navigation when moving line-up or line-down over a tab:
+ cursor
+ |
+ v
+ spaces | |#| | | |text
+ tab | |text
+ Move one line down:
+ before:
+ tab |# |text
+ now:
+ tab | |#ext
+There were several problems in the Text.c:_XawTextReplace(), when deleting
+ a character and the cursor (shoud be) moved to the previous line. This
+ problem was corrected.
+The text code was doing too much redrawing! When typping text, it would
+ redraw all the current line at each character typped, and also redraw the
+ entire window till the bottom. Now it only redraws the minimum necessary
+ (and makes a minimum of requests for the Xserver, when clearing areas),
+ most of these problems were related to Text.c:_XawTextReplace() (rewritten
+ from scratch), Text.c:_BuildLineTable() (mostly rewritten) and
+ Text.c:DisplayText() (mostly rewritten).
+Now, when selecting text, with: button1-down, button1-move, the window will
+ be scrolled automatically, if the mouse is moved to the top or bottom of
+ the text window, making it easier to extend selections.
+Added a set-keyboard-focus translation to the text code, and in the
+ default translation, it is called when pressing the left mouse button over
+ a text widget (so that the mouse does not need to be over the text window
+ when typping)
+
+These are the changes to Xaw that made it not fully source compatable (I'm
+open to comments, to make it source compatable, but as I said above, if
+a program does not compile anymore, it is because it is not granted it will
+work properly):
+scrollMode set to WhenNeeded is not supported anymore. I spent several
+ hours fighting side-effects caused when a scrollbar is created or destroyed
+ 'on demand', and have (after tired of long debug sessions) choosed that
+ it is not required (it saves a lot of potencial unespected conditions
+ being found by a user). I changed the 'type' of the scroll mode to Boolean,
+ so, to have a scrollbar, is enough to say: *Text.scrollVertical: True.
+ Since the type now is Boolean, Xt will print warning messages when the
+ scroll is set to 'Always', 'Never' or 'WhenNeeded'
+automatic resize is nonsense since the text does automatic horizontal
+ scrolling. IMHO, to be useful, automatic resize should also shrink the
+ text window when needed, anyway, it's not required anymore
+
+Comments:
+auto-fill mode does not work properly (never did)
+wrap-mode set to line may not work properly
+wrap-mode set to word does not work properly always (never did)
+the multiply should be setable to a variable value; the default value
+ is 4, i.e. Ctrl+U <text+action>
+I will work on the itens listed above, and I'm also planning:
+one level undo, for text actions
+C style indentation and 'jumping' the cursor to show matching '(', '['
+ and '{'
+other things that I don't remember now :)
+
+
+-- XMU --
+Moved the code clipping code I have put in Text.c in my previous patch to
+ Xmu/Clip.c. There was a bug in the code I have put in Text.c (this is what
+ I get by cutting and pasting code under a #if 0 :(), but it was corrected.
+ The code in the new file 'Clip.c' is very useful for creating clipiing lists
+ and thus, avoiding too much server requests, or code for the same
+ functionality (poorly) repeteated in several places around the libary. This
+ code is now heavily used by the TextWidget.
+
+
+-- XEDIT --
+Removed a XDefineCursor in xedit.c:main(). There are several ways to specify
+ a cursor for a program (most times inherited from the wm decoration window),
+ so, it is better to let the user choose one.
+Before starting the main loop, now xedit sets the keyboard focus to the
+ text window if a file was loaded, or to the prompt for a file name if
+ none was especified in the command line (do not use the new xedit without
+ the new Xaw library, or you will not be able to change the keyboard focus).
+Updated the Scrollbar configurations in Xedit.ad
+
+
+#1788 12 July 1998
+
+-- TextWidget --
+ + Corrected problem whem moving the cursor over a non-printing character
+ + Now, does not allow scroll with ^Z when there is only one line of text
+ + Automatic resize was removed, it is not required with automatic horizontal
+ scroll, but I will look for programs that rely on it; the only program
+ affected (that I know) is xmh, because it popups dialogs of a small size,
+ and expects that the text widget (with a warning message) do a geometry
+ request.
+ + Scroll mode set to "WhenNeeded" was removed. It generates several unespected
+ conditions when editing text, and the new feature of automatic scrolling
+ the text widget while typping is more useful.
+ + Removed a leak in TextAction.c:AutoFill(), generated by the code
+ text.ptr = (char *)XtMalloc(sizeof(wchar_t) * 2);
+ that memory was never released, but the fix was simple, since the amount
+ of memory requested is fixed.
+ + Several optimizations in the redisplay of the text.
+ + Now, wrap mode set to word or line is expected to work, while typping text.
+ + AutoFill will only break lines in word boundaries now.
+ + Added a set-keyboard-focus action to TextAction.c, so that when pressing
+ the left button over a text widget, it will receive the keyboard focus.
+ This behaviour is the default, but can be disabled, with something like:
+ *Text.translations: #override\n<Btn1Down>: select-start()\n
+ in your .Xdefaults.
+ + Corrected several cases that would left the text widget showing incorrect
+ data. All the problems should have been fixed, but in case you find one,
+ a quick fix is:
+ *Text.backgroundPixmap: black?foreground=<some-color>
+ because it does not try to optimize the redrawing when using a background
+ pixmap, and thus, avoid several possible problems.
+
+
+-- XAW --
+ + I had added a XawStackAlloc definition to "Private.h", to avoid a XtMalloc
+ request for every character typped in TextAction.c:InsertChar(), but
+ when syncing with 3.9Aj, saw that the file "XawAlloc.h" is no longer
+ required. Please, remove XawAlloc.h from 3.9Aj.
+
+
+-- XMU --
+ + Added the file Clip.c, with clipping code, that, now is being used by
+ the text widget, but can be used by other widgets.
+
+-- xedit --
+ + Removed a XDefineCursor from xedit.c:main()
+ + I have added a XtSetKeyboardFocus in xedit.c:main(), but comented it
+ because it would make xedit unusable with previous versions of Xaw,
+ or with the Xaw replacements (Xaw3d, Xaw95 ...)
+
+Comments:
+ I wrote a lot of code to work properly with italic fonts in the text widget,
+that code made the cursor do not erase portions of the text while moving the
+it, but it was failing at some places that would need that the TextWidget,
+and not only the {Ascii,Multi}SinkObject had access to the fonts, so I
+choosed to left it to the future (and keep the sources simple, by now).
+The text widget is useable with italic fonts, but fonts with:
+ f->per_char[<char> - f->min_char_or_byte2].rbearing
+ > f->per_char[<char> - f->min_char_or_byte2].width
+or
+ f->per_char[<char> - f->min_char_or_byte2].lbearing < 0
+will not allways be displayed correctly.
+
+ I haved also added a xedit configuration file to this mail.
+
+
+#1842 27 July 1998
+
+Fixed problem with the default macro for type conversion, where it was
+ possible to the code tell the wrong size of a string, since it was
+ returning the string size with 'strlen' but making the copy with strcpy.
+Complete ansification of Xaw (and Xmu).
+Corrected some problems caused due to an alteration in the text code, to
+ make the cursor always visible when the wrap mode is 'line' or 'word'.
+Text.c:VJump() was made a bit smarter and a problem that would cause it
+ to jump incorrectly was also corrected so that now the jumping should be
+ very smooth.
+Corrected problem that would cause a coredump due to the
+ Text.c:_XawTextReplace() deferencing a NULL pointer. Now ctx->text.lt.info
+ is initialized when the text widget is created, solving this problem.
+All the variables with name 'new' and 'class' where renamed to 'cnew' and
+ 'cclass'. This allows even building Xaw with 'gcc -x c++'.
+Variables shadowing other variables or functions where also renamed.
+Static functions were changed to use wide parameters, where applicable.
+(Almost) every time a StringTo<Type> converter is installed in the class
+ initialization of a widget, the code also installs a <Type>ToString converter
+ since now editres seens to work better.
+Complete reestilization of the indentation. See the files Template*.{c,h}.
+Corrected problem with the 'virtual' function Layout of the Form widget. That
+ function requires 4 parameters, but the Viewport widget (a Form subclass) was
+ calling that function with only 3 parameters; the ansification flagred that
+ error.
+TextTr.c was modified to have only one string. I believe that that weird
+ thing was due to the inheritance of compatability with some very old and
+ probably buggy ld.
+Xaw is expected to be binary compatable with R6.3; there are some
+ preprocessor macros that keeps binary compatability, and unless the gains
+ of breaking binary compatability show worth enough (and people think) it
+ is good that code would be made default, otherwise it will be forgotten.
+I have also added a XFree86 copyright notice to Text.c, since there is
+ a very large amount of work in that file (and it is not yet ready).
+---------------------
+
+-------- Xmu --------
+Complete ansification of Xmu.
+Rework of EditresCom.c to allow editres working correctly. It was also
+ added a new feature, that allows editres finding some extra child widgets,
+ i.e. widgets that aren't a child of a subclass of composite and aren't in
+ the popup list. This modification is not enough, since it does not find
+ child widgets that don't a XtRWidget resource in the parent widget.
+Rework of ShapeWidg.c, so that it will give the correct feeling to the
+ ellipse shape, and inversion of the oval, if shape is oval and
+ height > width. To see these changes, run a program with:
+ <prog> -xrm '*shapeStyle: ellipse'
+ and/or
+ <prog> -xrm '*shapeStyle: oval'
+Revision of DrRndRect.c to make the widget looks 'more correct' when using:
+ <prog> -xrm '*shapeStyle: roundedRectangle'
+---------------------
+
+------ editres ------
+Added small patch to bug in handler.c so that editres will correctly now.
+---------------------
+
+------- xedit -------
+Changed the resources file, to avoid a problem when resizing xedit to a
+ very small size and than restoring it's size. Probably the culprit is the
+ Paned widget, but the new resource file is at least a good workaround for
+ the problem.
+The resource file was also modified so that the default xedit size will
+ give a 80x25 rows/columns when using the default font.
+---------------------
+
+-------- xgc --------
+Small patch to clear correctly the status text window, when pressing the
+ 'Clear window' button. Note that this patch showed a bug in
+ Xaw/{Ascii,Multi}Src.c; only apply this patch with the latest Xaw, or
+ be sure that Xaw/{Ascii,Multi}Src.c:*SetValues() has something like:
+ if (old_src->ascii_src.ascii_length != src->ascii_src.ascii_length)
+ src->ascii_src.piece_size = src->ascii_src.ascii_length + 1;
+ instead of:
+ if (old_src->ascii_src.ascii_length != src->ascii_src.ascii_length)
+ src->ascii_src.piece_size = src->ascii_src.ascii_length;
+ or it will enter a infinite XtMalloc(0) loop :(
+also fixed a possible buffer overflow while searching the source of the
+ bug described above.
+---------------------
+
+#1945, 31 Aug 1998
+
+-- XAW --
+ + Corrected bug in Viewport.c:ComputeLayout(), that would put the scrollbar
+ in the incorrect position, if w->viewport.useright == True
+ + Corrected bug in Converters.c:_XawCvtCARD32ToString(), so that now it
+ will correctly format the converted value.
+ + Corrected problem in {Ascii,Multi}Src.c:Search(), that would cause a
+ incorrect offset to be returned, if the searched text (or a substring of
+ it) were in a 'Piece' boundary.
+ + Some small patches to other sections of the code, to reduce the number
+ of warnings generated by gcc, when using more restrictive warning options.
+
+-- XMU --
+ + Corrected a problem in Atoms.c:GetAtomName(), to return a NULL pointer,
+ instead of a const if the given atom is 0.
+ + Corrected a typo in Xmu.h
+ + Several 'ansification' patches, to get function definitions and avoid
+ unecessary definitions.
+
+
+#2028, 2033, 7 Oct 1998
+
+-- Xaw --
+Added a delete translation to the text widget, that deletes the current
+ selection if any, else the backwards char.
+Corrected bug that would not update correctly the screen if page-up or
+ page-down was pressed while there was an selection.
+Added a ^Q<any-char> translation to the text widget, to be able to insert
+ any char in the text.
+Changed TextAction.c:Move() to set ctx->text.showposition, so that even
+ if the cursor did not change the position, it will become visible.
+Corrected problem with the 'form-paragraph' translation, so that the
+ text will be always correclty shown.
+Modified the automatic scrolling of the text to one line at a time, to
+ make it easier to see what is being selected.
+Added a 'hack' to be able to type ^U<any-numeric-sequence> to be able
+ set the multiply of the text widget. Since it is a hack (besides seens
+ to work very well) it can be disabled with -DNO_NUMERIC_HACK
+Corrected a nasty bug in Text.c:CvtStringToScrollMode(); XtConvertAndStore
+ can't be called from a type converter!
+added UNDO/REDO to the text widget. Please try it, I think it is very nice.
+ Undo is enabled by the new resource 'enableUndo', and, by default is
+ triggered with 'Ctrl+_'.
+
+-- editres --
+Resubmitting a patch to editres/handler.c, to make editres work properly.
+
+-- xedit --
+NOTE that with this patch, xedit probably will not work with Xaw3d, neXtaw...
+ this surelly can be fixed, or in the xedit side or the *Xaw* side, but
+ the patch seens to be necessary.
+Changed the defaults file to be more user friendly and previsible.
+ Added some 'Emacs like' binding translations.
+Added file completion in the filename prompt. This is a very nice
+ feature, but I'm not sure if the code is portable to all the XFree86
+ supported platforms (surely it will not work 'as is' with OS/2).
+
+
+#2083 18 Oct 1998
+
+-- XAW --
+Changed the functions {Ascii,Multi}Sink.c:CharWidth and PaintText, to
+ improve speed, and avoid too much recalculations. On normal files, it
+ becames about 5:1 faster, but can go up to 20:1 when editting files with
+ very large lines. Besides this speed improvement, I believe it can
+ surely be made faster (based on comparition with some popular X editors).
+Changed the way the AsciiSink prints characters with value bigger than
+ 126 decimal. Now it prints DEL as ^?, and the other characters as \XXX
+ where 'X' is an octal digit. The MultiSink widget was unchanged in this
+ respect, i.e. when calling xedit with something like:
+ xedit -xrm '*international: true'
+Converted all calls to strncpy, in AsciiSrc.c to memcpy, so that the (ascii)
+ text widget will work properly with data containing nulls.
+Added a experimental 'Xaw Scan Type' XawstAlphaNumeric, that shoud make
+ edition of C (or any other language) easier in xedit (i.e. the text widget).
+ It can be tested with Ctrl-Left and Ctrl-Right, by now.
+Changed the TextWidget to handle text lines that would result in more than
+ 32767 pixels. Besides the text widget is not meant to be used in the
+ edition of binary files, this change allows it.
+Changed Text.c:TextScroll() to be smarter when calculating the offset of
+ the line table on scroll up.
+Added a nice feature, to show the matching '(', '[' or '{', when a ')',
+ ']' or '}' is typped.
+Changed TextAction.c:FormParagraph() to generate only one undo/redo step.
+
+-- xedit --
+Changed the defaults file to enable backups and made the backup suffix
+ the character '~'.
+Replaced all instances of sprintf by XmuSnprintf.
+Changed xedit to set the label when saving a file also, to reflect what
+ is being edited correctly.
+Corrected a bug in the new action 'file-completion', to replace correctly
+ the home directory, and keep correctly whatever was after the '~'. This
+ isn't the correct place to this code (xedit/commands.c), since there are
+ several other file name prompt windows in Xaw, but since it is required
+ another window to show the possible matches, I'll study a better way to
+ implement it.
+Added a 'hints' feature to xedit. Instead of a 'dead'
+ "Use Control-S and Control-R to Search." label, now it allows the label
+ string being changed at user settable intervals.
+
+
+#2205 10 Nov 1998
+
+-- xaw --
+ + Fixed some 16 bit overflows in AsciiSink.c and some cases where it would draw
+ past the end of the text window (a no-op), the overflows were not a
+ problem, but could left the text window with incorrect data.
+ + Moved the undo/redo code to TextSrc.c, and some code/data from
+ {Ascii,Multi}Src.c to TextSrc.c. The callback now is called when the
+ source is changed, or becames unchanged due to an undo/redo. Also
+ changed the Scan procedure to be a bit faster.
+ + The asciiTextWidget will now accept a source or sink object being set at
+ creation time.
+ + Fixed the 'struct XawDisplayList' being redefined when compiling Xaw under
+ SunOS.
+ + Several changes to the SimpleMenuWidget to make the geometry management
+ work correctly when adding/removing/changing menu entries at run-time.
+ + Added a 'kill-ring' feature to the TextWidget. The behaviour is identical
+ to Emacs. Pressing C-K repeteadely will merge the lines being killed, so
+ that a C-Y latter will paste all the killed lines.
+ + Added the enough glue code (and as backwards compatible as possible) to
+ allow the *src object be shared between several TextWidgets. My initial idea
+ was to make the TextWidget be able to have more than one source, but, to
+ be backwards compatible, I did the reverse (the source can have more than
+ one TextWidget).
+ + Fixed a automatic wrap bug (TextWidget) that could eat non white space
+ characters (my previous patch to this problem was completely wrong).
+
+-- xedit --
+ + Added a split-window feature to xedit. To keep xedit simple, it only allows
+ two windows at the same time: or subdivides in the vertical or horizontal.
+ + Added more some key-bindings, that should do the same as Emacs.
+
+#2291 5 Dec 1998
+
+-- Xaw (only changes to the 'text' code) --
+ + Changed the default 'piece size' from BUFSIZ to the value returned by
+ the getpagesize() function (or keep BUFSIZ if that value is smaller).
+ + Added a case sensitive option to the search popup. This is a 'hack' by
+ now, but should not cause trouble to anybody.
+ + Fixed a bug inserted when changing the code for the search, the only side
+ effect I saw was that the jumping cursor to show the matching '(', '[' or '{'
+ stopped working in my last patch.
+ + Moved back my change to the function XawTextSetSource. The 'correct' function
+ is _XawTextSetSource. This is only to make sure old code should compile
+ cleanly.
+ + Added line and column number calculation code (and a callback to tell when
+ that information changed) to the TextWidget. This was not an easy task,
+ because I tried to optimize as much as possible the code, and do relative
+ calculations, instead of scanning the entire file to count the number of
+ lines (there are several special cases, when removing/inserting text).
+ + Added the selection type XawselectAlphaNumeric. This adds one step in
+ the sequence word-line-all when doing multiclick in the text.
+ + Fixed some bugs in the 'kill ring' feature added in the last patch. Now
+ it is expected to never fail.
+ + Corrected the indentation of TextP.h, and changed more some fields. The
+ internal data of the TextWidget changed a lot, so it is not expected that
+ program code read directly the private data, at the price of requiring the
+ correct library version.
+ + Fixed a small bug in the undo code, that would 'think' the file was unchanged
+ in the incorrect position in the undo buffer.
+ + Changed the default key bindings for delete/kill word functions to use the
+ alpha numeric versions (this is better for coding, and more compatible with
+ other text editors).
+
+-- xedit --
+ + Changed the labelWindow, to show the current line number (but it is also
+ possible to show the current column number, offset or file size).
+ + Fixed bug when saving the *scratch* buffer with a new name.
+ + The 'changedBitmap' is now correctly displayed on all the windows showing a
+ changed file.
+ + Small changes to the xedit man page.
+
+
+
+#2371 8 Jan 1999
+
+--- Xaw ---
+ + More some changes to AsciiSrc.c:Scan(). This improves a bit the speed when
+ scanning text.
+ + Added sanity checking for AsciiSrc.c:Search(), to avoid the risk of
+ deferecing a null pointer (or reading memory out of the text piece) if the
+ searched text happens to be larger than a "piece size".
+ + Fixed bug when trying to optimize line number calculation, due to a typo,
+ while meaning XawTextWrapNever I wrote XawTextWrapLine.
+ + Fixed a problem shown by xclipboard, when setting the "string" resource
+ of the text source, the sink object was keeping the insertPosition in the
+ old text contents, and then, when showing the cursor, it was incorrectly
+ 'erasing' the old cursor position.
+ + Fixed problem in XawTextReplace, that would not update correctly all the
+ TextWidget's sharing the same source.
+ + Added a kill ring list to the text code. This works like the emacs feature,
+ but, unlike emacs, it is not required to press C-Y before M-Y, to start
+ looping through the kill ring list. To use it, just press M-Y repeteadly,
+ and all the text that was killed will be inserted, one at a time, so that
+ you can choose one. Note that the text inserted from the kill ring list
+ will also enter in the undo list.
+ + Changed the Move{Backward,Forward}Paragraph actions to make the cursor always
+ stop in a blank line. This makes only one step moving from a paragragh to
+ another, instead of two.
+ + Added code to check for overflows in the C-U<number> sequence.
+ + Changed the FormParagraph action to keep the cursor at the correct position.
+ + Changed the default translations in TextTr.c to get a more emacs like
+ behaviour with the kill ring list.
+
+--- xedit ---
+ + Added a few more resource settings to the Xedit-sample file.
+ + Added some sanity checkings when trying to save a file. This avoids the
+ case of saving a file with the name of a directory (but moving the directoy
+ to other name before). A possible case is: have a directory named 'dir',
+ saves a file as 'dir', but before saving, renames the directory as 'dir~'.
+ + Allows saving a file that xedit thinks is not changed (the file may have
+ changed on the disk, but the user really wants to rewrite it).
+ + Corrected several bugs in the FileCompletion action, and added a new
+ feature, that is to complete the partial names, when there is a '/' or '.'
+ after the cursor position.
+
+
+#2479 19 Feb 1999
+
+-- Xaw --
+ + Fixed bug in the line numbering code, when removing lines before the
+ top position.
+ + Changed code to form regions to always show the cursor after formatting the
+ text.
+
+-- xedit --
+ + Added code to keep the file mode, after saving. This is useful when editting
+ scripts, so that the executable flag will not be lost after edition.
+
+
+#2544 12 Mar 1999
+
+-- Xaw --
+ Mostly changes to add support to latin-* languages in the text code, when not
+ using the international resource.
+Actions.c:
+ + Corrected some bugs in the boolean expression parser. The old version would
+ not parse correclty parenthized expressions, and was giving equal precedence
+ to AND, OR and XOR (what is incorrect).
+AsciiSink.c:
+ + Changed to display characters in the range 0x32-0x7e and 0xa0-0xff literally.
+ The other characters are represented as control-codes, as before. This is
+ better for edition of Latin-* text files.
+AsciiText.c:
+ + Changed the code, so that even if the *international resource is not set,
+ _XawImRegister and _XawImUnregister are called for the text widget. This is
+ useful for latin-* locales, that use one byte wide characters, and makes Xaw
+ more compatable with modern toolkits, like qt and gtk.
+List.c:
+ + Added code to work correctly with a background pixmap.
+ + Added a smarter code for list window size calculation, that is used if the
+ number of columns is especified to be zero (automatic).
+MultiSink.c:
+ + Fixed a core-dump problem caused when passing a null pointer to
+ XwcTextEscapement.
+Text.c:
+ + Removed the resource adjustScrollbars. This resource was not used, and its
+ funcionality was not finished, and by now, it is not required.
+TextAction.c:
+ + Does not call XLookpupString in InsertChar any more, but the new function
+ _XawLookupString (in XawIm.c) to work correclty with composed characters.
+XawIm.c:
+ + Added the private function _XawLookupString, that just calls XmbLookupString,
+ or in case of any initialization error, XLookupString.
+
+-- xedit --
+ The most important change is the addition of a new functionality, that allows
+ the user to navigate the file system, in a 'ls -a' like list widget, if
+ the file is not a directory it is loaded for edition, else, the list widget
+ is rebuilt with the contents of the selected directory. To test it, just
+ type: C-X d, or tab when 'finding a file'. To exit the dirwindow without
+ loading a file, type C-G or Escape.
+Xedit-sample:
+ + Added more some resource entries, to use the new 'emacs dired like' feature.
+Xedit.ad:
+ + Same as for Xedit-sample, but more important resource settings.
+commands.c:
+ + The code now checks if the filename is a directory and calls the dirwindow
+ code in that case, when trying to open a file.
+ + Changed the function IsDir from static to global, to use it from xedit.c.
+ + Most of the code for the filesystem navigation window was added to this file.
+util.c:
+ + Fixed a bug that was causing core dump due to passing garbage to XtGetValues
+ as the widget address.
+ + Added the code for managing the dirwindow and its relationship with the
+ text windows to this file.
+xedit.c:
+ + Added the code for creation the dirwindow to this file.
+
+
+#2638 2 Apr 1999
+-- Xaw --
+ + Added xpm pixmaps support to the library. This time, it is required to
+ compile Xaw with -DUSE_XPM.
+ + If the xpm image has a mask, the widget will be automatically reshaped
+ to the pixmap mask.
+ + Changed the kill_ring code in TextAction.c to always end in a text block
+ of zero length, this way, it is easier to know when one traversed the
+ entire kill ring (it may be interesting to forget the undo sequences
+ while traversing the kill ring list).
+
+-- xedit --
+ + Changed the Xedit.ad file to avoid overriding a translation that would
+ make the search window do not respond to WM_DELETE_WINODW messages.
+ + Fixed a core dump condition in the new code for listing files and
+ directories, due to deferencing a null pointer.
+
+
+#2662 10 Apr 1999
+-- Xaw --
+ + Corrected the problems gererated in my last patch. I was compiling with
+ -DUSE_XPM defined, and did'nt realize that the patch would not compile
+ without it. Just ifdef'ed again the code to avoid warnings or dead code.
+
+-- xedit --
+ + Added a ispell interface to xedit. Sorry for not documenting enough about it
+ the man page, but here is a small explanation of the new funcionality:
+ Replace: Replace's the selected word.
+ All (right side of Replace button): Replaces all occurrences of the selected
+ word.
+ Undo: When this button is sensitive, allow undoing the last replace,
+ this is useful when doing a incorrect "Replace All" action.
+ Ignore: Ignore this word, and continues spell checking.
+ All (right side of Ignore button): Ignore any further ocurrences of the
+ selected word.
+ Add: Add's the selected word to the user's private dictionary.
+ Suspend: Go back to text edition, but does not kill the ispell process,
+ This is useful if you have a really big dictionary or slow
+ machine. I believe it is mostly useful to keep in memory
+ the words selected to be ignored, but that you don't want to
+ add to your private dictionary.
+ Close: Kill the ispell process, and go back to text edition.
+ Automatically saves the user's private dictionary.
+ When pressing the Add button, the word in the "Mispelled word:" field is
+ added to the user private dictionary (normally ~/.ispell_*). When pressing
+ the Replace button, the text in the "Replace with:" field is used.
+ If no word is selected in the "Suggestions:" field, this mean that the
+ selected word was not found in the ispell dictionary.
+
+
+#2716 24 Apr 1999
+-- Xaw --
+ + Minor changes to AsciiSrc.c to try to get more speed in the FindPiece
+ function. Xedit may become very slow when editing files bigger than 1M,
+ and I'm studing ways to get more speed in the Scan and FindPiece functions.
+ The FindPosition function in *Sink.c also can consume a lot of cpu time,
+ and may need some rework.
+ + Added submenus support to the SimpleMenuWidget. This is something essencial
+ to a widget toolkit. Just plugged in the code of a menu widget I wrote some
+ time ago. Xedit uses submenus now. To use it, set the resource menuName
+ of a SmeBSBObject to the name of the submenu.
+ + Added code for text justification to the TextWidget. To use the justification,
+ set the resources autoFill, leftColumn and rightColumn. If autoFill is set,
+ and leftColumn is smaller than rightColumn, an alternate code will be
+ used in the form-paragrpah action, normally triggered with M-Q. The values
+ for justification can be left, right, center and full.
+ + Added a overwrite mode to the TextWidget. The default translation is to
+ press the Insert key, that will toggle the overwrite mode.
+ + Made the TextWidget understand negative values for the multiply. This is
+ like the emacs feature, to indent text to the left. To set a negative value
+ to the multiply, just start the numeric sequence with a '-'. Like C-U -1.
+ + The code for justification added several new functions to TextAction.c.
+ Functions to tabify, untabify, get block boundaries, verify if a line
+ is completely blank, and strip excess of spaces.
+ + Added a indent action to the TextWidget. The default translation, only
+ used by xedit, is C-X Tab, did this way, to make it fully compatable with
+ emacs, but other translations can be used. The multiply value is used to
+ calculate the amount of spaces to move to the left or right.
+ + Corrected a very hard to find (and reproduce) bug in the undo code, that
+ would easily cause core dumps. The problem would happen when starting
+ editing exactly in the moment the redo automatically reverts to undo.
+ + Added translations for toggling the overwriting mode with the Insert key,
+ and to paste the selection with S-Insert.
+
+-- xedit --
+ + Corrected all the known bugs in the ispell code (including a memory leak).
+ And added a compile time limit of 16 levels of undo, for all the actions,
+ that include Add, Ignore and Replace. 16 levels is more than enough, but
+ more than this can be done with the undo action, but then, only to revert
+ replaced text, to remove added words that the undo code forgot, it is
+ required to edit the personal dictionary file. The code now also understands
+ root/affix combinations, that ispell normally returns when using the
+ -m option. The ispell code should now also work when using the international
+ resource of the edit window.
+ + Added a new file, called options.c, that holds the code for the editMenu,
+ to enabling setting the wrap, autoFill, justify, leftColumn, rightColumn,
+ verticalScroll and horizontalScroll resources of the current edit window.
+
+
+#2746 1 May 1999
+-- Xaw --
+ + Reverted most of the #if NeedWidePrototypes definitions, only two
+ functions were kept, to not break some of the new features, but these
+ functions aren't called by any program: XawTextSinkDisplayText and
+ XawTextSinkClearToBackground.
+ + Rewrite of the functions *Sink.c:FindPosition() and FindDistance() to
+ try to get more speed.
+ + Reworked the function Text.c:_BuildLineTable, to correct some strange
+ code, and to avoid unecessary recalculations.
+ + Made negative values of the multiply work for all the actions, not only
+ for negative indentations. This makes the TextWidget behaviour more
+ compatable with emacs.
+ + Optimization of the new code for text justification, to avoid a call to
+ malloc on every char typped, when undo is enabled.
+ + Reorganized the offsets of the fields of the TextWidget, trying to make
+ xxgdb work again with the new Xaw code, but, unfortunately, the SimpleWidget
+ (a subclass of the TextWidget) have growed by 4 bytes (a XawDisplayList*)
+ added at the end of the structure, and xxgdb incorrectly reads the text.sink
+ field. Old xxgdb binaries dont work with the current code.
+ + Removed several XtIsSubclass checks in TextSrc.c. While those checks could
+ be useful for debugging, the functions are called so frequently that it is
+ a big waste of time for running programs.
+
+-- xedit --
+ + Added/Changed some translations to work correctly when CapsLock and/or NumLock
+ are pressed.
+ + Fixed some bugs in the ispell code. The biggest bug was that it was not
+ correctly saving the Add'ed words in the user dictionary when pressing the
+ Close button.
+
+
+#2764 8 May 1999
+-- Xaw --
+ + Create two new private functions, to replace internally the public interfaces.
+ These two functions are XawTextSinkClearToBackground and
+ XawTextSinkDisplayText. These two functions use wide prototypes, and
+ are required to support text lines that are represented by more than
+ 32767 pixels. This was done to make sure that the public interfaces remain
+ 100% backwards compatible.
+ + Fixed the deferencing of a null pointer when the source object of a text
+ widget is not initialized. I noticed this problem when recompiling xcolorsel.
+ + Added a new type converter to Converters.c, that is Short -> String.
+ + Added a new compile time option, called NO_BIN_COMPAT_HACK. If defined,
+ it will break some programs that access private data. It only works with
+ programs that access private data structures, but don't subclassify any
+ widget. It fixed old binaries of chimera1, the Offix editor and xxgdb.
+ There is no way to fix old binaries of chimera2, xcolorsel and xmh, these
+ programs need to be recompiled. I would like to know of other programs that
+ became broken, to try to fix them with the NO_BIN_COMPAT_HACK option.
+ + Fixed some compile warnings, with shadowed, uninitialized and unused
+ variables.
+ + Fixed a inifite loop problem that could happen when the text widget window
+ was resized to a very small width.
+ + Reverted some of the text widget translations, to avoid conflicts when
+ setting the input focus and programs that do so.
+
+-- xedit --
+ + Fixed a problem in the file-completion code, that would insert the partial
+ match in the incorrect position, if the cursor was not at the end of the
+ string.
+ + Changed ispell.c to use only one hash for ignored and added words. Also
+ changed the IspellSend function to not call itself recursively, what is
+ a big problem when spell checking big files that are correct or have too
+ few errors.
+
+-- editres --
+ + Changed Editres.ad in several places, to try to avoid resource setting
+ problems. Most of them were changed to address more directly the resource,
+ and avoid confusion. Also, added some new resource settings to configure
+ the code I added to widgets.c.
+ + Changed widgets.c to make sure the resource setting dialog is allways
+ entirely in the screen, and if it does not fit, scrollbars will be created.
+
+
+#2793 15 May 1999
+-- Xaw --
+ + Changed AsciiSrc.c:LoadPieces to load the file incrementally, instead of
+ allocating a big buffer.
+ + Added several new functions to DisplayList.c. Almost all gc and painting
+ related functions were mapped to displayList functions. There are
+ several optimizations that can yet be done to the displayList code, and
+ I'm working on it. That code is clearly not finished yet, but is stable.
+ Also, changed some functions to be more exigent with it's parameters,
+ because it is better to receive a warning message than see the program
+ core dumping. The functions are documented in Xaw.man.
+ + Corrected a problem in the SimpleMenu code, to make the sub menus popup
+ more 'visually' correct, when popping up in the left side.
+ + Added a optimization in Text.c, to avoid unnecessarily recalculating
+ the line and column number when scrolling text. A big speed up should
+ be seen when scrolling large files.
+ + Modified all code that expected TAB_SIZE to be equal to 8, to read the
+ TextSink resources, and work properly with whatever value the program
+ had set to the tab stops.
+ + Fixed a very bad bug in the form-paragraph function. It was very hard
+ to find because I was looking at the wrong places. If the text was
+ allready formatted, or did not need formatting, the code was not
+ reenabling undo, making the undo/redo behaviour imprevisible.
+
+-- xedit --
+ + Added Xedit-color.ad file, to show some of the new features of Xaw.
+ Tried to keep it simple, but since it uses gradients, maybe it should
+ better be called Xedit-TrueColor. The better way to see the functionality
+ of this file is (if you don't have it already) add to your .Xdefaults:
+#ifdef COLOR
+*customization: -color
+#endif
+ and make sure xrdb parses it.
+ + Changed a bit Xedit.ad, to work properly when Caps Lock is pressed.
+ + Several changes to ispell.c. It should run very faster now, because
+ the code keeps information about words already ignored or correct
+ in the xedit side, instead of asking ispell every time. Added also
+ a terseMode resource, and made the interface ask for user interaction
+ allways ispell does not say the word is completely correct; the
+ terseMode resource makes ispell itself decide what words are correct
+ or not.
+
+-- editres --
+ + Small patch to Edit-col.ad, to use a default text cursor color of 'Azure'
+ in text fields, instead of the default 'black'.
+
+
+#2811 22 May 1999
+-- Xaw --
+ + Removed the 'NO_NUMERIC_HACK' preprocessor definition, and renamed the
+ 'doing_numeric_hack' field of the text widget to 'numeric'.
+ + Changed the code to always create the horizontal scrollbar, if requested.
+ + Small changes to TextPop.c, to automatically scroll horizontally the
+ text window when the text found in a search/replace action is not visible.
+ + Added a optimization when editting large files, to rebuild the line table
+ if the region containing the text being added/replaced overlaps the lt.top
+ field of the text widget.
+ + Changed the undo code to also merge text typed when overwrite mode is
+ active. The new behaviour is not like emacs (that generates a undo step
+ for every character), but uses less memory, making only one undo/redo step.
+
+-- xedit --
+ + Added a new file, hook.c that is intended to be used for the addition of
+ some new features to xedit, like auto indentation of program files. The
+ first feature added is the 'autoReplace' resource, described in the xedit
+ man page.
+ + Corrected a bug in ispell.c, that would make the code alocate lots of
+ memory unnecessarily, due to an uninitialized variable. Thanks to David
+ Dawes that found the bug. The bug was not in 3.9Pn, but the solution in
+ the later release was not completely correct.
+
+
+#2834 29 May 1999
+-- Xaw --
+ + Added a ChangeSensitive function to Command.c, to avoid it creating an
+ incorrect insensitive border if the button is set. This is a side effect of
+ the function XawCommandToggle I added some time ago. The solution for the
+ problem is not very elegant, since it copies almost verbatim the code from
+ Simple.c, but it works as expected.
+ + Moved some calls to _XawTextSetLineAndColumnNumber in Text.c to other places,
+ to make sure it is safe to change the text when the positionCallback is
+ called (like what is done by the new xedit file hook.c).
+ + Another optimization was added to the undo/redo code. Now it also merge
+ erases, needing yet less memory for undo, and this way, generating less
+ undo/redo steps.
+ + Removed the default translation to call the toggle-overwrite action from
+ TextTr.c. Only the xedit edit windows calls this translation now, instead of
+ every text widget.
+
+-- xedit --
+ + Changed the auto replace feature to be a bit more easier to use. The new
+ behaviour is almost identical, but if the user types some text, and it is
+ auto replaced, only one undo step is enough to correct it. Example:
+ 1) user types 'nto.'
+ 2) text is auto replaced by 'not.'
+ 3) user call undo action
+ 4) text is converted to 'nto.'
+ It should be a very infrequent problem, but makes the xedit behaviour
+ identical to a "well known text editor", from where this feature was borrowed.
+ + Added a 'Check' button to the ispell interface. This button allows
+ checking the word in the text field. This feature was borrowed from the spell
+ checking interface of the Netscape html editor.
+ + The ispell checking interface now also asks for user interaction if there are
+ two identical words togheter.
+ + Added a status bar to the ispell interface, to give feedback to the user
+ about what is happening.
+ + Added some new resources, to let easier customization of the ispell status
+ bar strings. The new resources are documented in xedit.man.
+
+#2849 5 Jun 1999
+-- Xaw --
+ + Add a OLDXAW define, to enable building a binary compatible version with
+ 6.1, and changes to the Imakefile, to try to keep the changes only in Xaw.
+ I hope it can be removed in the future.
+ + Add a XawVendor define, with the value "XFree86". If this is not a good
+ idea, please correct it an let me know.
+ + Add a XawVersion define. The value for the new xaw is 7000L, and for the
+ compatible one is 6700L (same comments as for the XawVendor define).
+ + Bug fixes to the undo/redo code, and code to merge erases generated by
+ ^H and ^D. Also, if the cursor is moved, it stops merging the text typped
+ in the undo buffer.
+ + Bug fixes to the Form widget geometry management code, to work correctly
+ when child widgets are removed or added at run time.
+ + Xaw now links with XPM by default, and the config files where changed to
+ enable newly compiled programs to do so.
+ + Added 16 pad bytes to every widget, to try to avoid binary compatability
+ problems in the future.
+ + Added a displayList resource to the Tree Widget.
+ + Added the functions XawTextGetSink and XawTextLastPosition, to enable a
+ public way to get the <TextWidget>->text.sink and <TextWidget>->text.lastPos,
+ since these are the most commonly private fields the programs access in
+ the text widget.
+ + Added the actions 'capitalize-word', 'donwcase-word' and 'upcase-word' to
+ TextAction.c. The bindings are the same as of Emacs (and the way it works).
+ + Corrected some problems with negative values of the <TextWidget>->text.mult.
+
+-- xedit --
+ + Correct possible problem in the file hook.c, when interpreting the auto
+ replace list, that is, it was not checking the buffer size when finding
+ the '\' character.
+ + Updates for the configuration files.
+ + Added a 'Look' button the the ispell interface, that will by default run
+ "/usr/bin/bin/egrep -i '^<VALUE OF TEXT FIELD>.*$' /usr/share/dict/words"
+ and put up to 256 returned words in the ispell list. The behavior is
+ almost identical to the one in the terminal interface of ispell.
+ + The ispell interface works correctly with aspell now.
+ + Added some resources and a popup to enable changing the dictionaries in
+ run time.
+ + Added a toggle button to the ispell interface to allow changing the terse
+ mode in run-time.
+ + Added a 'Uncap' button, to allow adding an uncapitalized word to the
+ private dictionary, and enough code to do the capitalization checks inside
+ of xedit (to enable undo actions).
+ + Added a "text mode" and a "html mode". The html mode is not yet completely
+ finished. It must work correctly with some html specific things like
+ converting internally "&aacute;" to "รก" and so on. I'm planning also, at
+ least a nroff mode too.
+ + The wordChars resource is set by dictionary now.
+ To set the word chars for the br dictionary, write something like:
+ *ispell*options.dictionaries.br.wordChars: <VALUE>
+ or
+ *ispell*br.wordChars: <VALUE>
+ or simply
+ *ispell*wordChars: <VALUE>
+ + The skipLines resource is set only for the text mode now.
+ To set it, write something like:
+ *ispell*options.formats.text.skipLines: <VALUE>
+ or
+ *ispell*options*text.skipLines: <VALUE>
+ or simply
+ *ispell*skipLines: <VALUE>
+
+
+#2877 12 Jun 1999
+-- Xaw --
+ + Note: The compatible old version of Xaw is not fully compatible. There
+ a few things that are not equal to the standard old Xaw. These are:
+ + The cursor code in the *Sink.c files is not identical, and the
+ field insertCursorOn (type Pixmap) was replaced by the field
+ cursor_position (type XawTextPosition).
+ + There are some changes in TextP.h, that include changes to the fields:
+ options -> left_margin
+ unrealize_callbacks -> pad1
+ updateFrom -> update
+ updateTo -> pad2
+ numranges -> pad3
+ maxranges -> from_left
+ copy_area_offsets -> pad4
+ + The text window does not increase its size when text is typed past
+ the end of the window, instead of it, it is automatically scrolled
+ horizontally, but this may not be enough to every usage of this
+ feature; xmh uses that code to make the text widget auto resize
+ warning popup widgets. I dont know what is better in this case,
+ if re-enabling the auto resize code of changing xmh to use label
+ widgets in the warning popups.
+ It is very unlikely that exists code that will have problems with these
+ changes in the fields of the TextWidget and the *SinkObject, but if any
+ code that has trouble with it exists, I will promptly make the required
+ changes to correct it (at least for the compatible version of Xaw).
+ + Several optimizations for the code to redisplay the text window in the
+ TextWidget. Including fixes for bugs in the XawTextScroll function, and
+ making it really works. Previous versions of the library have made this
+ function ineffective, because it was always redrawing everything when
+ the text window was scrolled. The optimizations should be more noticeable
+ when running some application that uses the TextWidget (like xedit) on
+ slow hardware, or over slow connections.
+ + Corrections for the FormWidget geometry management code, to work correctly
+ in the old version of Xaw, and some bug fixes for the new Xaw. Also added
+ 8 pad bytes to the FormConstraintsPart structure, to have space for extra
+ information on possible future optimizations for the FormWidget geometry
+ management code.
+ + Some fixes for the OLDXAW define in the SimpleMenuWidget code, that was
+ not hiding some of the new fields introduced in the new Xaw code.
+ + Some corrections for the code handling the necessity of having scrollbars
+ in the text widget, and bug fixes for cases where the scrollbars were not
+ being updated when the text window contents were changed.
+ + Re-enabled code to also process GraphicsExpose events in the text code. It
+ became required due to the optimizations in the text redisplay code.
+ + Several fixes in TextAction.c, for symbols that were not being included
+ in the compatible version of the library, and for symbols that were being
+ included with no need.
+ + Fixes for the form-paragraph action, in the old Xaw code.
+
+-- xedit --
+ + Some bug fixes for the ispell undo code, to avoid deferencing a NULL pointer
+ in the function IspellCheckUndo.
+ + Added code to handle correctly &<VALUE>; in ispell.c, when using the html
+ mode.
+ + Fixed some compile time warnings, and updated the code for setting the
+ scrollbars in options.c.
+
+
+#2899 19 Jun 1999
+-- Xaw --
+ + Changed all the 'char pad[<number>]' to 'XtPointer pad[<number>/4]' to
+ make sure 64 bit machines will not have binary compatibility problems before
+ the 32 bit ones.
+ + Added a new static function 'WritePiecesToFile' to AsciiSrc.c, to avoid
+ allocation of temporary memory. This is useful when editing very large
+ files (I have some people using xedit on text files that can have up to
+ 80,000 lines).
+ + Added more some optimizations to AsciiSrc.c:Scan, to try to get the maximum
+ speed of this function.
+ + Added a new function to the displayList's, called 'image', that will tile
+ pixmaps on the widget. It is documented in Xaw.man.
+ + Several widget classes did not have a 'extension' field. I added it to them.
+ The first usage of this field that I'm planning is to extend the *Src and
+ *Sink objects to handle formatted text, and add text properties, like
+ foreground, background, font and so on.
+ + Fixed a bug in MultiSrc.c, that was crashing Xaw after the first character
+ was typed, or if text was removed.
+ + Some minor changes to SimpleMenu.c, to work properly with very large menus.
+ + Fixed some bugs that were caused by my previous optimizations of the text
+ redisplay code.
+ + Bug fixes and optimizations to TextPop.c, there were some cases that the
+ function XawTextDisableRediplay was being called, but XawTextEnableRedisplay
+ was not being called later because of a error condition (the error
+ conditions were only warnings).
++ Updates to Xaw.man.
+
+-- xedit --
+ + Fixed a memory leak when freeing list widget strings. The code was not
+ releasing the memory of the string at offset 0, in the list.
+ + Changed the way the ispell undo code handles the terse mode, to not need
+ to make the toggle button insensitive.
+ + Updated xedit.man.
+
+
+#2932 26 Jun 1999
+-- Xaw --
+ + Added a new tip resource to the SimpleWidget. This may also be seen as
+ a test of the binary compatibility issues. Besides of being a new feature,
+ it cannot cause problems with old binaries, because the code is only
+ called if the tip resource is set to any SimpleWidget subclass. If the
+ tip resource is set or reset, the SimpleWidget code will call one of the
+ two new functions XawTipEnable or XawTipDisable.
+ + Added 3 new files: Tip.c, Tip.h and TipP.h. These files are used only
+ by the new Xaw.
+ + Updates to Xaw.man, including a problem with accented characters on SunOS.
+
+-- xedit --
+ + Added resource configurations to show the new tip code in Xaw.
+ + Some fixes to ispell.c, to make it more previsible/user-friendly.
+ + Fixes xedit.man to avoid problems with accented characters.
+
+
+#2964 3 Jul 1999
+-- Xaw --
+ + Fix for problem found in the search/replace dialog when using splitted
+ windows in xedit.
+ + Added initialization for the display_list field of the Tree widget.
+
+-- xedit --
+ + Fixed some problems in the undo code of ispell interface.
+
+
+#2999 10 Jul 1999
+-- Xaw --
+ + Added code to check the return value of XAllocColor and XAllocNamedColor in
+ Pixmap.c.
+ + Reverted back some code, and did a carefull review of the code in TextPop.c
+ to avoid the possibility of calling XawTextDisableRedisplay, and not calling
+ XawTextEnableRedisplay later (due to errors or end of file reached).
+ + Added code to TextSrc.c, to use two static variables, that represent a new
+ line in 8 bits and wchar_t, to avoid allocating memory in the undo buffers
+ to store only a new line.
+ + Small change in the behavior of the Tip widget, to not unmap the tip window
+ when the cursor is moved.
+
+-- Xmu --
+ + Fixed a bug and a typo in the XmuToupper macro.
+
+-- xedit --
+ + Small update to the Xedit-sample file.
+ + Fixed a bug in the ispell code that checks for repeated words.
+
+
+#3122 14 Aug 1999
+-- Xaw --
+ + Mixed fonts and colors can be used in the text widget (currently only
+ in the Ascii*Object).
+ + Added the XawTextAnchor, XawTextEntity, XawTextProperty, XawTextPropertyList,
+ XawTextPaintStruct, XawTextPaintList and XawTextPropertyInfo structures to
+ Xaw, to be used in the new text code.
+ + Added the functions XawTextSourceAddAnchor, XawTextSourceNextAnchor,
+ XawTextSourcePrevAnchor, XawTextSourceRemoveAnchor and
+ XawTextSinkConvertPropertyList, that probably should not be used outside of
+ Xaw.
+ + Added the functions XawTextSourceFindAnchor, XawTextSourceAnchorAndEntity,
+ XawTextSourceAddEntity, XawTextSourceClearEntities and XawTextSinkGetProperty
+ that are probably the ones that should be most used in programs.
+ + Italic fonts should be always displayed correctly.
+ + The text widget cursor is now displayed with a gc with the Xor function, to
+ avoid unnecessary computation/redrawing.
+ + Most changes were done in the {Ascii,Text}{Src,Sink}Object, but the text
+ widget was also a bit modified for things like automatically changing the
+ number of lines in the line table when needed.
+
+-- Xmu --
+ + Fixed bug in Clip.c, that could cause a SEGV.
+
+-- xedit --
+ + Added the file c-mode.c, to interface with the new Xaw text code, and show
+ what can be done when interfacing that new code.
+ + Added the necessary code to util.c and options.c to let the user select
+ if he or she wants to use the color/font syntax highlight in the C/C++ mode.
+
+
+# 26 Aug 1999
+
+--Xaw--
+ + Added initial support for two new XawTextEntity attributes, that enable
+ hidden text and replaced text. This initial support was the minimum
+ required to get the new html mode in xedit working. A lot of code does
+ math with text positions, and became broken with the addition of these
+ two attributes. Since only code that knows about these two attributes
+ should use it, it is only a question to fix the remaining code in
+ Xaw/xedit.
+ + Bug fixes to AsciiSink.c:PreparePaint to work correctly with tabs and
+ the two new entity attributes.
+ + Disabled the translation "c<Key>q,<Key>Tab" of the search/replace popup.
+ This action is already done by the translation "<Ctrl>Q,<Key>" that I added
+ to TextTr.c. Disabling that translation has the advantage that now it
+ is possible to replace ^Ms by nothing.
+ + Added some new functions to TextSink.c. The functions XawTextSinkCopyProperty,
+ XawTextSinkAddProperty and XawTextSinkCombineProperty are candidates to being
+ public in the future, but, there is a problem when using
+ XawTextSinkCombineProperty, that requires the AsciiSinkObject having the
+ correct XawTextPropertyList, what can generate a "chicken and egg" like
+ problem (I did some hacks in xedit to have the first html-mode version
+ working).
+ + Added several new flags to the XawTextProperty attributes, and a new field,
+ called xlfd_mask.
+ + Some bug fixes to XawTextSourceReplace and to the code to manage the
+ XawTextAnchor e XawTextEntity structures. The form-paragraph, called with
+ M-Q does several consecutive text changes, and was very useful to find bugs.
+ + The flag XAW_TENTF_REPLACE is a hack for XawTextSourceAddEntity currently.
+ The function XawTextSourceAddEntity will probably change its parameters
+ to receive a structure pointer, or a pointer parameter.
+
+--xedit--
+ + Fixed some bugs in c-mode.c. Again, this patch fixes all the bugs I have
+ found.
+ + Added the html-mode.c file to xedit. The html-mode is in its initial steps.
+ It is not usable yet, but should not core-dump or leak memory (unless you
+ try to edit the file, then, I cannot say what will happen). The html mode
+ should be used only to see a rendered version of the file, but, there are
+ several markups not implemented. To be usable, it must yet understand at
+ least <ul>, <ol>, <li>, <dl>, <dd>, <hr> and the table tags.
+
+
+
+$XFree86: xc/lib/Xaw/Changelog,v 3.31 1999/08/15 13:00:31 dawes Exp $