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.
|