1Patch 1 (#1655) 15 April 1998 2 3 Description of the actions system: 4-------------------------------------------------------------------- 5 All the actions have the syntax: 6 7action-name(boolean-expression, args) 8 9 Where: 10action-name: 11 Any string with a translation binding in the binary for the widget. 12 13boolean-expression: 14 [{~}]variable-name|resource-name|constant-name[{&|^}[[{~}]variable-name|resource-name|constant-name]]... 15 16variable-name: 17 Any string starting with a '$' character (actually it's not possible 18 to mask this character; I'll fix it). Variables are actually created 19 with the translations 'declare' and 'get-values'. Example: 20 get-values(1, $x, x) 21 declare(1, $armed, true) 22 23resource-name: 24 Any resource name of the widget. Note that it requires a <TYPE> to 25 string converter in the code (I added some on the patches), since 26 all variables values are stored in a 'String' format. Example: 27 borderWidth 28 height 29 font 30 background 31 32constant-name: 33 Especial values. They aren't normally contants, but a special state 34 not triggered with resources or variables (They have the highest 35 precedence, so, to allow these strings as resource names I'll need 36 to allow some sort of escape sequences). Examples: 37 mine # event->xany.window == XtWindow(widget) 38 faked # event->xany.send_event != 0 39 true # you know 40 false # " " 41 42args: 43 Special strings values interpreted by the translation binding. 44 45The operators (currently) understood are: 46 ~ - NOT 47 & - AND 48 | - OR 49 ^ - XOR 50 ( - RP 51 ) - LP 52 The final result value is and'ed with 1. 53 54Sample translation to make a label widget behave like a button: 55<Map>:\ 56 get-values(1, $fg, foreground, $bg, background)\n\ 57<Btn1Down>:\ 58 set-values(1, foreground, yellow, background, gray30)\n\ 59<Btn1Up>:\ 60 set-values(1, foreground, $fg, background, $bg)\n 61 62 63 Description of the displayList system: 64-------------------------------------------------------------------- 65 The display list has the syntax: 66 67[class-name:]function-name args[{;|\n}]... 68 69 Where: 70class-name: 71 Any registered set of functions. The code registers the class 'xlib', 72 and if the class name is not specified, this class is assumed. 73 74function-name: 75 A string binding to the correct function to be called. 76 77args: 78 A set of converted and shareable arguments, to the function. The 79 positioning/sizing arguments currently implemented have the syntax: 80{+-}<integer> or <integer>/<integer>. Examples: 81 +0,+0 top, left 82 -0,-0 bottom, right 83 -+10,-+10 bottom+10, right+10 84 +0,1/2 left, vcenter 85 86 All displayLists are shared by: 87 widget->core.screen 88 widget->core.colormap 89 widget->core.depth 90 I have added only partial code for handling non-windowed widgets (gadgets). 91I'll fix it. 92 93 Example for drawing two lines crossing the widget: 94foreground black;\ 95line +0,+0,-0,-0;\ 96line +0,-0,-0,+0 97 98 99 100Patch 2 (#1660) 19 April 1998 101 102 + More functions for displayList's 103 + Fixes for simpleMenuWidget, xfontsel should work very better now. Try 104 this with the newer patches to verify the changes: 105 xfontsel -xrm '*XFontSel*SimpleMenu*font: 106-*-helvetica-medium-r-*-*-16-*-*-*-*-*-*-1' 107 + Small bug fix to boxWidget, viewres should work better now. Try this 108 to verify the changes: 109 viewres -xrm '*Viewres*Box.borderWidth: 1' 110 + Small bug fix to panedWidget, when pressing in a gripWidget but not 111 moving the pointer, or releasing at the same coordinates. 112 113Patch 3 (#1673) 25 April 1998 114 115 + Changes in layout code for the Form widget. To see the changes, run xcalc 116 and resize it several times (try giving it a very small size and the 117 restore the size). The new code uses a 'known' reference size/position 118 to avoid integer rounding problems. 119 + A optimization for the Form widget. Now it unmaps itself before resizing 120 the child widgets. This way the layout process is very faster. 121 + The List widget will try to fit in a 32767x32767 window size. It checks 122 if the width or height will become bigger than 32767 and if will, changes 123 the number of columns. This fixes xman (at least for me, that have several 124 entries in the section 3 of the manpages). 125 + New functions to displayList's and fixes to some bad bugs (I'm yet working 126 on that file). 127 + Change in the Scrollbar functionality. It was redrawing the thumb when 128 triggering the MoveThumb action. This is bad because several programs 129 choose to recalculate the thumb position with XawScrollbarSetThumb, causing 130 screen flickering. Now it redraws the thumb when triggering the NotifyThumb 131 action. To verify the changes, run xfm or xman and try to scroll past the 132 end of a window; it will keep erasing and redrawing the thumb. 133 + Other change in the Scrollbar is that it will only draw in the rectangle: 134 1, 1, core.width - 1, core.height - 1. It is better when creatting a 3d 135 effect with displayList's. 136 137 138Patch 4 (#1678) 3 May 1998 139 140Included the patches for the recent problems with libXaw. 141Several 'gratuitous' small changes, to compile cleanly with gcc -Wall. 142Some bug fixes for DisplayList.c. 143Colored pixmaps support. I'm building a abstraction layer for the colored 144 pixmaps, so that it should be easy to support more pixmap formats 145 (actually, only X bitmaps). 146 147 148Patch 5 (#1686) 11 May 1998 149 150 + Patch to libXmu, so that the StringToCursor converter will understand the 151 string 'None', that means not to use a cursor. This is useful when 152 overriding resource settings, and the user wants to use the parent window 153 cursor, or the root window cursor. Any unrecognized name will generate 154 a 'None' cursor, but then with a warning message. 155 + SimpleWidget was modified to allow setting the cursor to none, when it 156 was a valid cursor. 157 + Modification in the Actions.c, 158 from: 159 typedef struct _XawActionVar { 160 XrmQuark qname; 161 String value; 162 } XawActionVar; 163 to: 164 typedef struct _XawActionVar { 165 XrmQuark qname; 166 XrmQuark qvalue; 167 } XawActionVar; 168 This does not cause any problems, since the exported interface remains 169 the same. This is required to avoid to much copies of the same string. 170 + Values of action variables can start with '$'. 171 + If a resource name clashes with a special constant name when evaluating 172 a boolean expression (in the translations code), it's enough 173 start the resource name with '\\' (it can always be used, but is 174 only useful if there is a name clash :). 175 + The only code that loads data files actually is the pixmap code. To avoid 176 security problems, the code only loads files that are group readable, 177 regular file, non suid and non sgid. 178 + If the code to load a pixmap does not find a match, and the pixmap name 179 has a extension, try without the extension. 180 + Function 'line-with' added to displayList code. 181 + Added DisplayListToString and PixmapToString converters. 182 + Bug fixes in the pixmap name interpretation. 183 184 185Patch 6 (#1701) 24 May 1998 186 187 Xaw 188 ------ 189 + Allows setting the resources label_x and label_y inherited from labelWidget. 190 This is useful for moving the contents of a button when it is pressed 191 ( I included a simple test for it ) 192 + Added OS/2 patchs 193 + The buffer overflow problems were resolved in a different way. I added 194 a function XmuSnprintf, that is used by Xaw and Xmu. 195 + Correction of a problem in SimpleMenu, when it tries to optimize the 196 space used by the menu. 197 198 Xmu 199 ----- 200 + Function XmuNCopyISOLatin1Lowered, defined in <X11/Xmu/CharSet.h> 201 + Function XmuSnprintf, defined in <X11/Xmu/SysUtil.h> 202 + All ocurrences of sprintf were replaced by XmuSnprintf and all ocurrences 203 of XmuCopyISOLatin1Lowered were replaced by XmuNCopyISOLation1Lowered. 204 205 206Patch 7 (#1738) 21 June 1998 207 208 + Corrected problem with the Command widget, when it was made insensitive 209 without calling the 'reset' action. 210 + Rework of the SimpleMenu code for optimizing the space used. Now it 211 really works as intended. 212 + Fixed portability problems with my previous patches. 213 + Corrected problem pointed by 'grano@cs.Helsinki.FI'. He have followed up 214 a bug report to the devel mailing list. While the problem exist, his 215 patch was not complete, so I did a rework of the AsciiSrc.c:Scan() and 216 MultiSrc.c:Scan() functions. 217 + I added clipping code to the {Ascii,Multi}Sink widgets, to allow use of 218 displayList's as decoration. The best solution I found to avoid too much 219 server requests, and keep full binary compatability was to use the resize 220 method of these widgets, to tell them to the parent widget have changed 221 it's size. 222 + Now the TextWidget has a xterm/emacs like cursor. And it is possible to 223 especify a cursor color. 224 + Fixed several problems caused by code assuming a line of text will be 225 shown as one line in the TextWidget. This is not always true when 226 it uses XawtextWrapLine or XawTextWrapWord, the most common problem was 227 the cursor becomming invisible, after calling the function 228 Text.c:_XawTextShowPosition() that is called to make sure it is visible ;) 229 + Added code that it will not forget the cursor distance from the left of 230 the window while moving the cursor one line up or down. 231 + Ansification of the text code (not yet complete). Private routines now 232 uses prototypes and wide parameters. External routines were kept 233 as before (but with prototypes not masked by NeedFunctionPrototypes), 234 to avoid binary compatability problems. The bigger problem I found in the 235 ansification was a function with 6 parameters being called with only 5. 236 + Several routines were rewritten, sometimes from scratch. 237 + The cursor navigation of the TextWidget was completely reviewed. It 238 should be very familiar to Emacs users. The most Emacs like behaviour is 239 when the cursor in move one line up or down and becomes invisible; the 240 text will be scrolled so that the line with the cursor will be centered 241 in the screen. Also, when doing page up, the cursor will be positioned 242 in the bottom-left, instead of allways in the top-left. 243 244Patch 8 (#1752) 27 June 1998 245 246 + There was a problem with the previous patch regarding to portability. 247 The problem was strcasecmp. I was planning to provide the funcionality 248 in libXmu, and forgot when creating the previous patch :(. There is 249 already a strcasecmp equivalent in libXmu, that is 250 Lower.c:XmuCompareISOLatin1(), so I used that function. 251 + The previous patch was working correctly for viewing text, but there were 252 some cases the text window could end not displaying correctly the text. 253 This problem was fixed. 254 + Now, the only real need of scrollbars is when doing long jumps on the 255 text, because the cursor will be always visible since this new patch 256 does horizontal scrolling automatically. 257 258 259Patch 9 (#1755) 28 June 1998 260 261 + Removed all my RCS idents in the files. 262 + Declared functions as static in the prototype and in the definition 263 (this basically reverts a previous patch, but should help when applying 264 the patches sequentially). 265 + Changed the code in Pixmap.c to use strtok instead of strsep, that is 266 not portable. 267 + Corrected problem with previous patch that would cause trouble when 268 a text widget had more than 32K bytes, and would also cause offset 269 mismatches if a program access private structures (AsciiSinkP.h). 270 271 272#1776 6 July 1998 273 274Corrected problem when moving the cursor over a non-printing character, 275 i.e. ^Q ^X 276Does not allow anymore scrolling of the text width Ctrl+Z if the text has 277 only one line, or only one line of text. 278Several changes in the TextWidget. I did not gratuitously break binary 279 compatability. Source compatability is only granted to programs that 280 do not access private structures. This is required because there are 281 several changes in the behaviour of the TextWidget, and if a program 282 becomes non compilable, it is because it will not work properly with 283 the changes in the text widget (please read bellow for a explanation) 284Better cursor navigation when moving line-up or line-down over a tab: 285 cursor 286 | 287 v 288 spaces | |#| | | |text 289 tab | |text 290 Move one line down: 291 before: 292 tab |# |text 293 now: 294 tab | |#ext 295There were several problems in the Text.c:_XawTextReplace(), when deleting 296 a character and the cursor (shoud be) moved to the previous line. This 297 problem was corrected. 298The text code was doing too much redrawing! When typping text, it would 299 redraw all the current line at each character typped, and also redraw the 300 entire window till the bottom. Now it only redraws the minimum necessary 301 (and makes a minimum of requests for the Xserver, when clearing areas), 302 most of these problems were related to Text.c:_XawTextReplace() (rewritten 303 from scratch), Text.c:_BuildLineTable() (mostly rewritten) and 304 Text.c:DisplayText() (mostly rewritten). 305Now, when selecting text, with: button1-down, button1-move, the window will 306 be scrolled automatically, if the mouse is moved to the top or bottom of 307 the text window, making it easier to extend selections. 308Added a set-keyboard-focus translation to the text code, and in the 309 default translation, it is called when pressing the left mouse button over 310 a text widget (so that the mouse does not need to be over the text window 311 when typping) 312 313These are the changes to Xaw that made it not fully source compatable (I'm 314open to comments, to make it source compatable, but as I said above, if 315a program does not compile anymore, it is because it is not granted it will 316work properly): 317scrollMode set to WhenNeeded is not supported anymore. I spent several 318 hours fighting side-effects caused when a scrollbar is created or destroyed 319 'on demand', and have (after tired of long debug sessions) choosed that 320 it is not required (it saves a lot of potencial unespected conditions 321 being found by a user). I changed the 'type' of the scroll mode to Boolean, 322 so, to have a scrollbar, is enough to say: *Text.scrollVertical: True. 323 Since the type now is Boolean, Xt will print warning messages when the 324 scroll is set to 'Always', 'Never' or 'WhenNeeded' 325automatic resize is nonsense since the text does automatic horizontal 326 scrolling. IMHO, to be useful, automatic resize should also shrink the 327 text window when needed, anyway, it's not required anymore 328 329Comments: 330auto-fill mode does not work properly (never did) 331wrap-mode set to line may not work properly 332wrap-mode set to word does not work properly always (never did) 333the multiply should be setable to a variable value; the default value 334 is 4, i.e. Ctrl+U <text+action> 335I will work on the itens listed above, and I'm also planning: 336one level undo, for text actions 337C style indentation and 'jumping' the cursor to show matching '(', '[' 338 and '{' 339other things that I don't remember now :) 340 341 342-- XMU -- 343Moved the code clipping code I have put in Text.c in my previous patch to 344 Xmu/Clip.c. There was a bug in the code I have put in Text.c (this is what 345 I get by cutting and pasting code under a #if 0 :(), but it was corrected. 346 The code in the new file 'Clip.c' is very useful for creating clipiing lists 347 and thus, avoiding too much server requests, or code for the same 348 functionality (poorly) repeteated in several places around the libary. This 349 code is now heavily used by the TextWidget. 350 351 352-- XEDIT -- 353Removed a XDefineCursor in xedit.c:main(). There are several ways to specify 354 a cursor for a program (most times inherited from the wm decoration window), 355 so, it is better to let the user choose one. 356Before starting the main loop, now xedit sets the keyboard focus to the 357 text window if a file was loaded, or to the prompt for a file name if 358 none was especified in the command line (do not use the new xedit without 359 the new Xaw library, or you will not be able to change the keyboard focus). 360Updated the Scrollbar configurations in Xedit.ad 361 362 363#1788 12 July 1998 364 365-- TextWidget -- 366 + Corrected problem whem moving the cursor over a non-printing character 367 + Now, does not allow scroll with ^Z when there is only one line of text 368 + Automatic resize was removed, it is not required with automatic horizontal 369 scroll, but I will look for programs that rely on it; the only program 370 affected (that I know) is xmh, because it popups dialogs of a small size, 371 and expects that the text widget (with a warning message) do a geometry 372 request. 373 + Scroll mode set to "WhenNeeded" was removed. It generates several unespected 374 conditions when editing text, and the new feature of automatic scrolling 375 the text widget while typping is more useful. 376 + Removed a leak in TextAction.c:AutoFill(), generated by the code 377 text.ptr = (char *)XtMalloc(sizeof(wchar_t) * 2); 378 that memory was never released, but the fix was simple, since the amount 379 of memory requested is fixed. 380 + Several optimizations in the redisplay of the text. 381 + Now, wrap mode set to word or line is expected to work, while typping text. 382 + AutoFill will only break lines in word boundaries now. 383 + Added a set-keyboard-focus action to TextAction.c, so that when pressing 384 the left button over a text widget, it will receive the keyboard focus. 385 This behaviour is the default, but can be disabled, with something like: 386 *Text.translations: #override\n<Btn1Down>: select-start()\n 387 in your .Xdefaults. 388 + Corrected several cases that would left the text widget showing incorrect 389 data. All the problems should have been fixed, but in case you find one, 390 a quick fix is: 391 *Text.backgroundPixmap: black?foreground=<some-color> 392 because it does not try to optimize the redrawing when using a background 393 pixmap, and thus, avoid several possible problems. 394 395 396-- XAW -- 397 + I had added a XawStackAlloc definition to "Private.h", to avoid a XtMalloc 398 request for every character typped in TextAction.c:InsertChar(), but 399 when syncing with 3.9Aj, saw that the file "XawAlloc.h" is no longer 400 required. Please, remove XawAlloc.h from 3.9Aj. 401 402 403-- XMU -- 404 + Added the file Clip.c, with clipping code, that, now is being used by 405 the text widget, but can be used by other widgets. 406 407-- xedit -- 408 + Removed a XDefineCursor from xedit.c:main() 409 + I have added a XtSetKeyboardFocus in xedit.c:main(), but comented it 410 because it would make xedit unusable with previous versions of Xaw, 411 or with the Xaw replacements (Xaw3d, Xaw95 ...) 412 413Comments: 414 I wrote a lot of code to work properly with italic fonts in the text widget, 415that code made the cursor do not erase portions of the text while moving the 416it, but it was failing at some places that would need that the TextWidget, 417and not only the {Ascii,Multi}SinkObject had access to the fonts, so I 418choosed to left it to the future (and keep the sources simple, by now). 419The text widget is useable with italic fonts, but fonts with: 420 f->per_char[<char> - f->min_char_or_byte2].rbearing 421 > f->per_char[<char> - f->min_char_or_byte2].width 422or 423 f->per_char[<char> - f->min_char_or_byte2].lbearing < 0 424will not allways be displayed correctly. 425 426 I haved also added a xedit configuration file to this mail. 427 428 429#1842 27 July 1998 430 431Fixed problem with the default macro for type conversion, where it was 432 possible to the code tell the wrong size of a string, since it was 433 returning the string size with 'strlen' but making the copy with strcpy. 434Complete ansification of Xaw (and Xmu). 435Corrected some problems caused due to an alteration in the text code, to 436 make the cursor always visible when the wrap mode is 'line' or 'word'. 437Text.c:VJump() was made a bit smarter and a problem that would cause it 438 to jump incorrectly was also corrected so that now the jumping should be 439 very smooth. 440Corrected problem that would cause a coredump due to the 441 Text.c:_XawTextReplace() deferencing a NULL pointer. Now ctx->text.lt.info 442 is initialized when the text widget is created, solving this problem. 443All the variables with name 'new' and 'class' where renamed to 'cnew' and 444 'cclass'. This allows even building Xaw with 'gcc -x c++'. 445Variables shadowing other variables or functions where also renamed. 446Static functions were changed to use wide parameters, where applicable. 447(Almost) every time a StringTo<Type> converter is installed in the class 448 initialization of a widget, the code also installs a <Type>ToString converter 449 since now editres seens to work better. 450Complete reestilization of the indentation. See the files Template*.{c,h}. 451Corrected problem with the 'virtual' function Layout of the Form widget. That 452 function requires 4 parameters, but the Viewport widget (a Form subclass) was 453 calling that function with only 3 parameters; the ansification flagred that 454 error. 455TextTr.c was modified to have only one string. I believe that that weird 456 thing was due to the inheritance of compatability with some very old and 457 probably buggy ld. 458Xaw is expected to be binary compatable with R6.3; there are some 459 preprocessor macros that keeps binary compatability, and unless the gains 460 of breaking binary compatability show worth enough (and people think) it 461 is good that code would be made default, otherwise it will be forgotten. 462I have also added a XFree86 copyright notice to Text.c, since there is 463 a very large amount of work in that file (and it is not yet ready). 464--------------------- 465 466-------- Xmu -------- 467Complete ansification of Xmu. 468Rework of EditresCom.c to allow editres working correctly. It was also 469 added a new feature, that allows editres finding some extra child widgets, 470 i.e. widgets that aren't a child of a subclass of composite and aren't in 471 the popup list. This modification is not enough, since it does not find 472 child widgets that don't a XtRWidget resource in the parent widget. 473Rework of ShapeWidg.c, so that it will give the correct feeling to the 474 ellipse shape, and inversion of the oval, if shape is oval and 475 height > width. To see these changes, run a program with: 476 <prog> -xrm '*shapeStyle: ellipse' 477 and/or 478 <prog> -xrm '*shapeStyle: oval' 479Revision of DrRndRect.c to make the widget looks 'more correct' when using: 480 <prog> -xrm '*shapeStyle: roundedRectangle' 481--------------------- 482 483------ editres ------ 484Added small patch to bug in handler.c so that editres will correctly now. 485--------------------- 486 487------- xedit ------- 488Changed the resources file, to avoid a problem when resizing xedit to a 489 very small size and than restoring it's size. Probably the culprit is the 490 Paned widget, but the new resource file is at least a good workaround for 491 the problem. 492The resource file was also modified so that the default xedit size will 493 give a 80x25 rows/columns when using the default font. 494--------------------- 495 496-------- xgc -------- 497Small patch to clear correctly the status text window, when pressing the 498 'Clear window' button. Note that this patch showed a bug in 499 Xaw/{Ascii,Multi}Src.c; only apply this patch with the latest Xaw, or 500 be sure that Xaw/{Ascii,Multi}Src.c:*SetValues() has something like: 501 if (old_src->ascii_src.ascii_length != src->ascii_src.ascii_length) 502 src->ascii_src.piece_size = src->ascii_src.ascii_length + 1; 503 instead of: 504 if (old_src->ascii_src.ascii_length != src->ascii_src.ascii_length) 505 src->ascii_src.piece_size = src->ascii_src.ascii_length; 506 or it will enter a infinite XtMalloc(0) loop :( 507also fixed a possible buffer overflow while searching the source of the 508 bug described above. 509--------------------- 510 511#1945, 31 Aug 1998 512 513-- XAW -- 514 + Corrected bug in Viewport.c:ComputeLayout(), that would put the scrollbar 515 in the incorrect position, if w->viewport.useright == True 516 + Corrected bug in Converters.c:_XawCvtCARD32ToString(), so that now it 517 will correctly format the converted value. 518 + Corrected problem in {Ascii,Multi}Src.c:Search(), that would cause a 519 incorrect offset to be returned, if the searched text (or a substring of 520 it) were in a 'Piece' boundary. 521 + Some small patches to other sections of the code, to reduce the number 522 of warnings generated by gcc, when using more restrictive warning options. 523 524-- XMU -- 525 + Corrected a problem in Atoms.c:GetAtomName(), to return a NULL pointer, 526 instead of a const if the given atom is 0. 527 + Corrected a typo in Xmu.h 528 + Several 'ansification' patches, to get function definitions and avoid 529 unecessary definitions. 530 531 532#2028, 2033, 7 Oct 1998 533 534-- Xaw -- 535Added a delete translation to the text widget, that deletes the current 536 selection if any, else the backwards char. 537Corrected bug that would not update correctly the screen if page-up or 538 page-down was pressed while there was an selection. 539Added a ^Q<any-char> translation to the text widget, to be able to insert 540 any char in the text. 541Changed TextAction.c:Move() to set ctx->text.showposition, so that even 542 if the cursor did not change the position, it will become visible. 543Corrected problem with the 'form-paragraph' translation, so that the 544 text will be always correclty shown. 545Modified the automatic scrolling of the text to one line at a time, to 546 make it easier to see what is being selected. 547Added a 'hack' to be able to type ^U<any-numeric-sequence> to be able 548 set the multiply of the text widget. Since it is a hack (besides seens 549 to work very well) it can be disabled with -DNO_NUMERIC_HACK 550Corrected a nasty bug in Text.c:CvtStringToScrollMode(); XtConvertAndStore 551 can't be called from a type converter! 552added UNDO/REDO to the text widget. Please try it, I think it is very nice. 553 Undo is enabled by the new resource 'enableUndo', and, by default is 554 triggered with 'Ctrl+_'. 555 556-- editres -- 557Resubmitting a patch to editres/handler.c, to make editres work properly. 558 559-- xedit -- 560NOTE that with this patch, xedit probably will not work with Xaw3d, neXtaw... 561 this surelly can be fixed, or in the xedit side or the *Xaw* side, but 562 the patch seens to be necessary. 563Changed the defaults file to be more user friendly and previsible. 564 Added some 'Emacs like' binding translations. 565Added file completion in the filename prompt. This is a very nice 566 feature, but I'm not sure if the code is portable to all the XFree86 567 supported platforms (surely it will not work 'as is' with OS/2). 568 569 570#2083 18 Oct 1998 571 572-- XAW -- 573Changed the functions {Ascii,Multi}Sink.c:CharWidth and PaintText, to 574 improve speed, and avoid too much recalculations. On normal files, it 575 becames about 5:1 faster, but can go up to 20:1 when editting files with 576 very large lines. Besides this speed improvement, I believe it can 577 surely be made faster (based on comparition with some popular X editors). 578Changed the way the AsciiSink prints characters with value bigger than 579 126 decimal. Now it prints DEL as ^?, and the other characters as \XXX 580 where 'X' is an octal digit. The MultiSink widget was unchanged in this 581 respect, i.e. when calling xedit with something like: 582 xedit -xrm '*international: true' 583Converted all calls to strncpy, in AsciiSrc.c to memcpy, so that the (ascii) 584 text widget will work properly with data containing nulls. 585Added a experimental 'Xaw Scan Type' XawstAlphaNumeric, that shoud make 586 edition of C (or any other language) easier in xedit (i.e. the text widget). 587 It can be tested with Ctrl-Left and Ctrl-Right, by now. 588Changed the TextWidget to handle text lines that would result in more than 589 32767 pixels. Besides the text widget is not meant to be used in the 590 edition of binary files, this change allows it. 591Changed Text.c:TextScroll() to be smarter when calculating the offset of 592 the line table on scroll up. 593Added a nice feature, to show the matching '(', '[' or '{', when a ')', 594 ']' or '}' is typped. 595Changed TextAction.c:FormParagraph() to generate only one undo/redo step. 596 597-- xedit -- 598Changed the defaults file to enable backups and made the backup suffix 599 the character '~'. 600Replaced all instances of sprintf by XmuSnprintf. 601Changed xedit to set the label when saving a file also, to reflect what 602 is being edited correctly. 603Corrected a bug in the new action 'file-completion', to replace correctly 604 the home directory, and keep correctly whatever was after the '~'. This 605 isn't the correct place to this code (xedit/commands.c), since there are 606 several other file name prompt windows in Xaw, but since it is required 607 another window to show the possible matches, I'll study a better way to 608 implement it. 609Added a 'hints' feature to xedit. Instead of a 'dead' 610 "Use Control-S and Control-R to Search." label, now it allows the label 611 string being changed at user settable intervals. 612 613 614#2205 10 Nov 1998 615 616-- xaw -- 617 + Fixed some 16 bit overflows in AsciiSink.c and some cases where it would draw 618 past the end of the text window (a no-op), the overflows were not a 619 problem, but could left the text window with incorrect data. 620 + Moved the undo/redo code to TextSrc.c, and some code/data from 621 {Ascii,Multi}Src.c to TextSrc.c. The callback now is called when the 622 source is changed, or becames unchanged due to an undo/redo. Also 623 changed the Scan procedure to be a bit faster. 624 + The asciiTextWidget will now accept a source or sink object being set at 625 creation time. 626 + Fixed the 'struct XawDisplayList' being redefined when compiling Xaw under 627 SunOS. 628 + Several changes to the SimpleMenuWidget to make the geometry management 629 work correctly when adding/removing/changing menu entries at run-time. 630 + Added a 'kill-ring' feature to the TextWidget. The behaviour is identical 631 to Emacs. Pressing C-K repeteadely will merge the lines being killed, so 632 that a C-Y latter will paste all the killed lines. 633 + Added the enough glue code (and as backwards compatible as possible) to 634 allow the *src object be shared between several TextWidgets. My initial idea 635 was to make the TextWidget be able to have more than one source, but, to 636 be backwards compatible, I did the reverse (the source can have more than 637 one TextWidget). 638 + Fixed a automatic wrap bug (TextWidget) that could eat non white space 639 characters (my previous patch to this problem was completely wrong). 640 641-- xedit -- 642 + Added a split-window feature to xedit. To keep xedit simple, it only allows 643 two windows at the same time: or subdivides in the vertical or horizontal. 644 + Added more some key-bindings, that should do the same as Emacs. 645 646#2291 5 Dec 1998 647 648-- Xaw (only changes to the 'text' code) -- 649 + Changed the default 'piece size' from BUFSIZ to the value returned by 650 the getpagesize() function (or keep BUFSIZ if that value is smaller). 651 + Added a case sensitive option to the search popup. This is a 'hack' by 652 now, but should not cause trouble to anybody. 653 + Fixed a bug inserted when changing the code for the search, the only side 654 effect I saw was that the jumping cursor to show the matching '(', '[' or '{' 655 stopped working in my last patch. 656 + Moved back my change to the function XawTextSetSource. The 'correct' function 657 is _XawTextSetSource. This is only to make sure old code should compile 658 cleanly. 659 + Added line and column number calculation code (and a callback to tell when 660 that information changed) to the TextWidget. This was not an easy task, 661 because I tried to optimize as much as possible the code, and do relative 662 calculations, instead of scanning the entire file to count the number of 663 lines (there are several special cases, when removing/inserting text). 664 + Added the selection type XawselectAlphaNumeric. This adds one step in 665 the sequence word-line-all when doing multiclick in the text. 666 + Fixed some bugs in the 'kill ring' feature added in the last patch. Now 667 it is expected to never fail. 668 + Corrected the indentation of TextP.h, and changed more some fields. The 669 internal data of the TextWidget changed a lot, so it is not expected that 670 program code read directly the private data, at the price of requiring the 671 correct library version. 672 + Fixed a small bug in the undo code, that would 'think' the file was unchanged 673 in the incorrect position in the undo buffer. 674 + Changed the default key bindings for delete/kill word functions to use the 675 alpha numeric versions (this is better for coding, and more compatible with 676 other text editors). 677 678-- xedit -- 679 + Changed the labelWindow, to show the current line number (but it is also 680 possible to show the current column number, offset or file size). 681 + Fixed bug when saving the *scratch* buffer with a new name. 682 + The 'changedBitmap' is now correctly displayed on all the windows showing a 683 changed file. 684 + Small changes to the xedit man page. 685 686 687 688#2371 8 Jan 1999 689 690--- Xaw --- 691 + More some changes to AsciiSrc.c:Scan(). This improves a bit the speed when 692 scanning text. 693 + Added sanity checking for AsciiSrc.c:Search(), to avoid the risk of 694 deferecing a null pointer (or reading memory out of the text piece) if the 695 searched text happens to be larger than a "piece size". 696 + Fixed bug when trying to optimize line number calculation, due to a typo, 697 while meaning XawTextWrapNever I wrote XawTextWrapLine. 698 + Fixed a problem shown by xclipboard, when setting the "string" resource 699 of the text source, the sink object was keeping the insertPosition in the 700 old text contents, and then, when showing the cursor, it was incorrectly 701 'erasing' the old cursor position. 702 + Fixed problem in XawTextReplace, that would not update correctly all the 703 TextWidget's sharing the same source. 704 + Added a kill ring list to the text code. This works like the emacs feature, 705 but, unlike emacs, it is not required to press C-Y before M-Y, to start 706 looping through the kill ring list. To use it, just press M-Y repeteadly, 707 and all the text that was killed will be inserted, one at a time, so that 708 you can choose one. Note that the text inserted from the kill ring list 709 will also enter in the undo list. 710 + Changed the Move{Backward,Forward}Paragraph actions to make the cursor always 711 stop in a blank line. This makes only one step moving from a paragragh to 712 another, instead of two. 713 + Added code to check for overflows in the C-U<number> sequence. 714 + Changed the FormParagraph action to keep the cursor at the correct position. 715 + Changed the default translations in TextTr.c to get a more emacs like 716 behaviour with the kill ring list. 717 718--- xedit --- 719 + Added a few more resource settings to the Xedit-sample file. 720 + Added some sanity checkings when trying to save a file. This avoids the 721 case of saving a file with the name of a directory (but moving the directoy 722 to other name before). A possible case is: have a directory named 'dir', 723 saves a file as 'dir', but before saving, renames the directory as 'dir~'. 724 + Allows saving a file that xedit thinks is not changed (the file may have 725 changed on the disk, but the user really wants to rewrite it). 726 + Corrected several bugs in the FileCompletion action, and added a new 727 feature, that is to complete the partial names, when there is a '/' or '.' 728 after the cursor position. 729 730 731#2479 19 Feb 1999 732 733-- Xaw -- 734 + Fixed bug in the line numbering code, when removing lines before the 735 top position. 736 + Changed code to form regions to always show the cursor after formatting the 737 text. 738 739-- xedit -- 740 + Added code to keep the file mode, after saving. This is useful when editting 741 scripts, so that the executable flag will not be lost after edition. 742 743 744#2544 12 Mar 1999 745 746-- Xaw -- 747 Mostly changes to add support to latin-* languages in the text code, when not 748 using the international resource. 749Actions.c: 750 + Corrected some bugs in the boolean expression parser. The old version would 751 not parse correclty parenthized expressions, and was giving equal precedence 752 to AND, OR and XOR (what is incorrect). 753AsciiSink.c: 754 + Changed to display characters in the range 0x32-0x7e and 0xa0-0xff literally. 755 The other characters are represented as control-codes, as before. This is 756 better for edition of Latin-* text files. 757AsciiText.c: 758 + Changed the code, so that even if the *international resource is not set, 759 _XawImRegister and _XawImUnregister are called for the text widget. This is 760 useful for latin-* locales, that use one byte wide characters, and makes Xaw 761 more compatable with modern toolkits, like qt and gtk. 762List.c: 763 + Added code to work correctly with a background pixmap. 764 + Added a smarter code for list window size calculation, that is used if the 765 number of columns is especified to be zero (automatic). 766MultiSink.c: 767 + Fixed a core-dump problem caused when passing a null pointer to 768 XwcTextEscapement. 769Text.c: 770 + Removed the resource adjustScrollbars. This resource was not used, and its 771 funcionality was not finished, and by now, it is not required. 772TextAction.c: 773 + Does not call XLookpupString in InsertChar any more, but the new function 774 _XawLookupString (in XawIm.c) to work correclty with composed characters. 775XawIm.c: 776 + Added the private function _XawLookupString, that just calls XmbLookupString, 777 or in case of any initialization error, XLookupString. 778 779-- xedit -- 780 The most important change is the addition of a new functionality, that allows 781 the user to navigate the file system, in a 'ls -a' like list widget, if 782 the file is not a directory it is loaded for edition, else, the list widget 783 is rebuilt with the contents of the selected directory. To test it, just 784 type: C-X d, or tab when 'finding a file'. To exit the dirwindow without 785 loading a file, type C-G or Escape. 786Xedit-sample: 787 + Added more some resource entries, to use the new 'emacs dired like' feature. 788Xedit.ad: 789 + Same as for Xedit-sample, but more important resource settings. 790commands.c: 791 + The code now checks if the filename is a directory and calls the dirwindow 792 code in that case, when trying to open a file. 793 + Changed the function IsDir from static to global, to use it from xedit.c. 794 + Most of the code for the filesystem navigation window was added to this file. 795util.c: 796 + Fixed a bug that was causing core dump due to passing garbage to XtGetValues 797 as the widget address. 798 + Added the code for managing the dirwindow and its relationship with the 799 text windows to this file. 800xedit.c: 801 + Added the code for creation the dirwindow to this file. 802 803 804#2638 2 Apr 1999 805-- Xaw -- 806 + Added xpm pixmaps support to the library. This time, it is required to 807 compile Xaw with -DUSE_XPM. 808 + If the xpm image has a mask, the widget will be automatically reshaped 809 to the pixmap mask. 810 + Changed the kill_ring code in TextAction.c to always end in a text block 811 of zero length, this way, it is easier to know when one traversed the 812 entire kill ring (it may be interesting to forget the undo sequences 813 while traversing the kill ring list). 814 815-- xedit -- 816 + Changed the Xedit.ad file to avoid overriding a translation that would 817 make the search window do not respond to WM_DELETE_WINODW messages. 818 + Fixed a core dump condition in the new code for listing files and 819 directories, due to deferencing a null pointer. 820 821 822#2662 10 Apr 1999 823-- Xaw -- 824 + Corrected the problems gererated in my last patch. I was compiling with 825 -DUSE_XPM defined, and did'nt realize that the patch would not compile 826 without it. Just ifdef'ed again the code to avoid warnings or dead code. 827 828-- xedit -- 829 + Added a ispell interface to xedit. Sorry for not documenting enough about it 830 the man page, but here is a small explanation of the new funcionality: 831 Replace: Replace's the selected word. 832 All (right side of Replace button): Replaces all occurrences of the selected 833 word. 834 Undo: When this button is sensitive, allow undoing the last replace, 835 this is useful when doing a incorrect "Replace All" action. 836 Ignore: Ignore this word, and continues spell checking. 837 All (right side of Ignore button): Ignore any further ocurrences of the 838 selected word. 839 Add: Add's the selected word to the user's private dictionary. 840 Suspend: Go back to text edition, but does not kill the ispell process, 841 This is useful if you have a really big dictionary or slow 842 machine. I believe it is mostly useful to keep in memory 843 the words selected to be ignored, but that you don't want to 844 add to your private dictionary. 845 Close: Kill the ispell process, and go back to text edition. 846 Automatically saves the user's private dictionary. 847 When pressing the Add button, the word in the "Mispelled word:" field is 848 added to the user private dictionary (normally ~/.ispell_*). When pressing 849 the Replace button, the text in the "Replace with:" field is used. 850 If no word is selected in the "Suggestions:" field, this mean that the 851 selected word was not found in the ispell dictionary. 852 853 854#2716 24 Apr 1999 855-- Xaw -- 856 + Minor changes to AsciiSrc.c to try to get more speed in the FindPiece 857 function. Xedit may become very slow when editing files bigger than 1M, 858 and I'm studing ways to get more speed in the Scan and FindPiece functions. 859 The FindPosition function in *Sink.c also can consume a lot of cpu time, 860 and may need some rework. 861 + Added submenus support to the SimpleMenuWidget. This is something essencial 862 to a widget toolkit. Just plugged in the code of a menu widget I wrote some 863 time ago. Xedit uses submenus now. To use it, set the resource menuName 864 of a SmeBSBObject to the name of the submenu. 865 + Added code for text justification to the TextWidget. To use the justification, 866 set the resources autoFill, leftColumn and rightColumn. If autoFill is set, 867 and leftColumn is smaller than rightColumn, an alternate code will be 868 used in the form-paragrpah action, normally triggered with M-Q. The values 869 for justification can be left, right, center and full. 870 + Added a overwrite mode to the TextWidget. The default translation is to 871 press the Insert key, that will toggle the overwrite mode. 872 + Made the TextWidget understand negative values for the multiply. This is 873 like the emacs feature, to indent text to the left. To set a negative value 874 to the multiply, just start the numeric sequence with a '-'. Like C-U -1. 875 + The code for justification added several new functions to TextAction.c. 876 Functions to tabify, untabify, get block boundaries, verify if a line 877 is completely blank, and strip excess of spaces. 878 + Added a indent action to the TextWidget. The default translation, only 879 used by xedit, is C-X Tab, did this way, to make it fully compatable with 880 emacs, but other translations can be used. The multiply value is used to 881 calculate the amount of spaces to move to the left or right. 882 + Corrected a very hard to find (and reproduce) bug in the undo code, that 883 would easily cause core dumps. The problem would happen when starting 884 editing exactly in the moment the redo automatically reverts to undo. 885 + Added translations for toggling the overwriting mode with the Insert key, 886 and to paste the selection with S-Insert. 887 888-- xedit -- 889 + Corrected all the known bugs in the ispell code (including a memory leak). 890 And added a compile time limit of 16 levels of undo, for all the actions, 891 that include Add, Ignore and Replace. 16 levels is more than enough, but 892 more than this can be done with the undo action, but then, only to revert 893 replaced text, to remove added words that the undo code forgot, it is 894 required to edit the personal dictionary file. The code now also understands 895 root/affix combinations, that ispell normally returns when using the 896 -m option. The ispell code should now also work when using the international 897 resource of the edit window. 898 + Added a new file, called options.c, that holds the code for the editMenu, 899 to enabling setting the wrap, autoFill, justify, leftColumn, rightColumn, 900 verticalScroll and horizontalScroll resources of the current edit window. 901 902 903#2746 1 May 1999 904-- Xaw -- 905 + Reverted most of the #if NeedWidePrototypes definitions, only two 906 functions were kept, to not break some of the new features, but these 907 functions aren't called by any program: XawTextSinkDisplayText and 908 XawTextSinkClearToBackground. 909 + Rewrite of the functions *Sink.c:FindPosition() and FindDistance() to 910 try to get more speed. 911 + Reworked the function Text.c:_BuildLineTable, to correct some strange 912 code, and to avoid unecessary recalculations. 913 + Made negative values of the multiply work for all the actions, not only 914 for negative indentations. This makes the TextWidget behaviour more 915 compatable with emacs. 916 + Optimization of the new code for text justification, to avoid a call to 917 malloc on every char typped, when undo is enabled. 918 + Reorganized the offsets of the fields of the TextWidget, trying to make 919 xxgdb work again with the new Xaw code, but, unfortunately, the SimpleWidget 920 (a subclass of the TextWidget) have growed by 4 bytes (a XawDisplayList*) 921 added at the end of the structure, and xxgdb incorrectly reads the text.sink 922 field. Old xxgdb binaries dont work with the current code. 923 + Removed several XtIsSubclass checks in TextSrc.c. While those checks could 924 be useful for debugging, the functions are called so frequently that it is 925 a big waste of time for running programs. 926 927-- xedit -- 928 + Added/Changed some translations to work correctly when CapsLock and/or NumLock 929 are pressed. 930 + Fixed some bugs in the ispell code. The biggest bug was that it was not 931 correctly saving the Add'ed words in the user dictionary when pressing the 932 Close button. 933 934 935#2764 8 May 1999 936-- Xaw -- 937 + Create two new private functions, to replace internally the public interfaces. 938 These two functions are XawTextSinkClearToBackground and 939 XawTextSinkDisplayText. These two functions use wide prototypes, and 940 are required to support text lines that are represented by more than 941 32767 pixels. This was done to make sure that the public interfaces remain 942 100% backwards compatible. 943 + Fixed the deferencing of a null pointer when the source object of a text 944 widget is not initialized. I noticed this problem when recompiling xcolorsel. 945 + Added a new type converter to Converters.c, that is Short -> String. 946 + Added a new compile time option, called NO_BIN_COMPAT_HACK. If defined, 947 it will break some programs that access private data. It only works with 948 programs that access private data structures, but don't subclassify any 949 widget. It fixed old binaries of chimera1, the Offix editor and xxgdb. 950 There is no way to fix old binaries of chimera2, xcolorsel and xmh, these 951 programs need to be recompiled. I would like to know of other programs that 952 became broken, to try to fix them with the NO_BIN_COMPAT_HACK option. 953 + Fixed some compile warnings, with shadowed, uninitialized and unused 954 variables. 955 + Fixed a inifite loop problem that could happen when the text widget window 956 was resized to a very small width. 957 + Reverted some of the text widget translations, to avoid conflicts when 958 setting the input focus and programs that do so. 959 960-- xedit -- 961 + Fixed a problem in the file-completion code, that would insert the partial 962 match in the incorrect position, if the cursor was not at the end of the 963 string. 964 + Changed ispell.c to use only one hash for ignored and added words. Also 965 changed the IspellSend function to not call itself recursively, what is 966 a big problem when spell checking big files that are correct or have too 967 few errors. 968 969-- editres -- 970 + Changed Editres.ad in several places, to try to avoid resource setting 971 problems. Most of them were changed to address more directly the resource, 972 and avoid confusion. Also, added some new resource settings to configure 973 the code I added to widgets.c. 974 + Changed widgets.c to make sure the resource setting dialog is allways 975 entirely in the screen, and if it does not fit, scrollbars will be created. 976 977 978#2793 15 May 1999 979-- Xaw -- 980 + Changed AsciiSrc.c:LoadPieces to load the file incrementally, instead of 981 allocating a big buffer. 982 + Added several new functions to DisplayList.c. Almost all gc and painting 983 related functions were mapped to displayList functions. There are 984 several optimizations that can yet be done to the displayList code, and 985 I'm working on it. That code is clearly not finished yet, but is stable. 986 Also, changed some functions to be more exigent with it's parameters, 987 because it is better to receive a warning message than see the program 988 core dumping. The functions are documented in Xaw.man. 989 + Corrected a problem in the SimpleMenu code, to make the sub menus popup 990 more 'visually' correct, when popping up in the left side. 991 + Added a optimization in Text.c, to avoid unnecessarily recalculating 992 the line and column number when scrolling text. A big speed up should 993 be seen when scrolling large files. 994 + Modified all code that expected TAB_SIZE to be equal to 8, to read the 995 TextSink resources, and work properly with whatever value the program 996 had set to the tab stops. 997 + Fixed a very bad bug in the form-paragraph function. It was very hard 998 to find because I was looking at the wrong places. If the text was 999 allready formatted, or did not need formatting, the code was not 1000 reenabling undo, making the undo/redo behaviour imprevisible. 1001 1002-- xedit -- 1003 + Added Xedit-color.ad file, to show some of the new features of Xaw. 1004 Tried to keep it simple, but since it uses gradients, maybe it should 1005 better be called Xedit-TrueColor. The better way to see the functionality 1006 of this file is (if you don't have it already) add to your .Xdefaults: 1007#ifdef COLOR 1008*customization: -color 1009#endif 1010 and make sure xrdb parses it. 1011 + Changed a bit Xedit.ad, to work properly when Caps Lock is pressed. 1012 + Several changes to ispell.c. It should run very faster now, because 1013 the code keeps information about words already ignored or correct 1014 in the xedit side, instead of asking ispell every time. Added also 1015 a terseMode resource, and made the interface ask for user interaction 1016 allways ispell does not say the word is completely correct; the 1017 terseMode resource makes ispell itself decide what words are correct 1018 or not. 1019 1020-- editres -- 1021 + Small patch to Edit-col.ad, to use a default text cursor color of 'Azure' 1022 in text fields, instead of the default 'black'. 1023 1024 1025#2811 22 May 1999 1026-- Xaw -- 1027 + Removed the 'NO_NUMERIC_HACK' preprocessor definition, and renamed the 1028 'doing_numeric_hack' field of the text widget to 'numeric'. 1029 + Changed the code to always create the horizontal scrollbar, if requested. 1030 + Small changes to TextPop.c, to automatically scroll horizontally the 1031 text window when the text found in a search/replace action is not visible. 1032 + Added a optimization when editting large files, to rebuild the line table 1033 if the region containing the text being added/replaced overlaps the lt.top 1034 field of the text widget. 1035 + Changed the undo code to also merge text typed when overwrite mode is 1036 active. The new behaviour is not like emacs (that generates a undo step 1037 for every character), but uses less memory, making only one undo/redo step. 1038 1039-- xedit -- 1040 + Added a new file, hook.c that is intended to be used for the addition of 1041 some new features to xedit, like auto indentation of program files. The 1042 first feature added is the 'autoReplace' resource, described in the xedit 1043 man page. 1044 + Corrected a bug in ispell.c, that would make the code alocate lots of 1045 memory unnecessarily, due to an uninitialized variable. Thanks to David 1046 Dawes that found the bug. The bug was not in 3.9Pn, but the solution in 1047 the later release was not completely correct. 1048 1049 1050#2834 29 May 1999 1051-- Xaw -- 1052 + Added a ChangeSensitive function to Command.c, to avoid it creating an 1053 incorrect insensitive border if the button is set. This is a side effect of 1054 the function XawCommandToggle I added some time ago. The solution for the 1055 problem is not very elegant, since it copies almost verbatim the code from 1056 Simple.c, but it works as expected. 1057 + Moved some calls to _XawTextSetLineAndColumnNumber in Text.c to other places, 1058 to make sure it is safe to change the text when the positionCallback is 1059 called (like what is done by the new xedit file hook.c). 1060 + Another optimization was added to the undo/redo code. Now it also merge 1061 erases, needing yet less memory for undo, and this way, generating less 1062 undo/redo steps. 1063 + Removed the default translation to call the toggle-overwrite action from 1064 TextTr.c. Only the xedit edit windows calls this translation now, instead of 1065 every text widget. 1066 1067-- xedit -- 1068 + Changed the auto replace feature to be a bit more easier to use. The new 1069 behaviour is almost identical, but if the user types some text, and it is 1070 auto replaced, only one undo step is enough to correct it. Example: 1071 1) user types 'nto.' 1072 2) text is auto replaced by 'not.' 1073 3) user call undo action 1074 4) text is converted to 'nto.' 1075 It should be a very infrequent problem, but makes the xedit behaviour 1076 identical to a "well known text editor", from where this feature was borrowed. 1077 + Added a 'Check' button to the ispell interface. This button allows 1078 checking the word in the text field. This feature was borrowed from the spell 1079 checking interface of the Netscape html editor. 1080 + The ispell checking interface now also asks for user interaction if there are 1081 two identical words togheter. 1082 + Added a status bar to the ispell interface, to give feedback to the user 1083 about what is happening. 1084 + Added some new resources, to let easier customization of the ispell status 1085 bar strings. The new resources are documented in xedit.man. 1086 1087#2849 5 Jun 1999 1088-- Xaw -- 1089 + Add a OLDXAW define, to enable building a binary compatible version with 1090 6.1, and changes to the Imakefile, to try to keep the changes only in Xaw. 1091 I hope it can be removed in the future. 1092 + Add a XawVendor define, with the value "XFree86". If this is not a good 1093 idea, please correct it an let me know. 1094 + Add a XawVersion define. The value for the new xaw is 7000L, and for the 1095 compatible one is 6700L (same comments as for the XawVendor define). 1096 + Bug fixes to the undo/redo code, and code to merge erases generated by 1097 ^H and ^D. Also, if the cursor is moved, it stops merging the text typped 1098 in the undo buffer. 1099 + Bug fixes to the Form widget geometry management code, to work correctly 1100 when child widgets are removed or added at run time. 1101 + Xaw now links with XPM by default, and the config files where changed to 1102 enable newly compiled programs to do so. 1103 + Added 16 pad bytes to every widget, to try to avoid binary compatability 1104 problems in the future. 1105 + Added a displayList resource to the Tree Widget. 1106 + Added the functions XawTextGetSink and XawTextLastPosition, to enable a 1107 public way to get the <TextWidget>->text.sink and <TextWidget>->text.lastPos, 1108 since these are the most commonly private fields the programs access in 1109 the text widget. 1110 + Added the actions 'capitalize-word', 'donwcase-word' and 'upcase-word' to 1111 TextAction.c. The bindings are the same as of Emacs (and the way it works). 1112 + Corrected some problems with negative values of the <TextWidget>->text.mult. 1113 1114-- xedit -- 1115 + Correct possible problem in the file hook.c, when interpreting the auto 1116 replace list, that is, it was not checking the buffer size when finding 1117 the '\' character. 1118 + Updates for the configuration files. 1119 + Added a 'Look' button the the ispell interface, that will by default run 1120 "/usr/bin/bin/egrep -i '^<VALUE OF TEXT FIELD>.*$' /usr/share/dict/words" 1121 and put up to 256 returned words in the ispell list. The behavior is 1122 almost identical to the one in the terminal interface of ispell. 1123 + The ispell interface works correctly with aspell now. 1124 + Added some resources and a popup to enable changing the dictionaries in 1125 run time. 1126 + Added a toggle button to the ispell interface to allow changing the terse 1127 mode in run-time. 1128 + Added a 'Uncap' button, to allow adding an uncapitalized word to the 1129 private dictionary, and enough code to do the capitalization checks inside 1130 of xedit (to enable undo actions). 1131 + Added a "text mode" and a "html mode". The html mode is not yet completely 1132 finished. It must work correctly with some html specific things like 1133 converting internally "á" to "á" and so on. I'm planning also, at 1134 least a nroff mode too. 1135 + The wordChars resource is set by dictionary now. 1136 To set the word chars for the br dictionary, write something like: 1137 *ispell*options.dictionaries.br.wordChars: <VALUE> 1138 or 1139 *ispell*br.wordChars: <VALUE> 1140 or simply 1141 *ispell*wordChars: <VALUE> 1142 + The skipLines resource is set only for the text mode now. 1143 To set it, write something like: 1144 *ispell*options.formats.text.skipLines: <VALUE> 1145 or 1146 *ispell*options*text.skipLines: <VALUE> 1147 or simply 1148 *ispell*skipLines: <VALUE> 1149 1150 1151#2877 12 Jun 1999 1152-- Xaw -- 1153 + Note: The compatible old version of Xaw is not fully compatible. There 1154 a few things that are not equal to the standard old Xaw. These are: 1155 + The cursor code in the *Sink.c files is not identical, and the 1156 field insertCursorOn (type Pixmap) was replaced by the field 1157 cursor_position (type XawTextPosition). 1158 + There are some changes in TextP.h, that include changes to the fields: 1159 options -> left_margin 1160 unrealize_callbacks -> pad1 1161 updateFrom -> update 1162 updateTo -> pad2 1163 numranges -> pad3 1164 maxranges -> from_left 1165 copy_area_offsets -> pad4 1166 + The text window does not increase its size when text is typed past 1167 the end of the window, instead of it, it is automatically scrolled 1168 horizontally, but this may not be enough to every usage of this 1169 feature; xmh uses that code to make the text widget auto resize 1170 warning popup widgets. I dont know what is better in this case, 1171 if re-enabling the auto resize code of changing xmh to use label 1172 widgets in the warning popups. 1173 It is very unlikely that exists code that will have problems with these 1174 changes in the fields of the TextWidget and the *SinkObject, but if any 1175 code that has trouble with it exists, I will promptly make the required 1176 changes to correct it (at least for the compatible version of Xaw). 1177 + Several optimizations for the code to redisplay the text window in the 1178 TextWidget. Including fixes for bugs in the XawTextScroll function, and 1179 making it really works. Previous versions of the library have made this 1180 function ineffective, because it was always redrawing everything when 1181 the text window was scrolled. The optimizations should be more noticeable 1182 when running some application that uses the TextWidget (like xedit) on 1183 slow hardware, or over slow connections. 1184 + Corrections for the FormWidget geometry management code, to work correctly 1185 in the old version of Xaw, and some bug fixes for the new Xaw. Also added 1186 8 pad bytes to the FormConstraintsPart structure, to have space for extra 1187 information on possible future optimizations for the FormWidget geometry 1188 management code. 1189 + Some fixes for the OLDXAW define in the SimpleMenuWidget code, that was 1190 not hiding some of the new fields introduced in the new Xaw code. 1191 + Some corrections for the code handling the necessity of having scrollbars 1192 in the text widget, and bug fixes for cases where the scrollbars were not 1193 being updated when the text window contents were changed. 1194 + Re-enabled code to also process GraphicsExpose events in the text code. It 1195 became required due to the optimizations in the text redisplay code. 1196 + Several fixes in TextAction.c, for symbols that were not being included 1197 in the compatible version of the library, and for symbols that were being 1198 included with no need. 1199 + Fixes for the form-paragraph action, in the old Xaw code. 1200 1201-- xedit -- 1202 + Some bug fixes for the ispell undo code, to avoid deferencing a NULL pointer 1203 in the function IspellCheckUndo. 1204 + Added code to handle correctly &<VALUE>; in ispell.c, when using the html 1205 mode. 1206 + Fixed some compile time warnings, and updated the code for setting the 1207 scrollbars in options.c. 1208 1209 1210#2899 19 Jun 1999 1211-- Xaw -- 1212 + Changed all the 'char pad[<number>]' to 'XtPointer pad[<number>/4]' to 1213 make sure 64 bit machines will not have binary compatibility problems before 1214 the 32 bit ones. 1215 + Added a new static function 'WritePiecesToFile' to AsciiSrc.c, to avoid 1216 allocation of temporary memory. This is useful when editing very large 1217 files (I have some people using xedit on text files that can have up to 1218 80,000 lines). 1219 + Added more some optimizations to AsciiSrc.c:Scan, to try to get the maximum 1220 speed of this function. 1221 + Added a new function to the displayList's, called 'image', that will tile 1222 pixmaps on the widget. It is documented in Xaw.man. 1223 + Several widget classes did not have a 'extension' field. I added it to them. 1224 The first usage of this field that I'm planning is to extend the *Src and 1225 *Sink objects to handle formatted text, and add text properties, like 1226 foreground, background, font and so on. 1227 + Fixed a bug in MultiSrc.c, that was crashing Xaw after the first character 1228 was typed, or if text was removed. 1229 + Some minor changes to SimpleMenu.c, to work properly with very large menus. 1230 + Fixed some bugs that were caused by my previous optimizations of the text 1231 redisplay code. 1232 + Bug fixes and optimizations to TextPop.c, there were some cases that the 1233 function XawTextDisableRediplay was being called, but XawTextEnableRedisplay 1234 was not being called later because of a error condition (the error 1235 conditions were only warnings). 1236+ Updates to Xaw.man. 1237 1238-- xedit -- 1239 + Fixed a memory leak when freeing list widget strings. The code was not 1240 releasing the memory of the string at offset 0, in the list. 1241 + Changed the way the ispell undo code handles the terse mode, to not need 1242 to make the toggle button insensitive. 1243 + Updated xedit.man. 1244 1245 1246#2932 26 Jun 1999 1247-- Xaw -- 1248 + Added a new tip resource to the SimpleWidget. This may also be seen as 1249 a test of the binary compatibility issues. Besides of being a new feature, 1250 it cannot cause problems with old binaries, because the code is only 1251 called if the tip resource is set to any SimpleWidget subclass. If the 1252 tip resource is set or reset, the SimpleWidget code will call one of the 1253 two new functions XawTipEnable or XawTipDisable. 1254 + Added 3 new files: Tip.c, Tip.h and TipP.h. These files are used only 1255 by the new Xaw. 1256 + Updates to Xaw.man, including a problem with accented characters on SunOS. 1257 1258-- xedit -- 1259 + Added resource configurations to show the new tip code in Xaw. 1260 + Some fixes to ispell.c, to make it more previsible/user-friendly. 1261 + Fixes xedit.man to avoid problems with accented characters. 1262 1263 1264#2964 3 Jul 1999 1265-- Xaw -- 1266 + Fix for problem found in the search/replace dialog when using splitted 1267 windows in xedit. 1268 + Added initialization for the display_list field of the Tree widget. 1269 1270-- xedit -- 1271 + Fixed some problems in the undo code of ispell interface. 1272 1273 1274#2999 10 Jul 1999 1275-- Xaw -- 1276 + Added code to check the return value of XAllocColor and XAllocNamedColor in 1277 Pixmap.c. 1278 + Reverted back some code, and did a carefull review of the code in TextPop.c 1279 to avoid the possibility of calling XawTextDisableRedisplay, and not calling 1280 XawTextEnableRedisplay later (due to errors or end of file reached). 1281 + Added code to TextSrc.c, to use two static variables, that represent a new 1282 line in 8 bits and wchar_t, to avoid allocating memory in the undo buffers 1283 to store only a new line. 1284 + Small change in the behavior of the Tip widget, to not unmap the tip window 1285 when the cursor is moved. 1286 1287-- Xmu -- 1288 + Fixed a bug and a typo in the XmuToupper macro. 1289 1290-- xedit -- 1291 + Small update to the Xedit-sample file. 1292 + Fixed a bug in the ispell code that checks for repeated words. 1293 1294 1295#3122 14 Aug 1999 1296-- Xaw -- 1297 + Mixed fonts and colors can be used in the text widget (currently only 1298 in the Ascii*Object). 1299 + Added the XawTextAnchor, XawTextEntity, XawTextProperty, XawTextPropertyList, 1300 XawTextPaintStruct, XawTextPaintList and XawTextPropertyInfo structures to 1301 Xaw, to be used in the new text code. 1302 + Added the functions XawTextSourceAddAnchor, XawTextSourceNextAnchor, 1303 XawTextSourcePrevAnchor, XawTextSourceRemoveAnchor and 1304 XawTextSinkConvertPropertyList, that probably should not be used outside of 1305 Xaw. 1306 + Added the functions XawTextSourceFindAnchor, XawTextSourceAnchorAndEntity, 1307 XawTextSourceAddEntity, XawTextSourceClearEntities and XawTextSinkGetProperty 1308 that are probably the ones that should be most used in programs. 1309 + Italic fonts should be always displayed correctly. 1310 + The text widget cursor is now displayed with a gc with the Xor function, to 1311 avoid unnecessary computation/redrawing. 1312 + Most changes were done in the {Ascii,Text}{Src,Sink}Object, but the text 1313 widget was also a bit modified for things like automatically changing the 1314 number of lines in the line table when needed. 1315 1316-- Xmu -- 1317 + Fixed bug in Clip.c, that could cause a SEGV. 1318 1319-- xedit -- 1320 + Added the file c-mode.c, to interface with the new Xaw text code, and show 1321 what can be done when interfacing that new code. 1322 + Added the necessary code to util.c and options.c to let the user select 1323 if he or she wants to use the color/font syntax highlight in the C/C++ mode. 1324 1325 1326# 26 Aug 1999 1327 1328--Xaw-- 1329 + Added initial support for two new XawTextEntity attributes, that enable 1330 hidden text and replaced text. This initial support was the minimum 1331 required to get the new html mode in xedit working. A lot of code does 1332 math with text positions, and became broken with the addition of these 1333 two attributes. Since only code that knows about these two attributes 1334 should use it, it is only a question to fix the remaining code in 1335 Xaw/xedit. 1336 + Bug fixes to AsciiSink.c:PreparePaint to work correctly with tabs and 1337 the two new entity attributes. 1338 + Disabled the translation "c<Key>q,<Key>Tab" of the search/replace popup. 1339 This action is already done by the translation "<Ctrl>Q,<Key>" that I added 1340 to TextTr.c. Disabling that translation has the advantage that now it 1341 is possible to replace ^Ms by nothing. 1342 + Added some new functions to TextSink.c. The functions XawTextSinkCopyProperty, 1343 XawTextSinkAddProperty and XawTextSinkCombineProperty are candidates to being 1344 public in the future, but, there is a problem when using 1345 XawTextSinkCombineProperty, that requires the AsciiSinkObject having the 1346 correct XawTextPropertyList, what can generate a "chicken and egg" like 1347 problem (I did some hacks in xedit to have the first html-mode version 1348 working). 1349 + Added several new flags to the XawTextProperty attributes, and a new field, 1350 called xlfd_mask. 1351 + Some bug fixes to XawTextSourceReplace and to the code to manage the 1352 XawTextAnchor e XawTextEntity structures. The form-paragraph, called with 1353 M-Q does several consecutive text changes, and was very useful to find bugs. 1354 + The flag XAW_TENTF_REPLACE is a hack for XawTextSourceAddEntity currently. 1355 The function XawTextSourceAddEntity will probably change its parameters 1356 to receive a structure pointer, or a pointer parameter. 1357 1358--xedit-- 1359 + Fixed some bugs in c-mode.c. Again, this patch fixes all the bugs I have 1360 found. 1361 + Added the html-mode.c file to xedit. The html-mode is in its initial steps. 1362 It is not usable yet, but should not core-dump or leak memory (unless you 1363 try to edit the file, then, I cannot say what will happen). The html mode 1364 should be used only to see a rendered version of the file, but, there are 1365 several markups not implemented. To be usable, it must yet understand at 1366 least <ul>, <ol>, <li>, <dl>, <dd>, <hr> and the table tags. 1367 1368 1369 1370$XFree86: xc/lib/Xaw/Changelog,v 3.31 1999/08/15 13:00:31 dawes Exp $ 1371