1371 lines
66 KiB
Plaintext
1371 lines
66 KiB
Plaintext
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 "á" 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 $
|