File: ChangeLog

package info (click to toggle)
xbae 4.60.4-11
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,020 kB
  • sloc: ansic: 22,089; sh: 8,293; makefile: 522; tcl: 1
file content (1502 lines) | stat: -rw-r--r-- 69,662 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
#
# Copyright(c) 1992 Bell Communications Research, Inc. (Bellcore)
# Copyright(c) 1995-99 Andrew Lister
# Copyright  1999, 2000, 2001, 2002, 2003, 2004, 2005 by the LessTif/Xbae Team.
#
# $Header: /cvsroot/xbae/Xbae/ChangeLog,v 1.39 2006/05/29 13:25:06 tobiasoed Exp $
#

Xbae Release 4.60.4
-------------------
* Copy the fontlists and rendertable
* Fix a couple of build issues (settings for docs directories).
* Bind DefaultAct to BtnUp and BtnDown on the textWidget (like it is for
  the matrix) to disentangle it from the label activation.
* When the selectCellCB is triggered the row, col are now those of the cell 
  being edited when the event is a keyboard event
* Replace the clickEventHandler by a new action Label()
* Ungrab the pointer if the pointer is released over a cell widget or 
  a scrollbar when resizing a row/column.
* Allow all actions to be bound to cell widgets, not just editcell
* Dont free cell pixmaps when a row/column is removed
* Improve font selection fallback when a tag can't be found
* Store textChild and userWidgets row/col in constraint resources
* Rework event row/col localisation again
* Put static XrmQuarks in Class record to simplify their initialisation
* Start to drag-select only if the first parameter to ScrollSelectACT is PointerExtend,
  then on subsequent calls to selectCellCB pass all parameters given to the action 
  with the first one replaced by Extend

Xbae Release 4.60.2
-------------------
* Fix for delayed drawing - XbaeMatrixSetCellPixmap() didn't redraw the matrix.

* Add missing initialization of text_child_is_mapped to fix bug #1202437 "assertion 
  errors xbae-4.60.0"
* Fix an off by one pixel bug resulting in one more character being chopped off at
  the end of strings when they don't fit in their cell
* Allow compiling against motif 1.2 by disabling redertables in that case.
* Fix for bug #1236572 "X Error on XtSetValues for XmNcellMarginWidth"
  (xbaeHideTextChild didn't check whether the TextChild was realized).
* Don"t call edit cell with an invalid column in PageUp/DownACT to fix
  bug  #1219633 "Page Up/Down generates XtWarning"
  Also, trigger the traversal callback in these actions.

Xbae Release 4.60
-----------------
A small number of big changes, and a large number of smaller changes :
* Lots of work involving fonts, XmStrings, RenderTables, ..
* The potential for memory leaks in user code due to arcad's
  per cell change: all 2d tables returned by GetValues are now
  copies that the user should free.
* The changes in traversal: The clip widget doesn't accept focus
  anymore, it's all done with the text field. The traversalCallback
  now also gets fired for focus and loosingfocus events with new
  values for the reason field.

Here are the details of the smaller changes :
* Clean up the font related macros and baseline calculation
* Simplify xbaeDrawString
* Make multiline cells work irrespective of alignment without
  the need for recursion
* Introduce new resurce XmNwrapType that has an effect only when
  multiline cell is true. When set to XbaeWrapNone lines are
  broken at '\n'. When set to wrap_continuous, lines are further
  broken up so they fit in the cell. When set to wrap_word the
  lines are also broken up but preferably on a spaces.
* When fillVert/Horz is set the cell/button/textChild's contents 
  now also use the extra space, not just the cells background color.
* Fire traversalCB on losingFocus and Focus events.
* Add Per cell font support
* Support multiline row labels
* Support XmStrings in row labels
* Make sure slider_size, minimum, maximum and value are set for the
  scrollbars even when they are not mapped or else xbaeScrollRows/Columns
  use wrong values.
* Swap parameter name (Left/Up) of these function as it was confused.
* Fix a buglet in XbaeMatrixGetRowHeight that always returns 0.
* Cache visible_X_width/height in relayout instead of getting it from
  Clip->core.width/height. That way we can unmanage the clips when their
  width/height is 0 instead of keeping them around with a fake width of 1.
  This goes towards getting rid of non_fixed_row/column issues.
* Fix bugs using uninited variables.
* Fix a casting bug I introduced a couple of days ago and leads to
  instant death when compiling with a bit of optimization.
  Don't use expensive macros in XbaeMatrixXtoColumn/Row when we can
  have the answer for free.
* Add prototype and doc for XbaeMatrixGetCellColor/Background.
* Remove some unused stuff.
* Minor cleanups/optimization :
  Position textChild in the same way as cellWidgets
  Clean function parameters of Draw.c private functions
  Inline DrawCellHighlight and partially inline DrawCellFill
* Add public interfaces XbaeMatrixSetCell/Row/Column shadow. Use this
  to simplify examples fifteen and choice.
* Modified the way shadows are computed: When a per cell shadow is !=0
  it overrides anything else. Use this to get select-push to works
  without including private headers.
* Fix a couple of typos.
* Force a redisplay when cell sizes change.
  Set the foreground when drawing xmstrings.
  Call xbaeSaneRectangle from xbaeRedraw all instead of its callers.
  Factor out code duplication in Create.c
  Simplify select methods and underline/refresh functions
* Rename xbaeGetDrawCellValue to xbaeGetCellValues and have it init a
  struct insead of a bunch of scalars. This avoids having to declare
  all these variables in functions that only care about a few of the
  things it returns and should make adding new stuff easier (aka
  xmString).
  Inline xbaeGetNonSelectedCellColors in xbaeGetCellValues.
  Rearrange the order of functions in Draw.c
* Don't try to create/modify the gc's before the matrix is realized (fixes
  crashes when changing the sensitivity of the matrix before realize or
  setting it to false at creation time)
  When setvalues needs to redisplay don't relayout systematically.
  Simplify setvalues a bit and tighten the conditions that require
  relayouts/redisplays.
  Don't set gc's background/foreground if we don't need to.
* Change to order we do things to the textchild in doeditcell to keep
  motif from confusing itself
* Don't cancel the edit when setvalues has to redisplay or when a labels
  are set or when row/column heights/widths are set.
  Dont relayout twice if setvalues has to relayout and redisplay
* Rename xbaeShowTextChild to xbaePositionTextChild
  Don't cancel the edit when changing a cell's fg/bg color
* Fix the dmalloc code.
* Pass multi_line_cell and wrap_type down to the textChild
* Fix a bug in the cursor position calculation of the textChild
* Add public interfaces: XmSet/GetXmColumn/RowLabel
* Document XmLabels, multiline row labels.
* Fix for NutCracker's broken traversal as suggested by Dean Phillips
* Kill column_label_lines and use DrawString's ability to display
  multiple lines. (As a result column labels that have less lines than
  column_label_maxlines are now displayed at the top of their 'cell'
  instead of at the bottom.).
* Support multiline row labels. Introduced private row_label_maxlength
  to use instead of row_label_width so that the matrix remembers when
  the user sets it to 0.
* Support XmStrings as row labels.
* Take the height/width of XmStrings into account when computing
  column_label_maxlines and row_label_maxlength.
* Document TraverseCellCB when gaining/losing focus.
* Don't allow rows/cols < 1 pixel/char
* Document wrapType
  Don't allow rows/cols with 0 width/height
  When no font list/render table is specified look for an ancestor with
  the specifyRenderTable trait.
* Don't return garbage in getvalues hook.
* Don't XClearArea() on unrealized stuff, it'll cause X Errors.
* Rework XbaeMatrixSetCellWidget.
  Document the per cell font stuff
* Better argument checking/locking for public function
* Draw strings after pixmaps
  Hide the text child if someone sets a widget on top of it, even when
  it's done in the enterCellCB. (like Xquote does)
* Set the font of the textChild when it happens to be the current cell
  when the user set a cell's tag.
* Fix a font bug in drawcellstring and simplify it a bit
  Keep a quarkified version of the cell tags. That way we don't rely
  on the app to give us static string and we don't need to strcmp anymore.
  Clean up setvalues somewhat.
* Make per_cell fonts work with font_lists in addition to render_tables.
* New structure to consolidate font info
* Michel Bardiaux [PATCH] Fix warnings and C99isms
* Call traversCB when losing/gaining focus. Use this to make list3
  even nicer.

Test release 4.50.93
--------------------
Lots of work by Tobias Oed, including :
- a fix to get trailing attached rows/columns to work.
- I suspected there was another nasty bug in the scroll manager. Since it
  requires an x and a y offset on the scroll queue it's hard to trigger.
  So I modified examples/select-drag to get it to scroll in all directions
  (select-drag.patch).
- When running that I noticed that there was something wrong when scrolling
  left or up. Before takeling my bug I fixed that with
  lefttopcolumnrow.patch.
- Then for the longest time I couldn't understand why my bug apeared in the
  fixed columns but not in the fixed rows. Before realizing that it depended
  on the order of the XtVaSetValues calls (see select-drag.patch), I had
  come up with a neater version of the scroll callbacks (simplerscroll.patch).
- The attached patch fixes  the code that adds rows/columns (missing
  initialisation, and copy paste mistakes) along with a bit of simplification.
- Fix for Martin Gillett's problem with scrolling cell widgets.
- This patch fixes some problems with the motion scrolling (freezing, going
  farther than the extent of the non fixed columns) and with expanding a
  selection (I thinks that's what applications expect). Now drag-select
  works.  Actions.c gets a bit cleaner but could be simplified even more if we
  can agree to have HandleMotion trigger on BtnDown events instead of
  BtnMotion event. The current scheme forces  the event handler dealing with the
  labels/double clicks to store stuff for the action dealing with the cells.
  This may break stuff for user using custom binding for HandleMotion.  If we
  can live with that then a LabelActivate action could make things symetric...
- The attached patch chops the spaghetti in the redisplay functions into
  macaroni with no other sideeffect (AFAIKT).
- MatrixEvent.patch reverts part of a patch in which I oversimplified too
  much.  This gets list and select-push working again.  
  Visibleheight.patch: VISIBLE_HEIGHT is clipchild->height but that's what
  the function sets a bit later, so it's garbage where used. I fixed it by
  copying the simpler code used for the other scrollbar.
  Scrollmgr.patch: a scroll gets queued with the matrix even when nothing
  is copied. In that case no event is ever emmitted to remove the scroll
  from the queue...
  For example start select-drag and resize the window so that 2/3 of
  the rows and columns are visible.
  Click in the horiz scroll bar so that the last third of columns gets
  scrolled in (this scroll will remain on the matrix queue).
  Now click on the vertical scroll bar so that all the bottom rows get
  scrolled up, (a second scroll will be queued after the previous one.
  Since there are fixed columns Xcopies are made and a NoExpose event
  will be triggered. This will remove the first scroll. At this point we are
  stuck with a scroll on the queue that has a non zero y offset.)
  Now grab another window and move over the fixed columns, they don't get
  updated right anymore.

Test release 4.50.91
--------------------
Lots of work by Tobias Oed, including :
- Remove member first_row_offset from XbaeMatrixPart since it's usless.
- Replace xbaeEventToXY() and xbaeXYToRowCol() with xbaeEventToMatrixXY(),
  xbaeMatrixXtoColumn(), xbaeMatrixYtoRow() and xbaeMatrixXYToRowCol() that
  have simpler simpler semantics. Further a call to xbaeEventToMatrixXY()
  followed by a xbaeMatrixXYToRowCol() has the same result as a call to
  xbaeEventToXY() followed by xbaeXYToRowCol() used to have. This
  reduces Utils.c by 20%.
- Try to deal with the optimistic statement I made in my initial mail
  "the positions arrays are always up to date": It introduces a simple
  (but expensive) debugging mechanism to catch cases where they are not
  and fixes such a bug.
- Modify xbaeSetClipRect() introduced in a previous patch to return a status
  to detect when there is no rectangle corresponding to the request. Then
  it uses this new functionality along with the functions of matrixXY.patch
  to simplify xbaeRedrawCells() and xbaeRedrawFixed() of ScrollMgr.c by
  replacing repeated code with loops. This breaks 'attach trailing
  rows/columns' even more than they already are (when combined with
  XmGRID_[COLUMN|ROW]_[LINE|SHADOW]; The reason for the increased breakage
  stems from missing calls to xbaeSetClipMask(). I believe that they
  make the whole thing too spaghetti like and that the problem needs to
  be dealt with differently.
- Fix a 'fixed row/column' bug : When there is more than one trailing fixed
  row/column all their button labels activate the last one.
- In xbaeDrawString the call column=xbaeXtoCol(mw,x) was completely bogous as 
  the x is relative to a clip when xbaeXtoCol expects a virtual x.
- When labels and cells have fonts of different heights, the labels in fixed
  rows were displayed at different y locations than the ones in non fixed rows
  (due to a TEXT_Y_OFFSET vs LABEL_Y_OFFSET thinko).
  This also eliminated the only call to xbaeRowToY so I killed that function.
- Also the position arrays are now searched using a single binary search 
  instead of four linear searches.
- Fix a bug exposed in examples/choice when there is more than one fixed row:
  click arround and some rows don't get deselected when they should.
- Fix the initialisation of the position array so that the last element gets
  initialized and simplifies a bunch of ugly macros by using these arrays.
- Remove two now useless fields from the matrix as well as their initialisation
  statements and other functions that are now never called.
- Change the functions that initialize the position array by explicitly
  inlining SOME_ROW_HEIGHT and COLUMN_WIDTH so that these macros can be
  rewritten to mimic all the others.

Release 4.50.5
--------------
* Fix for XmNautoFill in XbaeInput when the pattern begins with an
  optional literal, such as [-]d[d][d][d][d] .
* Add the new resources introduced in the last months to the example
  Builder Xcessory integration file in examples/builderXcessory.
* Bugfix for a clip window size problem that showed up when resizing the
  window (e.g. resize examples/traversal/traversal to smaller than the
  original and then bigger). Bug #702560.
* Some source code cleanup.
* Fixes by James Georgas for colour handling.
* Fixes by Van to eliminate slider size warnings (see bugs #823041 and #823037).
* Fixes by David Traill for both resize and scrollbar warnings.
* Add XmNXmColumnLabel resource to handle XmString as column labels.
* Fix a memory problem with row_heights.

* Code cleanup and a coredump fix by James Georgas : I'm pretty sure
  that the segfault was caused by a missing NULL check on the
  row_heights variable in the last block of AddRowsToTable() in
  Methods.c. I added a check in the attached patch. It also looks like
  this block duplicates the effects of some code earlier in the function.
  I put a comment to that effect in above the block.


4.50.3 was not an official release.
	It was a test version distributed to parties interested in it.

Release 4.50.3
--------------
* Bugfix for a clip window size problem that showed up when resizing the
  window (e.g. resize examples/traversal/traversal to smaller than the
  original and then bigger). Bug #702560.
* Some source code cleanup.

Release 4.50.2
--------------
* A memory (double free) related bugfix.
* Two new resources (XmNhorzFill, XmNvertFill) were added to allow for 
  additional fill behaviour. This allows you to specify how the matrix
  treats highlighting of the last row or column.
* The foreground and background resources are no longer being set on
  cell widgets, as this appears to be strange behaviour.
* Bugfix related to incorrect refresh after deleting rows.
* Remove some C++ style comments.
* Fix some build problems.
* Move some stuff in the share/ directory at installation.
* Implement the XBAE_PRODUCTION symbol to compile Xbae with or without
  debugging code.
* Improve resizing rows and columns.
* Avoid X Errors when setting clip geometry to 0.
* Implement showColumnArrows and showRowArrows resources.
* Fix incorrect behaviour when rapidly clicking with two different
  mouse buttons.
* Fix nested comments and a missing prototype.
* Fix scrollbar warning problem.
* Changed the column width measurement.

Release 4.50
------------
This is a stable release, basically equivalent to 4.9.13.

Changes in 4.9.13
-----------------
* Fix the GROHTML build problem.
* Bugfix : when resizing first of trailing fixed rows, the VSB slider
  was not updated and a blank area was visible between clip and bottomclip.
* Changed useXbaeInput default value to False.


Changes in 4.9.11
-----------------
* Sascha Gbel and Greg Shebert are now part of the Xbae development team.
* Many bugfixes to the scrolling (smooth scrolling now),
  and to resizing row heights.
* Received code from Sasha Gbel.

Changes in 4.9.9
----------------
* Bug fixes related to redrawing.
* Enable dynamic row/column resizes again.
* Include images in release files again - this makes for a large package.
* Build HTML manual pages from their sources (the HTML is in doc/,
  but the sources are in src/*.3.in).

Changes in 4.9.7
----------------
* Sascha Gbel contributed substantial improvement to scrolling.
* Bugfixes.

Changes in 4.9.5
----------------

* Improved internal debugging support (dmalloc, dbmalloc)
* Fix pattern check in XbaeInput
* Remove support for Motif <=1.1
* Bugfix by Phil Eccles to position cell widgets correctly when row/column
  headers are active.

Changes in 4.9.1
----------------
* Bug fixes to get a release out that's less bad than 4.9.0.

Changes in 4.9.0
----------------
* Row height and true-color (aka 24-bit color) support are now considered stable
  and enabled by default.
* Internals : try to give all non-static functions an Xbae prefix.
* Code contributed by Frank Mair for having bold columns in XbaeMatrix.
* Bugfixes.

Changes in 4.8.4
----------------
* 4.8.* ARE DEVELOPMENT RELEASES
  What does that mean ?

* Update some docs (new maintainers, etc.)

Changes in 4.8.3
----------------
* 4.8.* ARE DEVELOPMENT RELEASES
  What does that mean ?

  Functionality : incomplete (new functionality under development)
  Stability : should be good (no release should crash or break 4.7 functionality)

* More bugfixes in row height code.
* Add include/XbaeConfig.h.bot, and AM_WITH_DMALLOC, to make the library work
  well with dmalloc if configured in that way.
* Fixes for auto* and Imake configuration

Changes in 4.8.2
----------------
* 4.8.* ARE DEVELOPMENT RELEASES
  What does that mean ?

  Functionality : incomplete (new functionality under development)
  Stability : should be good (no release should crash or break 4.7 functionality)

* Bugfixes in row height code, especially when adding rows.

Changes in 4.8.1
----------------
* 4.8.* ARE DEVELOPMENT RELEASES
  What does that mean ?

  Functionality : incomplete (new functionality under development)
  Stability : should be good (no release should crash or break 4.7 functionality)

* Rows can now be resized, meaning you can change their height.
  This can visually be done by using Shift-MB2 as for column widths.

  An application can call XbaeMatrixSetRowHeight() or
  XbaeMatrixSetColumnWidth() to set, XbaeMatrixGetRowHeight() or
  XbaeMatrixGetColumnWidth() to query these dimensions.
  It *is* possible to hide a row by setting its height to 0.
  Setting the height to -1 will reset to the default.

  Currently this is only enabled by "configure --enable-xbae-row-heights".

* TrueColor bugfix.
  Only enabled by "configure --enable-xbae-24bit".

* Scrolling bugfix (only appears when using some window managers with
  Click-to-focus. Simultaneously obtaining focus and causing the XbaeMatrix
  to jump-scroll would cause an incomplete redraw). Thank you Andrew Hately.

* Several bugfixes dealing with global/static variables.

* Xbae should be more threadsafe.

* Add XbaeGetVersionTxt(), XbaeGetVersionNum() to get the version number
  from the (shared) library.
  Macros to get this at compile time are already in place.

* Change version numbers to include the UPDATE number as well. Now
  4.8.1 becomes 40801 (M * 10000 + m * 100 + u).

Changes in 4.7.2
----------------
* Changed libtool version numbers according to the rules, which means
  this will probably upset some people trying to use the library.
  An interface was added, see below.

* CELL_WIDGETS fixes by Linas Vesptas.

* CELL_WIDGETS functionality extended with XbaeMatrixGetCellWidget()
  which you can use to figure out whether a cell already has a
  widget.

* CELL_WIDGETS now enabled by default.

Changes in 4.7.1
----------------
* Maintenance is transferred to the LessTif core team.

* Configuration based on automake, autoconf, libtool is added, this
  is the preferred environment for the current (new) maintainers.

Changes in 4.7
----------------

* Swapped out the XmTextField widget to use the XmText widget to enable
  multi line rows and the like - thanks to Mark Gibson (magibso@uswest.com)
  for his methods in achieving this goal.

* Added a patch from Philip Aston (philipa@parallax.co.uk) that
  reportedly speeds up things by 300% when using pixmaps.  Acheivable
  by specifying the width, height and depth of a pixmap to an
  XbaeMatrixDrawCellCallbackStruct.

* Another patch from Philip provided correct behaviour when setting
  the XmNsensitive resource on ancestors of the matrix widget.

* "Ceklosky" (b1dqza9@is200005.bell-atl.com) reported a memory leak
  when the widget was destroyed.  This came about from highlighted-
  cells not being freed.

* Donato Petrino (dp@rtsffm.com) provided an efficient way of detecting
  if partially displayed rows were visible

* He also supplied a patch that corrected the placement of the text
  widget if the user first clicked on an editable fixed row.

* Scott Harrington (scotth@ibl.bm) figured out that xbaeComputeSize()
  should not add space for scrollbars if the displayPolicy is set to
  XmDISPLAY_NONE.  He also provided a patch.

* Made a small change to a conditional in Matrix.c that prevents
  an erroneous warning message being displayed.  Thanks to Curt
  Malouin (cmalouin@ford.com) for that one.

* Merged two patches from Jay Schmidgall (Jay.Schmidgall@Sungardss.com)
  one fixed a slight error in the drawing of scrollbar heights/widths
  while the other fixed some casting problems under Solaris [they
  must be getting stricter on this ANSI C thing!]

* Brian McAllister (brian@hotrats.mit.edu) provided a fix for compilation
  of Xbae on Dec Alphas

* Jay Schmidgall continued work on the widget, providing:

o Corrected some bugs with row/column shadow drawing and clearing
o Corrected some bugs related to not having row/column labels
o Changed the way shadows are drawn to be the correct way,
  i.e., mine. That is, XmSHADOW_OUT results in an outset shadow.
  Note: this may have implications for Motif 1.1 compatibility,
  since type isn't passed along to _XmDrawShadow()
(ED: Since 1.1 is no longer supported, this isn't an issue!)
o Changed the grid type enumeration to be more explicit
o Made the unneeded grid types deprecated, which will result
  in runtime warning messages
o Added grid types XmGRID_ROW_LINE and XmGRID_COLUMN_LINE
  (this was suprisingly simple :)
o Modified the matrix resource declaration to come into line
  with grid/shadow changes
o Modified the choice example program to reflect these changes
o Modified the man page to reflect these changes

*** NOTE ************************************************************
  The new types for gridType are:
  enum
  {
      XmGRID_NONE             = 0x00,
      XmGRID_CELL_LINE        = 0x02,
      XmGRID_CELL_SHADOW      = 0x03,
      XmGRID_ROW_LINE         = 0x04,
      XmGRID_ROW_SHADOW       = 0x05,
      XmGRID_COLUMN_LINE      = 0x08,
      XmGRID_COLUMN_SHADOW    = 0x09,

      /* Deprecated types. Use will cause
       * a run-time warning to be issued. */
      XmGRID_LINE             = 0x20,
      XmGRID_SHADOW_IN        = 0x40,
      XmGRID_SHADOW_OUT       = 0x80
  };

  If any of the bottom three values, a runtime warning will be output.
  You simply need to tweak the resources in your app to avoid it.

*********************************************************************

* Added a patch supplied by Martin Helmling (mh@octogon.de) that
  correctly manages the insensitive pixmap when creating for multiple
  screens.  Patches were also sent in by Dimitri Castiglioni and
  Donato Petrino.

* Added the doc/XbaeMatrix.man.html file as part of the official release

* Jay Schmidgall sent in another patch!  This time he:

o got irritated by how the matrix did column shadows/lines.
  In particular, there could be a little gap between the last
  non-fixed row and the first trailing fixed row, and that gap
  looked bad because the column shadow just ended there. So,
  I modified the shadow & highlight code so that gap got filled
  in. Looks much better now.
o Fixed the column resize shadow so it draws all the way to the
  bottom of the matrix, plus handles the gap like the above.
o Added a new resource, XmNtrailingAttachedBottom. (If you can
  come up with a better name, feel free :). This resource makes
  the matrix keep the trailing fixed rows on the bottom. It only
  has effect when XmNfill is true and there are trailing fixed
  rows. It's probably easier to understand visually.
o I put the equivalent AttachedRight in the matrix's resources,
  but I didn't feel up to doing the code for it :).
o Added a bunch of macros.
o Added the resource to the man page (yay!)
o Mucked around some more with the choice program to add the
  attachedBottom resource, and let you change the selection mode.
  I did this mostly because choice is the test bed for changes I
  make, and I needed to test the highlighting. Also let you do
  Arm mode, which looks neat in the grid shadow modes.

* Philip Aston sent in yet another patch that remedied an array
  bounds read as reported by Purify.

* A segmentation fault occurred if the user pressed <ESC> when no
  cells had been defined.  Diligently spotted and patch provided
  by Noel Yap (nyap@garban.com)

* Removed an unnecessary reference to XmNeditVerifyCallback in
  Matrix.h that Noel found as well.

* Added fix from Jon Sibala (jon_sibala@hotmail.com) where zero 
  rows was causing a crash in xbaeDrawCell.

* David North reported a bug in the charWidth macro on OpenVMS.
  A cast to unsigned char of the passed character was required.

* Marty Leisner (leisner@sdsp.mc.xerox.com) advised that the runtest
  script required '.' to be in your path.  Added an explicit ./ to
  all commands run from the script

* Cleaned up a few potential problems with compilation

* Removed the xqCellWidget from the release. The subclassed widget
  started causing problems when using Motif 2.1 probably due to
  incompatibilities between the XmText and XmTextField widgets
  The change may also fix problems reported by the guys back at
  Bellcore, running under Motif 2.1

* There are some new public functions:- XbaeMatrixSetRowLabel and,
  funnily enough, XbaeMatrixSetColumnLabel and their Get equivalents
  are now documented in the man page.

* Just as some sort of benchmark, Callum and myself loaded up a
  historical database comprising of somewhere around 780,000 rows and
  3 columns.  Using the drawCellCallback, XbaeMatrix handled display
  of the data as if there were 100 rows.  If anyone has tried creating
  a bigger table, please let me know the results!  (That applies to
  tables created with commercial widgets too)

* The building of shared libraries is now the default behaviour in
  the Imakefile.  If anybody has trouble running the demos due
  to the shared library not being picked up, please let me know
  so we can work out a fix.

* The HTML man page is probably a bit behind as I prefer methods
  from yesteryear.  Updates are always appreciated!

* Removed a strdup call and added __EMX__ to the preprocessor directives
  for not having bcopy.  Patch sent in by Evgeny Stambulchik
  (fnevgeny@plasma-gate.weizmann.ac.il)

* Two fixes from Mark Crowther (markc@parallax.co.uk) that better
  controlled scrolling with the pointer outside the clip and prevented
  the scrollbar warnings when columns were deleted.

* Noel Yap (nyap@garban.com) pointed out a small error in the draw
  example where the columns for pixmaps was incorrect

* Added the XEvent structure to all callbacks

* New widget!  XbaeInput allows a 'pattern' to be specified to restrict
  input to certain characters.  Read the new man page to find out
  more.

* Added some extra parameters to the XbaeMatrixEnterCellCallbackStruct -
  namely, position, pattern, auto_fill, convert_case, and
  overwrite_mode for use with the XbaeInput widget.
  Also, the params and num_params are passed through to the
  enterCellCB too.

* New resource - XmNcalcCursorPosition that allows the pointer to
  specify the insert position when clicked on a cell to be edited
  rather than at the end (default is False so behaviour is unchanged)

* Nick Banyard (nbanyard@micromuse.com) provided the ability to
  allow multibyte characters to be displayed with the addition of an
  XFontSet.  There is a new example program also, named multibyte
  that *should* display multibyte characters but some work may be
  needed there.

* Mark Hatch (mhatch@ics.com) provided me a free copy of Integrated
  Computer Solutions (http://www.ics.com) Builder Xcessory for both
  Solaris and Linux so the integration and compatibility between the
  two can be maintained.  If you're looking for an excellent GUI builder,
  I'd recommend checking this one out!

* Added a matrix creation convenience routine - XbaeCreateMatrix for
  smoother integration into Builder Xcessory

* Added a caption creation convenience routine - XbaeCreateCaption for
  smoother integration into Builder Xcessory

* Added an input creation convenience routine - XbaeCreateInput for
  smoother integration into Builder Xcessory

* Evgeny Stambulchik (fnevgeny@plasma-gate.weizmann.ac.il) supplied the
  GNU autoconf tools needed to compile the widget via ./configure as so
  many people feel the urge to do nowadays.  However, I have no intention
  of supporting it so you'd better have a friend who can & will.

* Callum Gibson (callum.gibson@aus.deuba.com) wrote a couple of new
  public functions to refresh entire rows or columns efficiently.
  They are called XbaeMatrixRefreshRow() and XbaeMatrixRefreshColumn().

* The XbaeMatrixAnyCallbackStruct was created to allow the reason, 
  event, row and column members to be aligned and facilitate the use
  of one callback struct in multiple callbacks.

* Fixed a bug with wrong fg/bg colours when editing a cell with
  reverse select enabled and using a draw cell callback which set
  foreground or background. (Everyone does that don't they?)

* Added a new action that allows the matrix to be scrolled up and
  down using the PgUp/PgDn keys when the text field is mapped.  It
  is installed by default.

Changes in 4.6.2
----------------

* Heinz Nagel (heinznagel@lucent.com) discovered an uninitialised
  variable in Methods.c

* Tim Bomgardner (Tim.Bomgardner@mci.com) found a clipping problem
  when a horizontal scrollbar and row labels are present.  The
  row labels were being drawn to the left of the horizontal SB.

* Whilst fixing Tim's problem, I also found several other small
  scrolling problems that were rectified

Changes in 4.6.1
----------------

* Added a weeny patch from Callum Gibson (callum.gibson@aus.deuba.com)
  that fixed a problem when there are no rows and row 0 is accessed.

* Philip Aston (philipa@parallax.co.uk) sent a patch in that missed out
  on the 4.6 release that handled null buttons when row or column label
  buttons were specified.  Added that in.

* Daiji Takamori (daijit@std.teradyne.com) suggested that all clip
  widgets should change their background colour - not just the main
  one.  Made this change.

* Steven Chase (schase@xpletive.mitre.org) provided two more public
  routines called XbaeMatrixGetColumnLabel() and
  XbaeMatrixGetRowLabel() which do what they imply.

* Inspired by Steven's idea, I went ahead and wrote some companion
  routines called XbaeMatrixSetColumnLabel() and XbaeMatrixSetRowLabel()
  which remove the overhead and flicker of SetValues() as well as help
  me not to have to answer people who try to "swap" columns the wrong way.

* Found a couple of public functions that weren't documented -
  XbaeMatrixSetRowUserData() and XbaeMatrixSetColumnUserData() and
  put them in the manual page.

* Made an effort to support smooth scrolling.  You'll now find that
  the last row, if not fully displayed is not blanked out as it was
  previously.  Change suggested by Adam Kerrison
  (Adam.Kerrison@micromuse.co.uk)

* Converted comments in the imake stuff to use XCOMM - apparently, it's the
  standard.

* Fixed a redisplay problem when there are different coloured backgrounds/
  foregrounds and rows are deleted.  Found by Craig Bruenell
  (cbruenell@macaw.retix.com)

* Added in a patch from Andy Warburton (andyw@parallax.co.uk) that fixed
  problems causing the SelectCell callback not to be called when the
  pointer was outside the matrix.

* Howie Kaye (howie@columbia.edu) suggested a smoother method for
  scrolling when setting XmNtopRow.  It prevents excessive redraws
  by using the matrix's internal scrolling methods.

* Philip Aston (philipa@parallax.co.uk) had an idea that scrolling to
  the selected cell when in auto scroll mode should be disabled.  I
  liked the idea, too.


Changes in 4.6
--------------

* Fixed the problem with passing non printable chars to the matrix.

  Fixed a couple of bugs associated with changing rows and colours at
  the same time.

  Does not do the free, malloc and drawing of a cell if the value is
  the same and SetValues is called.

  New public function - XbaeMatrixRefreshCell(mw, row, column) which
  forces a cell to be redrawn.  When using the drawCellCallback, an
  event may trigger a change to a cell that is not displayed until an
  expose event is generated.  Using XbaeMatrixRefresh() is a bit of an
  overkill if just changing one cell.

  Added a delete button to the add demo.  Removed the debug write from
  the colors demo.

  The above changes were incorporated into the patch released to the
  mailing list on 2nd of March, 1996 to take 4.5 to 4.5.1

* Fixed a problem that was allowing double clicks to be performed with
  any mouse button rather than using the translation table to work out
  which button should be used.

* Did some work on improving the update flicker if
  XbaeMatrixDisableRedisplay() has been called.  Earl Revett
  (erevett@kokomo.bmc.com) provided the initial idea and a patch.

* Merged in a patch from Earl Revett that fixed some portability
  issues for him and most likely for others too.

* Made a change suggested by Daiji Takamori (daijit@std.teradyne.com)
  that eliminates some excess variable-checking and reports individual
  errors for no non-fixed rows and no non-fixed columns.

* Created an FAQ as I was getting sick and tired of answering the "How
  do I make a cell non-editable?"question.  Callum Gibson
  (callum.gibson@aus.deuba.com) initiated the proceedings, I merely did
  the answers.

* Disabled a warning message if a matrix has 0 rows or 0 columns and is
  editable as the EditCell routine was being passed a bad row / column
  even though there are no cells to be edited.  Suggested by Ross Milward
  (ross.milward@aus.deuba.com)

* Added a new public function called XbaeMatrixMakeCellVisible() that
  allows a cell to be programatically scrolled onto the visible area of
  the matrix.  Suggested by Steve Wall (sjwall@uswest.com).

* Added the XmNshowArrows resource to make it optional whether obscured
  data is indicated by a drawn triangle or not.  The default value is
  False.  Enough people complained about it so there ya go.

* Removed parameter names from function prototypes as it could cause
  clashes with typedefs and #define's in other header file.

* Added three public functions from Matthew Francey (mdf@angoss.com) -
  XbaeMatrixIsRowVisible(), XbaeMatrixIsCellVisible() and
  XbaeMatrixIsColumnVisible() which do pretty much as the name suggests.

* Fixed a bug, found by Matthew Francey which would occasionally cause a
  crash when the widget was destroyed.  Fix contributed by Matthew also.

* Made some more changes hinted at by Jason Smith
  (jason.smith@europe.sbil.co.uk) to make the widget motif 1.1 compatible.
  The widget is probably still not entirely compatible with 1.1 as I have
  no way of testing whether it is or not and nobody seems willing to
  send me an entire patch.

* Adding rows or columns with no labels when XmNbuttonLabels is set to
  True will now draw buttons around the empty labels.  Previously, a
  blank label would result in no button and it looked weird.

* Included a patch from Andy Warburton (andyw@parralax.co.uk) which
  corrected colours of selected cells when using the drawCellCallback
  and the reverseSelect resource.

* Added the ability for the matrix to *look* insensitive by using a
  stipple pixmap to create the effect on the text.  Suggested by
  "tom" (kriener.pad@sni.de).

* Rewrote the LICENSE file and actually included the above copyright
  notice that was never there.  See the FAQ for the license in plain
  english. (Note in later distributions this is the COPYING file.)

* Added in a patch from Martin Helmling (mh@octogon.de) that prevented
  problems with NULL pointers in String array resources.

* Modified the way the drawing of fixed cells were cleared and drawn.
  There were problems with setting the values of fixed cells and also
  an incorrect visual was sometimes obtained when selecting fixed rows
  and / or columns.

* Fixed the way the matrix dealt with moving the pointer off the clip
  widget and outside the matrix widget's window so it behaves more like
  the list widget.  <Btn1Up> events should now report the last cell that
  was left rather than fail completely.  Invaluable for multiple selection
  of cells.

* Added a couple of new public functions inspired by Philip Aston
  (philipa@parallax.co.uk) named XbaeMatrixEventToXY() and
  XbaeMatrixRowColumnToXY().  See the man page for details.

* Changed the method of pointer grabbing for the button presses and
  MotionEvent's outside of the matrix from XtGrabPointer to XtAddGrab
  since grabbing the pointer seemed to be a bit of an overkill.  It
  also makes debugging easier and improves performance.

* Added an allowance to enable use of the XmText resource XmNshadowThickness
  on the text field.  Idea from by Daiji Takamori (daijit@std.teradyne.com).
  I had to add a new resource to do this named XmNtextShadowThickness.

* Merged in a fix from Andy Warburton (andyw@parallax.co.uk) to fix
  a problem in the reverse selection when using a draw cell callback

* Added a new member to the XbaeMatrixEnterCellCallbackStruct called map
  that, when set to False, prevents the text field from being mapped onto a
  cell.

* Tim Bomgardner (timbo@apdev.cs.mci.com) provided a new public routine
  called XbaeMatrixVisibleCells() that allows the rows and columns on the
  edges of a matrix to be obtained

* Added the XEvent pointer to the XbaeMatrixLabelActivateCallbackStruct
  as suggested by Saroj Mahapatra (saroj@nynexst.com)

* Callum Gibson (callum.gibson@aus.deuba.com) kindly made the effort to
  put all existing releases into a CVS source tree in an effort to get me
  organised (Don't really know if it helped!).

* Made a fix suggested by Martin Helmling (mh@octogon.de) that prevented
  a possible crash in the calls to XtCheckSubclass()

* Added in several patches from Philip Aston (philipa@parallax.co.uk).
  One removed all scrolling events when XbaeMatrixEnableRedisplay()
  was called that fixed up some redraw problems for him.  He also
  provided the Boolean resources, XmNrowButtonLabels and
  XmNcolumnButtonLabels that define which labels should be drawn as
  buttons.

* Callum Gibson offered his services again and made fixed cells editable
  and thus made it possible to remove question 2.8 from the FAQ.  For the
  optimists out there who haven't allowed for this in their applications,
  another resource has been added, XmNtraverseFixedCells, with a default
  of False has been added.  A new series of clip widgets have been added
  which should fix most of the redraw issues.  Want details?  Ask
  Callum.

* Completely rewrote the method in which row and column shading gets drawn
  which should prove to be faster and more reliable when dynamically
  changing the matrix's size.  The highlighting and unhighlighting had
  to be rewritten too.  These procedures also will affect pixmap cells which,
  I believe, would not have worked otherwise.

* (4.6 BETA released)

* Added a credit in this file for Philip Aston and the XmNrowButtonLabels
  resource.

* Jay Schmidgall <Jay.Schmidgall@sungardss.com> provided a patch to fix
  the calls to private xbae functions that the program used.  Also
  pointed out a few problems with changes I had made to Xbae.tmpl which
  I hope I have fixed.

* Added a patch from Alexander Ivanov <avi@eaglesoft.com> that fixed
  a crash when destroying the matrix on Solaris 2.5.  That's what you
  get if you don't initialise variables.

* Daiji Takamori pointed out an incorrect endif in Xbae.tmpl.

* Philip Aston provided a patch to make the String to String Array type
  converter a little more sane.  Here's his interpretation of the change:

  Improved the handling of escaped characters by the String to String
  Array type converter. Previously only ',' could be escaped as \,',
  now any character can be escaped using '\'.
  Note, this behaviour is _not_ backwardly compatible, but is only
  likely to break code which uses backslashes in resource strings. Use
  '\\' instead of '\' to quote a backslash.

* Changed the alignment_center routine to check a little better for the
  end of a string when the existing check may cause an infinite loop.
  Problem brought to recognition by Donato Petrino (dp@rtsffm.com)

* Philip Aston pointed out a few problems that sometimes caused
  column labels not to refresh.  Fix also suggested by Philip.

* Rewrote the code in XbaeMatrixRefresh() that caused a "double flicker"
  when called so there is only *one* flash



Changes in 4.5
--------------

* Added "<" and ">" symbols to signify when data in a cell is out of
  sight.  This was causing a few problems when a minus sign was hidden
  or other numbers were obscured.  The new feature can also be used
  to indicate that a column should be resized in order to see all the
  data contained in a cell.

* Removed references to XmDrawHighlight() if the Motif version is less
  than 1.2.  This will hopefully allow the widgets to compile under
  Motif 1.1, but with a little less functionality.  There is probably
  more work to be done to actually get it to compile under 1.1 but,
  as I cannot test it, I need a patch from somebody with access to it.

* Updated the Imakefile and Xbae.tmpl files to allow shared and debug
  libraries to be made and installed as well as the normal libXbae.a.
  If your system does not support shared libraries or they don't compile
  properly like Linux/a.out, then only set DoNormalLib to YES.  I don't
  want to hear complaints about shared libraries not working!  Thanks
  to Dirk Vangestel (gesteld@sebb.bel.alcatel.be) for the initial idea
  and patch.

* Broke Utils.[ch] into smaller parts to add Create.[ch] to the
  distribution.  This new module basically handles the creation of the
  matrix widget's data and freeing of the same data.  Also moved a few
  functions that were incorrectly located in Actions.c, namely
  xbaeXYToRowColumn() and xbaeRowColToXY().

* Modified xbaeXYToRowColumn() to correctly detect and report an event
  occurring on a row or column label.

* Tidied up the MatrixP.h file which was getting a little dishevelled.

* Changed the way the matrix handles the cell_backgrounds initialisation.
  Instead of setting all the backgrounds to the core's background, the
  colours are now inherited from the odd and even row backgrounds.  If
  these values have not been set, they inherit the core's colour anyway.

* Altered the background cell colour calculation to provide even and
  odd row backgrounds for fixed rows.  Previously, the calculation would
  only use the odd and even row backgrounds for non fixed rows and
  trailing fixed rows which seemed a little inconsistent.
  
* Fixed a serious bug that no one has reported that involves resizing
  a widget that has trailing fixed rows.  The widget attempted to set
  the height of the vertical scroll bar to zero causing one of those
  XError messages that are nice and hard to track down.

* Changed the way the row label width is calculated.  It now uses the
  average width of the characters.  Normally, it should be calculated
  correctly but if some characters are clipped, you might need to
  change the rowLabelWidth resource.  Generally speaking, the row
  labels look better placed.  This change will only affect proportional
  fonts used as the label font.

* Added a patch from Martin Helmling (mh@c3i.sel.de) to allow the cells
  resource to be row terminated with a single \n rather than the
  original \\n.  I then did the same for the colors and cellBackgrounds.
  Old resources will still work, however.

* Removed the "leading_fixed_rows" and "leading_fixed_columns" members
  of the XbaeMatrixTraverseCellCallbackStruct as they were not referenced
  nor documented.  I really hope this doesn't cause anyone any grief.

* Added the resources XmNbuttonLabels and XmNlabelActivateCallback to
  draw the labels as a drawn PushButton when set to True.  When a label
  is clicked on and released, callbacks on the labelActivateCallback
  will be called.  Also modified the choice demo to allow the buttons
  to be shown.  The background colour of the buttons can be changed
  with the XmNbuttonLabelBackground.

* Made the XmNmodifyVerifyCallback *not* be called when the text field
  is mapped onto a cell.  This is not the default behaviour of the
  text field and produced misleading results.  Pointed out by N. J. 
  O'Neill (njoneil@sandia.gov)


Changes in 4.4
--------------

* Merged in a patch from Martin Helmling (mh@c3i.sel.de) that
  allows cells and pixel tables to be specified in a resource file. The
  matrix example (although too colourful and ugly!) demonstrates the
  possibilites.

* Added a new directory (vmsstuff) that contains the necessary files
  for compilation on VMS.  Courtesy of Vince Li (vli@mpr.ca)

* Fixed a bug found by Andrew Reid (areid@bain.oz.au) that caused
  problems with using XtVaSetValues() on XmNcolors and XmNcellBackgrounds.
  Optimised much of the code handling these settings too.

* Fixed a bug that caused cells not to be drawn even though they were
  visible.  Unearthed by Donato Petrino (dp@rtsffm.com)

* Added support for colour pixmaps to be displayed. flavius@sed.psrw.com
  suggested this change and also modified the "draw" demo to make use of it.
  NOTE: For the draw demo to display colour pixmaps, you should define
  HaveXpm in Xbae.tmpl.  That is, of course, if you have it!  The need for
  returning the width and height of the pixmap to the widget has also been
  removed.  Invaluable help on masks was provided by Adam Kerrison
  (adam@micromuse.co.uk)

* Patched in and modified a resizeColumnCallback from Alexander Ivanov
  <avi@elais.physics.ox.ac.uk>  Refer to the man page for information.
  The new callback allows processing to be done after the columns
  have been resized.  The add example uses this callback to achieve some 
  pretty funky results!

* Patched in some work done by Dirk Vangestel (gesteld@sebb.bel.alcatel.be)
  to allow scroll bars to be placed in different locations, similar to a
  Motif scrolled window.  The new resource, XmNscrollBarPlacement
  behaves exactly the way the resource for XmScrolledWindow does and
  accepts the same values.  Dirk also modified the choice program to
  show off the new behaviour.

* Rewrote (with permission from ICS) a wml file for use with the ICS Builder
  Xcessory GUI builder and the current version of Xbae.  It can be
  found in the contrib subdirectory.  As I no longer have a copy
  of Builder Xcessory, it will be difficult to maintain.  The file
  can (probably) also be found at ftp.ics.com in
  /pub/Products/ToolsAndTricks/BxXbae.tar.gz.  I would expect that the
  other files in the contrib directory may now be out of date also.

* Changed the Imakefile to install Xbae as Xbae-$(VERSION) and make a
  symbolic link.  For those who have production environments, this should
  help in rebuilding with previous versions of the widgets - suggested by
  Ross Milward (rossm@bain.oz.au)

* Tracked down a bug in xbaeComputeCellColors() that incorrectly calculated
  the colour value _if_ the colour had a pixel value of zero (typically white
  in the colourmap)

* Added in a fix from Philip Aston (philipa@parallax.co.uk) to "fix a
  duff calculation of the selected column in a fixed row".

* Changed the XbaeMatrixEnterCellCallbackStruct to include a new member
  called select_text.  By setting to True in the enterCellCallback, the
  text in the textField will be selected and deleted when the next
  insertion occurs.


Changes in 4.3
--------------

* Added an XbaeVersion to Matrix.h.  The value for this is calculated in a way
  similar to how Motif does it:

	#define XbaeVERSION       4
	#define XbaeREVISION      3
	#define XbaeVersion (XbaeVERSION * 1000 + XbaeREVISION)

  This brings another header file into the release - patchlevel.h.

* Merged in another patch from Jay Schmidgall that added the resources
  XmNcellShadowTypes, XmNcellUserData, XmNclipWindow, XmNcolumnShadowTypes,
  XmNcolumnUserData, XmNrowShadowTypes, XmNrowUserData and XmNtextField.
  Also some more public functions to manipulate the data.
  See the manual page for more information on these.

* Also added two more demo programs from Jay, fifteen and select-push

* Added row and column label colour resources (suggested by Adam Kerrison,
  Adam.Kerrison@micromuse.co.uk)

* Merged in a patch from Jason Smith <js81736@internet.sbi.com>
  that allows the Matrix to be compiled using Sunos 4.1.x Openwindows 3.0
  and Motif 1.1.x

* Removed the line in SetValues() that resets the scrollbar to 0 when
  the Matrix is redrawn (suggested by Adam Kerrison also)

* Added more public routines: XbaeMatrixIsRowSelected(),
  XbaeMatrixIsColumnSelected(), XbaeMatrixIsCellSelected(),
  XbaeMatrixFirstSelectedRow(), XbaeMatrixFirstSelectedColumn(),
  XbaeMatrixFirstSelectedCell(), XbaeMatrixYToRow(), XbaeMatrixXToCol()
  Suggested by Adam Kerrison.

* Fixed a bug with XmNtopRow and XmNleftColumn, found by Lori Corbani
  (lec@informatics.jax.org)

* Fixed a bug that caused the selectedCells resource to not be updated if
  a row or column was not visible. Pointed out by Jay Schmidgall.

* Added some new public functions - XbaeSelectAll() - to select all the
  cells in the matrix which XbaeGetNumSelected() which returns the number
  of selected cells in the matrix.  This value is updated dynamically to
  prevent traversing the entire matrix.  Suggested by Eric Bruno
  (bruno@nsipo.arc.nasa.gov)

* Looked some more into drawing a pixmap in a cell.  Had it working but
  decided that the method originally inspired by Kevin Brannen was less
  than satisfactory and needs to be rethought.  The current idea is to
  allow a user defined widget, whether it be a label, togglebutton, etc.
  widget, to be drawn in a cell.

* Added the XDesigner contribution from Eric Bruno (bruno@nsipo.arc.nasa.gov)

* The user can now dynamically change the width of a column by using the
  Shift Key and middle button and dragging the column to a new position.
  A column cannot be resized to less than one character.

* Added the Rogue Wave View.h++ contribution from Mark Steckel
  (msteckel@aracada.com)

* Added a resizeCallback called when the matrix is resized so columns
  can be adjusted, etc.  Patch from Mark Steckel.

* Removed the losingFocusCB that was added in 4.0 as it was causing problems
  and the overhead was not necessary, particularly in the case of a very
  lengthy leaveCellCallback routine.

* Changed the default value for XmNspace to 4, rather than 6 as suggested by
  Mike Perik <mikep@crt.com>

* Jay Schmidgall continued his work on the widget to provide us with:
  o	{Un}Highlight{Cell,Column,Row,All} routines
  o	XmNhighlightedCells to go along with the highlight routines
  o	ProcessDrag() routine - bound to Btn2Down to match Motif.
  o	XmNprocessDragCallback
  o	XmN{vertical,horizontal}ScrollBarDisplayPolicy
  o	XmNfill to make the matrix fill the available form.
  o	ResizeColumns reworked to draw across various portions of
  	the matrix's display
  o	allow zero rows and columns
  o	allow visible rows,columns > #rows,columns for sizing purposes
  o	XbaeMatrixNum{Rows,Columns} routines
  o	XbaeMatrix{En,Dis}ableRedisplay routines
  	This is typically most effective when the enable is called
  	just after an XmUpdateDisplay(), at least so I've found.

  Plus a new demo program, "list", that emulates a motif list widget with
  the added advantage of th matrix widgets resource.  The choice program
  was also enhanced.

* Split up more source files to provide Draw.c and Shadow.c so as
  to keep the size of files down to a minimum.

* Added editres capability to all demo programs and cleaned up most
  compilation warnings.

* Modified the Xbae.tmpl to allow a few more configurable options related
  to resizing columns on the fly

* Changed all example program resource files to be the class name of the
  demo.  Now, to run a program something like setenv XAPPLRESDIR . and
  then the program should suffice.

* Reworked the drawing of the resize columns.

* Removed the allocation of cells, selected cells and highlighted_cells
  when the matrix is initialised.  For very large (and I'm talkin' very)
  matrixes, the memory consumption is quite considerable.  A caveat of
  this feature is, if there is no drawCellCallback, memory for the
  above resources is allocated when one of the values changes.
  Pointed out by Daiji Takamori (daijit@std.teradyne.com).

  IMPORTANT:  This feature may cause an application to crash if
  the selected_cells, highlighted_cells or cells is dereferenced
  before being initialised.  Please check the value of the pointer in
  all callbacks.  The functions similar to XbaeMatrixIsCellSelected()
  should probably be used rather than mucking around with matrix
  internals.

* Realised that when using the drawCellCallback, there is no method to
  actually edit the data in the cell and commit these changes.  And
  thus was born the writeCellCallback which should be defined for an
  editable matrix that is drawn using the drawCellCallback.  Failure
  to do so will result in a warning message.  The writeCellCallback
  is called from the set cell action and all normal callbacks (leave, etc)
  are called along the way.

* Checked on quite a few other implications of the drawCellCallback and
  corrected where appropriate.

* Implemented the drawing of Pixmaps in cells via the XmNdrawCellCallback.
  See the "draw" demo program for an example.  I don't really know what
  people expect to achieve by using this functionality.  If you are one of
  those people who intend to use it, please let me know the details.

  I would still like to implement the idea described above about allowing
  any widget to be drawn into a cell.  Maybe in the next release!

* Added the demo program "draw" that demonstrates the drawCellCallback,
  and writeCellCallback and pixmaps in cells.

* Updated the manual page for XbaeMatrix with Jay Schmidgall updating
  the changes that he made.


Changes in 4.2
--------------

* Fixed up several teething problems pointed out by Neil Weber
  (neilw@pyramid.com) who also provided a patch for this update.

* Patched in the trailingFixedRows, trailingFixedColumns, shadowType
  and cellShadowType.  Added the multifixed demo program.  All
  contributed by Jay Schmidgall (jay.schmidgall@spdbump.sungardss.com)

* Renamed all global functions to have the same name with an 'xbae'
  prefix to prevent problems with resolving symbols

* Added a different font for the row and column labels, fixed some existing
  problems that did not allow a proportional font's baseline and cell size
  to be handled correctly.

* Adjusted the cellMarginWidth and Height to default to 3.  Combined with
  a cellHighlightThickness of 2, by default, the cell should appear the same
  but the cells are now resized properly and allow larger and or different
  typeface label fonts to be used.

* Fixed the textBackground resource which was overlooked in release 4.1

* Added more grid types donated by Jay Schmidgall.  These types include
  XmGRID_ROW_SHADOW, XmGRID_COLUMN_SHADOW, and combined some of the
  Motif shadow types (XmSHADOW_ETCHED_IN and XmSHADOW_ETCHED_OUT) to
  perform some very interesting grid types.  These grid types are
  on display in an example program, also written by Jay, called choice.

* Removed the FrameMaker documents, deciding to keep the manual pages
  up to date instead.  I also intend to provide a PostScript version
  of the manual pages to facilitate printing.  These documents are in
  the doc/ subdirectory.

* Removed the set-values program as it was very buggy.

* Removed the cancelEdit() call from SetValues().  What this meant was any
  time the widget was redrawn, the cell currently being edited would have
  the edits cancelled and the text field unmapped.  For real time systems
  and other applications that may be displaying live data in the widget via
  XtSetValues() I don't think it is desirable behaviour.  If anybody has
  an objection to this, please let me know.  A cancelEdit is now only
  performed if the size of the cells change.

* Went through the SetValues() routine and checked that everything being
  done was necessary.  Added a few more values such as altRowCount which
  has not been settable in previous (4.1, 4.0) releases via XtSetValues.

* added an XmNreverseSelect resource to override the available methods
  of drawing a selected cell and draw it in exactly the reverse colours
  of the cell.  Inspired by Donato Petrino (dp@rtsffm.com).  As yet,
  this resource remains virtually untested.

* Fixed many more bugs and hiccups found by all the people helping with
  testing.

* Updated the XbaeMatrix manual page and wrote one for XbaeCaption.  If
  anyone has a way to split tables up over multiple pages, any tips would
  be appreciated.


Changes in 4.1
--------------

* Ripped apart the src/Matrix.c into several (significantly) smaller files.
  I don't know if this is a good idea (feedback appreciated) but one ten
  thousand line file is getting a bit large (+ hilit19 stops working ;-)

* Ansified and prototyped all functions in a way significantly more
  readable than release 4.0

* Patched in (by hand) changes made by Q Frank Xia in the "pretty" patch.
  These were not included in their entirety in release 4.0 and would have
  probably made it difficult for some to use.

* Added a defaultActionCallback and doubleClickInterval (analagous to
  XmList) that allows a callback to be invoked when a double click occurs
  in a cell.

* Added XbaeMatrixVisibleColumns() and XbaeMatrixVisibleRows(), suggested by
  Craig Wilson.

* Added XbaeMatrixSetCellBackground(), XbaeMatrixSetRowBackgrounds()
  and XbaeMatrixSetColumnBackgrounds() to set cell backgrounds to
  supplement the XbaeMatrixSetCellColor() set of functions.

* Supplied an XmNleftColumn resource to work in conjuction with XmNtopRow.

* Fixed a few bugs that I found (nothing serious, mind you)

* Rewrote the manual page to get it up to scratch.  Unfortunately, I
  do not have access to FrameMaker so the PostScript and FrameMaker
  documents in the doc directory could not be maintained.  They are
  included merely for reference and for the pretty pictures.  If anyone
  could convert the FrameMaker documents into a different format, let me
  know and I'll consider maintaining these too.  I don't see a real need
  as the man page doesn't look too bad on a PS printer at all.  The
  Caption widget also needs a man page.

This release is intended to get people interested in the package again.
It is now compatible with the 3.8 pl 1, 3.8 and 4.0.

I now have a workable platform on which to expand so please, if you
have suggestions, let me know and I will add attempt to add it to the next
release.

Please refer to the manual page(s) for detailed information.

Andrew


Changes in 4.0
--------------

(from kbrannen@metronet.com)

[Note:  "you" in this section is defined to be the application programmer.]

Changes:
--------
* Started with virgin 3.8 version.
* Merged in patches from Andrew Wason.  This fixed several major bugs,
  including a few with geometry management.  Internal version 3.9,
  never publically released.
* Added a LosingFocusCB for the TextField to call the CommitEdit function.
  This is an internal change.  [It seems so natural and needed, that I didn't
  allow a way for this to be overriden and not done.  If you find this to be
  be a *real difficulty*, please email and tell me why I need to add a
  resource for you to turn this off.  Well, you could override this by removing
  the Losing-Focus callbacks for the TextField widget after the widget is
  created.]
* Added current raw text value to XbaeModifyVerifyCallbackStruct, suggestion
  by Duncan Prindle.  This new field in the callback struct will allow your
  callback to "know" what's currently in the cell, as the user sees it,
  before the modification.
* Added VMS support, suggestion and code by Vince Li.
* Added support for 2-byte fonts (not a true wchar resource, but for fonts
  where font->max_byte1 != 0); code courtesy of Vince Li.
* Added new Xbae types for ease of use (e.g. AlignmentArray, MaxLength, etc.).
  Use -DXBAE_NO_EXTRA_TYPES if you don't want.
* Changed CONST to _Xconst, in agreement with X11R5.
* Add _XFUNCPROTOBEGIN & _XFUNCPROTOEND around prototypes, in agreement with
  X11R5.
* Added defines for _Xconst, _XFUNCPROTOBEGIN, _XFUNCPROTOEND for those who
  are stuck with X11R4.  I've tried to keep it working with R4, but as I don't
  have one of those systems anymore, I can't test; so please email me if it
  doesn't work for you under R4--and what you had to do to get it to work.
* Updated the frame document, reprinted the postscript file.
* Created a man page for XbaeMatrix; and the tbl/nroff output version.
* Changed all index() to strchr().  [Even my Sun has strchr() :-]
* Added ifdef to remove the need for bcopy for those you who have memmove()
  and you're still at R4 or Xfuncs.h doesn't help for some reason.  Use
  -DXBAE_NEED_BCOPY if you need bcopy(), else by default it will use
  memmove().
* If you were to look in EditCell(), you'd see a comment from Andrew W about
  finding a bug in Motif that can cause a protocol error, so he ifdef'ed the
  code out.  However, without this code, the TextField may not have the
  expected colors.  Every system I've run on has worked just fine with this
  code.  I'm in the process of trying to find out more about this, but don't
  yet know the details.  If you find that you are getting protocol errors,
  you can try recompiling Matrix.c with -DXBAE_NO_PROTOCOL_BUG which will
  turn this code off.
* Tested with R5 and Motif 1.2; and R6 and Motif 2.0.
* Compatibility with R3 & R4 and Motif 1.0 & 1.1 is untested.  I've done my
  best to avoid "breaking" the code for these platforms, but I really can't
  test there anymore.
* I've fixed a few reported compile time warnings with the Caption & Clip
  widgets.  If you find more, please email me a copy.

New Resources:
--------------
* Added XmNtextBackground resource.  This resource allows you to give the 1
  TextField it's own background if you need it to standout.  Most useful where
  you want the Matrix to have a uniform color appearance, but want the
  entry cell to be plainly visible.  [Makes me wonder if I also need to add
  a XmNtextForeground, but the color stuff is getting so complicated...]
* Added XmNverticalScrollBar and XmNhorizontalScrollBar resources (get only).
  These resources are useful for those you need to "tie" another scrolled
  window (of some sort) to the Matrix and have it scroll synchronously.
  Again, note that these are GET resources only, you may not change the
  value of these 2 resources, though you may manipulate the ScrollBar widgets.
* Added XmNselectScrollVisible resource, code courtesy of Vince Li.  This
  resource when True gives the 3.8 functionality (the default), but when
  False, does not make the Matrix scroll "programmically selected cells" into
  view (so you don't have to watch it go thru contortions :-) .
* Merged in some of Q. Frank Xia's changes found on ftp.x.org.  Added
  XmNevenRowBackground and XmNoddRowBackground.  These allow you to have
  alternating background row colors, like the "old" computer paper.
* Added the XmNaltRowCount resource.  This allows you to specify how many
  rows each of the evenRowBackground and oddRowBackground covers; IOW, how
  wide the bands are.
* Added a drawCellCallback callback.  This is the biggest change to the
  widget and potetially the most dramatic for the end-users.  This callback
  list (in my mind, it really only make sense to have 1 function in the list)
  will be called whenever a cell needs to be drawn; hence the application
  can wait until "draw" time to tell the widget what to put in the cell.
  This also means that the widget will not make a copy of the value.  So
  you get to make a choice between more control and less memory usage--versus
  --slightly slower code due to more function call overhead.  Note:
  I had planned to allow pixmaps to be drawn thru this mechinism also, but
  this is being delayed until the next release due to time contraints, sorry.
  Therefore, as of 4.0, if a type of XbaePixmap is return, the empty string
  will be drawn.

New Public Functions:
---------------------
* Added public function XbaeMatrixGetEventRowColumn().  This function
  allows you translate a button-press event into cell coordinates, IOW
  a row/column.  This is useful for those who want to install a pop-up
  and need to map the event to a row/column/cell to know what actions
  should be presented to the user.
* Added XbaeMatrixGetCurrentCell().  A public function for you to query the
  Matrix about where the "current" cell is.
* Added XbaeMatrixRefresh().  This function allows you to force the widget
  to redraw itself.  See doc for why.

Bugs fixed in version 3.8:
--------------------------

 * Changes so widgets compile under Motif 1.2.1
   Known problem: the XmTextField doesn't correctly register it's dropsite
 * Fix function prototypes in Matrix.h
 * Fix Caption so a Caption Pixmap will use the Captions
   XmNforeground resource
 * Include FrameMaker source files for docs

Bugs fixed in version 3.7:
--------------------------

 * XbaeMatrix would occasionally steal the focus from other widgets
   in the same shell.  The Clip widget was changed to only respond
   to synthetic FocusIn events.
 * XbaeMatrix StringToAlignmentArray converter should free the array
   when the conversion fails.
 * All header files now use a more specific inclusion protection symbol
   to avoid conflicts with other packages.
 * The XbaeMatrix documentation incorrectly documented the
   XbaeMatrixLeaveCellCallbackStruct.
 
Bugs fixed in version 3.6:
--------------------------

 * XbaeMatrix computes a bad width when XmNvisibleColumns == XmNcolumns.
   (reported by salevin@drl.mobil.com (S. A. Levin [Stewart]))
 * Changed XbaeMatrix to allow XmNvisibleRows to be greater than XmNrows.
   (reported by mark@bryce.llnl.gov (Mark Spruiell))
 * The XbaeMatrix methods: XbaeMatrixAddRows, XbaeMatrixDeleteRows,
   XbaeMatrixAddColumns, XbaeMatrixDeleteColumns, XbaeMatrixSetRowColors,
   XbaeMatrixSetColumnColors and XbaeMatrixSetCellColor need to check
   if they are realized.
   (reported by salevin@drl.mobil.com (S. A. Levin [Stewart]))
 * Calling XbaeMatrixEditCell before the widget is realized could result
   in the edit TextField being positioned wrong.
 * XbaeMatrix needs to call the XmNtraverseCellCallback functions when
   the widget initially gets traversed into, and it is not currently
   editing a cell.
   (reported by mark@bryce.llnl.gov (Mark Spruiell))
 * Adding/deleting rows from an XbaeMatrix with XmNfixedRows could later
   result in a core dump when scrolling to the bottom of the matrix.
   (reported by nick@ps.quotron.com (Nick Aiuto))
 * Changed XbaeMatrix to use XrmPermStringToQuark for R5.