LIST-VIEW History =options no-toc no-nums ===History ;:New - UPDATE-PAIR to update only two rows in the list. This speed up operations where two list rows are changed. ;:New - Much increased performance when doing any small operation in the list, that requires a visible update. Only the changed fields are updated instead of the entire list. Thanks to Volker Nitsch for this one! ;:New - Column drag'n'drop rearrangement. ;:New - CONSOLE flag. This makes it possible to use LIST-VIEW as a kind of console, where text starts from the bottom and goes up, rather than the normal, top-down approach. ;:Fix - LIST-VIEW would sometimes not resize correctly after demaximizing a window while the list view was hidden and then shown. ;:Fix - You can now freely edit objects with inline editing. ;:Fix - EMPTY-ACTION did not work when FILL was FALSE. ;:Fix - Unevenness in when REFRESH-ACTION was carried out. ;:Wanted - a way of reliably perform an action on the change of content in the list. Perhaps by finally adding SET-FACE? ;:Fix - Problem with columns widths not being adjustable. ---0.0.54 :New - SPRING information is now [], allowing the list to stretch freely in all directions when used in the VID Extension Kit. :Fix - Iterated face has now flags [iterated] :Fix - Better style name indication in all sub-styles for DESCRIBE-FACE in VID Extension Kit. :Fix - Sets parent faces properly for iterated sub face for adherence with VID Extension Kit 0.0.3 :New - Preliminary support for KEY-FACE for the VID Extension Kit. :Fix - Entabbed source code reduced it 15 kb in size. :Fix - LIST-VIEW now uses SYSTEM/VIEW/VID/VID-FACE instead of plain set of faces to adhere more to the face structure of VID. This is for the VID Extension Kit. :New - Now reports an error if the iteration index is broken. :Fix - Flags now has INPUT, to support GET-FACE when LIST-VIEW is inside a panel. :New - UNSELECT-ACTION which is run every time there is no longer items selected. :New - SELECT-ACTION which is run every time the selection changes from one to a different one, from zero to one, but not from one to zero. :New - Now throws a user error displaying VAR, if DATA and LIST-INDEX do not match due to improper updating. This lets you tell quickly which list fails, in case of having multiple lists in your window. :New - CONTINUOUS-SELECT? function to return whether the current selection is continuous. :Fix - When SELECT-MODE was MULTI-ROW and REDRAGGABLE-ROWS was enabled, dragging a single row would cause a crash. :Fix - Crashed when trying to use CHANGE-CELL with a word value. :Fox - No longer re-makes the whole object with CHANGE-CELL for object data, but only changes the value in the object. :Change - EMPTY-ACTION when clicking on an empty row no longer is accompanied by a LIST-ACTION or ALT-LIST-ACTION on mouse up when REDRAGGABLE-ROWS is enabled. :Change - SET-FACE no longer copies the content to DATA. :Change - Divided initialization procedure into 9 steps, making it easier to debug. :Fix - INIT-CODE no longer does excessive re-initialization of all faces. :New - Support for the new resize scheme that is coming in REBOL/View 2.7.7. This means the addition of a RESIZE-FACE accessor. The old RESIZE function is still supported. :Fix - DO-ACTION now properly throws error on incorrect action word. :Fix - Column check now properly throws error on incorrect column name. :Fix - Many cleanups and optimizations in LIST-FIELD to help making inline editing faster. :Fix - SCROLL-HERE now returns TRUE/FALSE if the list was scrolled. :Fix - Fixes old problem with inline editing not unfocusing correctly after exiting the last field. :Fix - Problem with updating TOTALS during update. :Change - SORT-INDEX is now internally used only for sorting and nothing else. :New - LIST-INDEX block that is now used for determining the visible rows in the list view. :Fix - Dead code for list column dragging has been removed. It will not be finished in that incarnation. :New - INSERT-BLOCK-HERE function to insert a block of data at the marked position. :Fix - REMOVE-BLOCK and REMOVE-BLOCK-HERE functions now works. :Change - UPDATE is now what REFRESH was. :Fix - Various excessive update problems, thanks to a remodelling of the old REFRESH function (which is now renamed as UPDATE). It's now much clearer when an update is needed through the use of the SORTED?, FILTERED? and UPDATED? flags. :New - Better separation of sorting and filtering. This was always done wrong, but now the separation is clearer, and now sorting is only done when necessary and filtering is done when necessary. Strictly speaking the model still requires the sorting to happen before filtering, but it's an improvement. :Fix - 2 bad typos that would cause crashes. :Fix - SET-LIMIT no longer accepts negative sizes. :New - LIMITED? flag that determines if the list data has been limited in length using the SET-LIMIT function. :New - RESIZED? flag that determines if the list has been resized using the RESIZE function or the new RESIZE-FACE* accessor. :New - UPDATED? flag that determines if the list has been visually updated. :New - SORTED? flag that determines if the list has been sorted. :New - FILTERED? flag that determines if the list has been filtered. :Removed - OLD-FILTER-LIST, OLD-FILTER-SPECS, REFRESH, UPDATE? :Change - Simplifications to FILTER-LIST to clean up code and to greatly speed up filtering and sorting in various circumstances. ---0.0.53 (Unreleased) :Change - FOLLOW is now allowed when using MULTI-ROW select mode, but only when one row is selected. :Fix - Fixed bindings for KEY-ACTION-BLOCK, so EVENT can be properly read. ---0.0.52 :Fix - Removed some obsolete functions from documentation. :Fix - STANDARD-HEADER-PARA was not working. :Fix - Accidentally exposed SHIFT and CONTROL words from CTX-LIST to global context, as well as the O-SIZE word from the LIST-VIEW face itself. :New - RANGE-FUNC now allows using CTX-LIST/OLD-RANGE with the /old refinement. :New - CTX-LIST/OLD-RANGE stores the previously selected range from CTX-LIST/RANGE. It's used in RANGE-REMOVED and RANGE-ADDED. :New - RANGE-REMOVED to let you see which selected cells were removed from CTX-LIST/RANGE since the last selection. :New - RANGE-ADDED to let you see which selected cells were added to CTX-LIST/RANGE since the last selection. :Fix - ALLOW-SORTING now also blocks on LOCK-LIST being FALSE, so whenever LOCK-LIST is used, sorting is not allowed. Added ALLOW-SORT-FUNC to handle this. :Fix - LIST-VIEW would sometimes not generate proper names for DATA-COLUMNS when DEFAULT-OBJECT was in use. :New - OBJECT-DATA? now recognizes when DEFAULT-OBJECT is a function, for dynamically generated objects. It's assumed that it returns an object. :Fix - If DATA was empty during initialization and a default object was defined, LIST-VIEW would crash. :Fix - APPEND-ROW and INSERT-ROW did not work correctly when using object based lists along with the /values refinement. :Fix - GET-RANGE did not return a 1-dimensional block when OBJECT-DATA? was TRUE. :Fix - GET-RANGE would sometimes crash on object based lists. :Fix - Slight optimization when using CHANGE-CELL to change many cells. :Fix - CHANGE-CELL now supports objects. :Fix - Fixed bug in CHANGE-ROW where object data might be bound incorrectly. :Fix - Fixed an instance where DO-ACTION would crash on empty DATA. :Stupid - Forgot to upload 0.0.51 documentation, but now updated to 0.0.52. :-) ---0.0.51 :Fix - Docs were missing information on SET-FACE, GET-FACE and CLEAR-FACE :Fix - Potential problem in LIST-SORT for corrupted SORT-INDEX. :Fix - SET-FACE inserted values into DATA incorrectly. :Fix - SET-FACE and CLEAR-FACE did not clear SORT-INDEX and would cause crashes. :Fix - Moving cursor down in SINGLE select mode caused crash. :Fix - Moving cursor to the left in HORIZONTAL select mode caused crash. :Fix - When using MULTI-ROW select mode, keyboard navigation would sometimes cause crashes. :Fix - Documentation errors for APPEND-ROW and INSERT-ROW. :Fix - APPEND-ROW, INSERT-ROW and GET-ROW did not ignore /KEYS when using object lists. ---0.0.50 :New - DEFAULT-OBJECT for setting a default object to use on APPEND-ROW and INSERT-ROW, when object lists are used. :Fix - INSERT-ROW did not support UPDATE?. :Fix - REMOVE-ROW allowed removal of rows, even if nothing was selected. :New - ADD-COLUMN, UPDATE-COLUMN and REMOVE-COLUMN features to safely add, update and remove columns. :Change - Header column names are now by default always strings. :Fix - Header column names may now be empty. :Fix - CTX-LIST code clean up, so takes up about 20-30 lines less code. :Fix - Selection bug in COLUMN mode when selecting multiple columns. :Fix - GET-RANGE now works on one-dimensional DATA. :Fix - Simplified FILTER algorithm should speed it up a little bit. :Fix - Actions that require a selected row, now work correctly using the CONTEXT-LIST functions to select cells, columns or rows by code. :Fix - Really big bug: A function was named CLEAR and was unused. It has been removed. :Fix - Optimizations in FILTER-ROWS made it about twice as fast. :Change - Demo Lab has now been phased out of docs. Please have a look at the demo directory instead. :Fix - GET-COL now supports object lists. :New - Added SUBMIT-EDIT-ACTION to perform an action just after SUBMIT-EDIT. :Change - I've changed FINISH-EDIT-ACTION to PRE-SUBMIT-EDIT-ACTION, because I felt that the function does not work properly with various refresh methods that directly alter the list view DATA. It's role in the future will be replaced by the new SUBMIT-EDIT-ACTION action. :Fix - SET-SORTING now works on all columns instead of just visible ones. :Fix - Variables AA, YY, G, OD, C, OUT, BLOCK and K were accidentally exposed. :New - GROUP-ROWS-BY and GROUP-ROW-TYPE allow you to create graphical groups inside the list view using ROW-ACTION. :Fix - SET-HEADER-BUTTONS no longer tries to render if ALLOW-SORTING is FALSE. :Fix - SHOW-EDIT and SUBMIT-EDIT now support object lists. :Fix - CHANGE-ROW should now support both 1-dimensional blocks and object lists. :Fix - SORTED-DATA utilizes a list! rather than a block! to build the content, so it should be faster. The data is however converted to a block! before returned. :Fix - FIND-ROW now supports searching object lists. :Fix - Fixed bug with FIND-ROW where when /WILD was used, NONE would always be returned. :Fix - List sorting now works on object lists. :Fix - ROW-ACTION now supports acting on object lists. :Fix - The selected row would stay selected after the list is cleared when the list is unfiltered. :Fix - GET-CELL now is able to extract values from object lists. :Fix - Using Up key with MULTI-ROW selection mode would crash LIST-VIEW. :Fix - Various minor loop optimizations. :Fix - NEXT-CNT would crash if SEL-CNT was NONE. Now instead it will set SEL-CNT to the first entry in SORT-INDEX. :Fix - RE-SORT would cause navigation functions to reset filter results. :Fix - Sorting while the edit fields were open, would result in a crash. :New - KEY-ACTION which will let you define keyboard actions for the list view. Requires that the list view is in focus. :New - /Keys refinement to APPEND-ROW and INSERT-ROW to let you insert values in a key/value format. :New - BY-KEY function takes alternate keys and input values and outputs a block suitable for insertion with APPEND-ROW or INSERT-ROW, so you can insert only the columns you desire in the order you desire instead of having to define the entire row in the order of DATA-COLUMNS. :Fix - Bug in MOVE-ROW caused the list CNT to move when moving the last row to a position above it. :Fix - The mouse aim for dragging is now properly centered, rather than being one row height next to the drop point. :Fix - Dragging and dropping a row below itself would cause it to be dropped one row too far down. :Fix - Now blocks for attempting to drag empty rows when REDRAGGABLE-ROWS is enabled. :New - AUTO-FOCUS flag will focus the list, when clicking somewhere in the list. When it's turned off, it will not, eliminating a SHOW and allowing you to properly focus another element, when clicking a row in the list. :Fix - FOCUS-LIST will now only refresh if the focus state is change when calling it. Same goes for UNFOCUS-LIST :New - LIST-FOCUS flag to tell whether the list is in focus or not using the FOCUS-LIST function. :New - SORT-METHOD, SET-SORT-METHOD and RESET-SORT-METHOD provide a new method for flexibly setting the sort method for each column. :Fix - Various math optimizations. They may or may not speed up LIST-VIEW. :Fix - Fixed long standing focus bug that would cause excessive SHOW on the list when selecting a row. Row selection should be faster now. :Fix - Much faster REDRAGGABLE-ROWS by removing a lot of excessive SHOWs to the black drag bar that appears when dragging. :Fix - Now generally does not focus the list unless the list was out of focus. This removes certain excessive SHOWs. ---0.0.49 :Change - LIST-SORT now uses list! to create the sort index instead of block!. Theoretically it should speed up the generation of large lists. :Fix - Would not filter on FILTER-STRING, when sorting. :Fix - Navigation functions now can handle when the list size is changed without prior use of UPDATE. :New - OBJECT-DATA? function to check whether rows in DATA are objects. :New - LIST-VIEW now supports data as a block of objects! This makes it easier to define list views, since DATA-COLUMNS do not need to be described. :New - RE-SORT function to determine internally whether the list requires to be sorted again to update SORT-INDEX after a change in the data size. :Fix - Reference sections in the documentation now properly shows what type, each word is, in the LIST-VIEW object. :New - REFRESH and UPDATE now return TRUE or NONE when LIST-VIEW is refreshed or not. :Fix - When using OVER-ROW-ACTION, LIST-VIEW would crash. :Fix - SCROLLER style feel was accidentally modified by the customized scroller inside LIST-VIEW. :Fix - LIST-VIEW vertical scroller would not accept mouse clicks in the background of the slider face to move it up or down page wise. :Fix - Variables VL and VC was accidentally exposed. :New - CANCEL-EDIT-ACTION to perform actions when cancelling an inline edit. :Fix - PLACE-EDIT would crash LIST-VIEW if SEL-CNT was NONE :Fix - SHOW-EDIT did not work without EDITABLE? :Fix - SHOW-EDIT now works on one dimensional DATA blocks :Fix - SUBMIT-EDIT now works on one dimensional DATA blocks :Fix - SHOW-EDIT was offset incorrectly the height of the header too far down when HEADER-COLUMNS is empty. :Fix - When emptying a list, SEL-CNT was not set to NONE after the last entry was removed. :Fix - Focusing issues caused the list not to be redrawn properly when a DOUBLECLICK-LIST-ACTION was performed with a REMOVE-ROW over the last row of the list, and the list was taking up less than the full height of the list-view. :Fix - When not using REDRAGGABLE-ROWS, a mouse down action performs LIST-ACTION. When using REDRAGGABLE-ROWS, a mouse up action performs LIST-ACTION. Selection is still, however performed on mouse down. ---0.0.48 :New - SORT-ACTION, an action being performed when clicking on any header button. :Fix - DO-ACTION now has a list of requirements for each action. They differ slightly. This is mentioned in the documentation. :Fix - NEXT-PAGE-CNT would not go to the end of a list. :New - HEAD-CNT? and TAIL-CNT? to determine whether SEL-CNT is at the head or tail of the sorted DATA. :Fix - EDT-LO was accidentally exposed globally. :Change - When using a select mode that allows multiple cells/rows, pressing the mouse down on a selected item no longer results in the other items being deselected. Instead, deselection is performed on mouse button release. This helps implementing multi-row dragging. :Fix - MOVE-ROW now no longer performs a FOLLOW automatically as it's used in many internal functions now that perform FOLLOW themselves. :Fix - Accidentally exposed variable Y in GET-RANGE function. :New - REDRAGGABLE-ROWS flag to set whether you want to rearrange row order via drag'n'drop. :New - DROP-ACTION to perform an action when releasing the mouse button when doing drag'n'drop. :New - Redraggable rows. Click and drag rows up and down to rearrange them. This works only when ALLOW-SORTING is FALSE/NONE and the rearrangements affects DATA directly. :Fix - Dragging the scroller while the mouse pointer was over the list would cause unnecessary SHOWs, which slowed down scrolling. :Fix - Avoids focusing twice when double clicking, which inadvertently removed focus from text field when initiating inline editing. :Fix - LIST-VIEW now always clamps the end of data to the bottom if the list is resized up beyond the data boundary. :Fix - A variable was spelled wrong during initialization of the LIST-VIEW object, which would cause crashes. :Fix - Scroller now updates at the same speed as the rest of the list and synchronously, which also causes a very small speedup. :Fix - Clicking the scroller arrows will now always scroll the list one row correctly. :Fix - Clicking the scroller arrows no longer nudges the scrollbar one pixel at a time for lists that are only a bit bigger than the view. :Fix - If a cell in DATA was stored as a block, it could not be properly truncated, so a FORM is run for each cell now. This is only done when TRUNCATE is true. ---0.0.47 :New - EMPTY-ACTION, ALT-EMPTY-ACTION and DOUBLECLICK-EMPTY-ACTION are actions that are performed, when clicking on an empty row. :New - KEEP-SELECTED flag to let you set whether the selected row will be deselected (so no row is selected at all) or not, when clicking on an empty row. This can be useful to set FALSE if the list must always have an entry selected. :Fix - Clicking on an empty row did not set focus correctly. :Fix - SEL-CNT was not properly reset when using RESET-SEL-CNT :Fix - TRUNCATE has been improved so that it will also produce an ellipsis on multiline texts and truncate the text to the first line. :Fix - Some focusing issues where LIST-VIEW aggressively took focus where it was not appropriate, such as during HIDE-EDIT. :New - ALLOW-SORTING flag. When set to FALSE, the header buttons are locked at their current setting and the corner glyph is blanked out. Clicking the header buttons will do nothing. When set to TRUE, LIST-VIEW behaves normally. :New - DEBUG-REDRAW flag to print on the console when the list redraws itself. :Fix - REMOVE-ROW used HIDE-EDIT and UPDATE excessively. :Fix - Nasty bug which made the LIST-VIEW feel global. :Fix - Various documentation fixes and additions. :Fix - Timing bug in LONG-ENOUGH would cause LIST-VIEW scrolling to stop working after midnight. ---0.0.46 :Fix - Documentation about HIDE-EDIT showed a relationship between HIDE-EDIT and FINISH-EDIT-ACTION. This is no longer the case. Also added som missing information about HIDE-EDIT. :Fix - Documentation had some missing images and some incomplete examples in the description of ROW-ACTION. :Fix - Edited fields did not save the changes to the right column in some circumstances when EDITABLE-COLUMNS were, due to a broken algorithm. :New - PLACE-EDIT to place the inline edit fields when editing while sorting. This makes it possible to move the edit fields as they change contents in a sorted list. You can therefore enter data while sorting on the fly. :Fix - LIST-VIEW would crash when clicking on a read only column when inline edit fields were shown. :New - LIST-TEXT-BOX face for use in EDT-LO instead of LIST-TEXT, for better control of its FEEL object. :Fix - Tab key action for text fields accidentally exposed the words in VIEWED-COLUMNS globally. :Fix - Much too excessive SHOW when clicking on the header buttons to sort. :Fix - Excessive SHOW during SHOW-EDIT. :Fix - Excessive SHOW during focusing of the list slowed the list down when selecting. :Fix - SHOW-EDIT accidentally exposed the words in VIEWED-COLUMNS globally. :Fix - FINISH-EDIT-ACTION was never run if the last column in EDITABLE-COLUMNS was not the last in VIEWED-COLUMNS. ---0.0.45 :Fix - A quick but necessary fix to the keyboard function. It was bound to the wrong context and caused a number of errors. ---0.0.44 :Fix - The /not refinement in SET-FILTER-SPEC was ignored. :Fix - FINISH-EDIT-ACTION is now also done when clicking on a header button or a list row which is not being edited, while inline editing is active. :New - PRE-SUBMIT-EDIT-FUNC to internally handle FINISH-EDIT-ACTION better. :Fix - When using HORIZONTAL or VERTICAL select mode, LIST-VIEW would hang if you shift selected the start cell. :New - Scrollwheel support. This requires the list to be in focus. Supports page scrolling with CTRL key and single row scrolling with SHIFT key. :New - Keyboard navigation. This should work right now for SINGLE-ROW mode and requires the list to be in focus. :New - More freedom when IMMEDIATE-EDIT? is set to TRUE. It's now possible to freely move the edit fields around in the list view using tabs and up/down cursor keys. :Fix - Fixed a nasty bug that would crash LIST-VIEW if an action was performed with DO-ACTION, when that action was NONE. ---0.0.43 :Fix - Inline edit field focusing algorithm was broken. Will now correctly select the first focusable field instead of crashing, when READONLY-COLUMNS or EDITABLE-COLUMNS was in use. ---0.0.42 :Change - TRI-STATE-SORT has now been turned off by default at the request of many of my users. :New - CALC-PX-VALUES to move all calculations of column widths and offsets into one function. This used to be separately done for headers, list values, edit fields, etc. :New - BUTTON-EDGE object to specify button edges in one place. :New - DRAG-EDGE object to specify drag edges in one place. :New - EDGED-SIZE, the size of the list view without enclosing edge. :New - DRAG-EDGE color in COLORS for the edge color of the drag element in column drag'n'drop. :Fix - RESET-SORT updated the list twice. :Fix - Moved some function creation code out of INIT to remove some overhead for the initialization code which is run every time the list is resized. :Change - Behaviour of the header buttons have changed so that sorting now occurs on mouse up instead of mouse down. A click is now also cancelled, if the mouse is moved away from the header button, but is completed if the mouse is moved back onto the button, while the left mouse button is held down. :New - LONG-ENOUGH function to perform event throttling on scrolling. This makes scrolling much faster where the mouse event frequency would be bigger than the scrolling framerate. This also increases scrolling responsiveness on complex list views vastly. :Fix - The PANE-FILL function has been optimized a bit by removing dead code and precalculating certain operations. :Fix - Most paths are now converted to faster ordinals. :Fix - Documentation did not demonstrate RESIZE-COLUMN properly. Images were wrong. :Fix - SELECT-COLOR and SPACING-COLOR was only set before INIT, so you could not change them after INIT. Now you can. :Fix - SORT-DIRECTION size change no longer causes a crash. :Fix - FIND-ROW and GET-ROW now works on all select modes. There was an artificial limit, but this has been removed. :Fix - FIND-ROW exposed the variable C accidentally. :New - REMOVE-ROW now supports MULTI-ROW select mode, so you can bulk remove rows. :New - RANGE-COLUMNS function to get all column numbers for a selection in CTX-LIST/RANGE. :New - RANGE-ROWS function to get all row numbers for a selection in CTX-LIST/RANGE. :Fix - Row manipulation functions now are able to use REFRESH-ACTION properly. :New - /full refinement to FILTER-LIST to allow REFRESH through FILTER-LIST. :Change - SET-SCR no longer SHOWs the result. This is to accommodate changes in FILTER-LIST where a REFRESH was needed rather than a simple SHOW. It also removes an excess SHOW in SCROLL-HERE and makes the function a tiny bit faster. :Fix - SET-SORTING would crash LIST-VIEW because refresh/force was used. Why this happens is not yet known. :Fix - Did not sort the correct columns when using VIEWED-COLUMNS. ---0.0.41 :Fix - GET-RANGE documentation rewritten. :Fix - Selection images in documentation now look correct :Fix - GET-RANGE would crash if CTX-LIST/RANGE was empty and using a select mode that was not 'horiztontal or 'vertical :New - /shift and /control refinements to CTX-LIST selection functions. :Fix - Better policy on when exactly to set CNT to zero when using filtering. :Fix - FOLLOW did not work when UPDATE? was turned off and you wanted to use FOLLOW manually. :Fix - When doing an UPDATE after the list size has changed and the length of DATA shrunk to less than the position of SEL-CNT, SEL-cnt would disappear. Now a LIMIT-SEL-CNT is used to keep SEL-CNT within the list limit. :Fix - CNT would sometimes become negative resulting in graphical artifacts. (Thanks to Boleslav Brezovsky) :Fix - Filtered data was not shown. Note to self: Something else might break... watch out :Fix - CHANGE-CELL did not accept blocks properly as input. ---0.0.40 :Fix - DO-ACTION did not work properly with the /no-select refinement. :Fix - VALUE-SIZE exposed a variable L by mistake :Fix - VALUE-SIZE, INSERT-ROW, APPEND-ROW and LIST-SORT would crash when DATA was NONE :Fix - Removed a crash which would happen when DATA was set directly to an empty block and no UPDATE was followed up. :New - CHANGE-CELL now allows changing columns that are objects directly using an /obj refinement. This means that you can replace: li/change-cell 'obj-column make li/get-cell 'obj-column [record: 27] With: li/change-cell/obj 'obj-column [record: 27] :New - Makes an error for all functions which uses a column word as an input if the column doesn't exist, resulting in much better error messages for those cases. :Fix - Stack overflow when selecting with both qualifier keys. :Fix - SINGLE-ROW and SINGLE select modes accepted qualifier keys incorrectly. :New - FILTERING? to simply return whether we are filtering or not. :Fix - Filtering glyph required two refreshes to work. Now a single refresh is enough. :Fix - When clicking the corner button while filtering, the filtering glyph would switch to a normal glyph. ---0.0.39 :Fix - Updated docs for this release with new select scheme, but there are still many bugs in it. :Change - ROW has been renamed to ROW-OBJ :Fix - FILTER-LIST would reset SEL-CNT under the wrong conditions when using advanced filtering. :Change - COLORS now have names to each color, which can be accessed with SELECT or COLORS/ :New - All colors in LIST-VIEW now refer to the COLORS block. :New - Visual indication of filtering with a butterfly glyph in the upper right corner. :New - /no-select refinement to DO-ACTION allows you to perform an action without a selected element in the list. This makes REFRESH-ACTION possible. :New - REFRESH-ACTION, which is performed everytime REFRESH is run. This is useful for showing text fields with the number of items in the list, that need to be updated whenever the list contents change. :Fix - When DATA was set manually to a new length and UPDATE? is FALSE, LIST-VIEW would crash when not using UPDATE. :Fix - Enter and Return key were not properly used in inline editing. They do the same as Tab now. :Fix - FOLLOW did not adhere to the new UPDATE? scheme created in 0.0.38. :New - Press Escape to cancel an inline editing process. :New - /cancel refinement to SUBMIT-EDIT :New - OLD-EDIT to keep the current row just before inline editing is activated. :Fix - Inline editing with readonly columns at the start of the visible columns was broken. :Change - The role of SEL-CNT has changed and is not used to mark up the selected entry in the list anymore. Instead it's being used to mark which rows to perform operations on (GET-ROW, CHANGE-CELL, etc.) in all select modes. This should not have an effect on your current use of SEL-CNT, if you use it in SINGLE-ROW mode. :Change - All navigation functions have been changed so that they work sensibly with the new select modes. :Fix - DOUBLECLICK-LIST-ACTION would respond on empty rows. :Change - CHANGE-CELL now works with RANGE instead so that it supports multiple selections and can change all values in the selection. :New - ROW variable useful in ROW-ACTION to do alternate actions on specific rows, such as selected rows. This can be used to "pretty up" your select cursor or to consistently perform an action on say, the third row. :Remove - RANGE, because it's moved to CTX-LIST. :Fix - Fixed a long standing bug where you were not able to select multiple cells in the same row. :Fix - GET-RANGE now handles ranges from all select modes. :New - CTX-LIST. Equivalent to CTX-TEXT this is used to manage caret functionality in LIST-VIEW. This is separated from LIST-VIEW so it could be used for a spreadsheet style later. :New - Two new select modes: HORIZONTAL and VERTICAL. :Fix - Entirely rewrote the shift/control key handling scheme: Both keys now work correctly with all select modes. ---0.0.38 :New - DEBUG flag will print out a message in the console whenever the list entries are SHOWn. This can be a useful tool to eliminate excessive updates. :New - UPDATE works a bit differently now as it ignores the current state of the UPDATE? flag. Instead the original functionality has been renamed to REFRESH and is used internally to allow updates while taking UPDATE? into account. This is done, because lists with long operations that require many modifications, would require you to explicitly set UPDATE? to FALSE many times during the course of the modifications, plus check the state of UPDATE? at certain points. Now, all that is needed, is to set UPDATE? to FALSE once, and then issue UPDATE, whenever you need an update. Much simpler! UPDATE still should the same, if UPDATE? is set to TRUE. :New - All navigation functions (FIRST-CNT, NEXT-CNT, etc) now return the SEL-CNT value, which makes them easier to use in circumstances where you need a return value, for example ALL or ANY blocks. :Fix - Filtering functions as well as UPDATE did not properly support the UPDATE? flag and ignored it in some instances. This is fixed now and allows for much faster and less flickering updates of the list when using it during a real time filtering scenario, such as a text field that updates the list per key press. :New - FOCUS-LIST and UNFOCUS-LIST functions to visibly focus and unfocus the list view. This causes the select cursor to grey out when it's unfocused and this will be useful later when LIST-VIEW supports proper focusing. :New - SELECT-COLOR tuple to get the current select cursor color. :New - COLORS increased to 5 different colors to support an unfocused select cursor color. The format is now: [even odd select-focus select-unfocus background] :New - MOUSE? and DO-ACTION is a new way to handle actions. This makes it possible to determine whether the action was last run by clicking a row or if it was run inside your script. DO-ACTION is also a cleaner way of doing an action. Example: Before: do li/list-action Now: li/do-action 'list-action :New - More meaningful error handling, should help debugging those issues where column sizes and contents normally would cause unmeaningful error messages. :Fix - FINISH-EDIT-ACTION was sometimes not run on lists with read only columns. :New - EDIT-ACTION now allows you to intercept the part where inline editing fields are display. This is done by returning a value from the action. If a value is returned, the fields are shown. If FALSE or NONE is returned, the fields are not shown. This can be useful in cases where you don't want inline editing to be possible, say for specific rows. :Fix - Fixed a binding issue in ROW-ACTION :New - COLUMN word for use in ROW-ACTIONS to tell which column is currently being rendered. This lets you perform actions on single cells without the overhead of performing the action on N columns, speeding up ROW-ACTIONS theoretically up to N times. :Fix - Another sorting bug caused sorting not to work when VIEWED-COLUMNS was different from DATA-COLUMNS. ---0.0.37 :Fix - Scroller was not set on first list rendering. :New - COL-IDX now has a /viewed refinement to return indexes from VIEWED-COLUMNS instead of DATA-COLUMNS :Fix - Sorting crashed if VIEWED-COLUMNS was different from DATA-COLUMNS ---0.0.36 :New - MAX-CNT and MIN-CNT to select the last append and first inserted of DATA, regardless of sorting and filtering. :Info - SORT-DIRECTION is now treated as an internal value and should no longer be used to set the sort direction. :New - SET-SORTING function to cleanly set the sort column and direction. :Fix - Header buttons would take in over and away events and trigger reset sorting excessively. :Fix - TRI-STATE-SORT did not properly sort when hitting the NOSORT mode the first time. :New - Visual indication of the active column. :Fix - Header buttons now remember their last sort setting, instead of blindly cycling through the sort modes, when switching sort column. :Fix - APPEND-ROW would not select the right row if sorting was used simultaneously. :New - INSERT-ROW, APPEND-ROW, CHANGE-ROW and REMOVE-ROW now has an /act refinement to perform LIST-ACTION after the operation. :New - ROW-ACTION, a very powerful function run every time a row is going to be drawn to let you manipulate each cell graphically based on any kind of input. You may have heard it mentioned as "rules" or "conditions". This is the same thing. :Fix - Some bindings to LIST-ACTION were not done on navigation functions. :Fix - When sorting with header buttons, the list view was redrawn twice. :New - When creating a customized ROW-FACE, you can now use inline editing. The field size and shape automatically adapts to the elements in ROW-FACE. :Fix - EDITABLE-COLUMNS couldn't be set directly in layout definition :Fix - Slightly improved edit field focus algorithm :New - /no-select refinement added to REMOVE-ROW to compensate for the change below. :Change - REMOVE-ROW now automatically invokes a LIMIT-SEL-CNT. This removes a would-be bug when removing the last row in a list and the developer would want to do a LIST-ACTION afterwards, which would always result in a crash, if the developer forgot to use LIMIT-SEL-CNT. This is marked as a change because I'm not sure the behaviour is entirely desirable, since a row will then always be selected after REMOVE-ROW, but let's see. ---0.0.35 :Fix - Docs updated for 0.0.35. Fixed typos and a missing image. :Fix - APPEND-ROW would corrupt DATA if NONE was added and crash LIST-VIEW :Fix - Upper right corner button destroyed filtering results. :New - SET-FILTER-SPEC to let you control a set of advanced multilayered filters that will act either on the entire row or certain columns. :Fix - TAIL-CNT? would sometimes crash. :Fix - MOVE-ROW-DOWN and MOVE-ROW-UP didn't work right when moving from/to the last row. ---0.0.34 :Fix - Images were rendered in empty rows :Fix - REMOVE-ROW would corrupt the contents of DATA if used while inline edit fields were shown. ---0.0.33 :New - IMMEDIATE-EDIT? flag to let you edit fields in one click, instead of double-clicking. ---0.0.32 :Fix - Sorting now works when DATA is a single block of non-block values. :New - GET-RANGE function to get cells given in RANGE. :New - RANGE block which stores pair values of the currently selected cells. This will be used primarily with multi-cell and multi-row select modes, but works in all select modes. :Fix - More compatibility fixes with REBOL/Plugin 1.2.47.3.1 ---0.0.31 :Change - FIND-ROW has been changed allow more sensible input. Now you input either a single value or a full row block. It also returns the row properly now. :New - FIND-ROW has now an /act refinement to do LIST-ACTION when the row has been found. :Fix - If DATA-COLUMNS was not given, EDITABLE-COLUMNS was not created correctly. The naming scheme is also changed to number the columns if DATA-COLUMNS is not given. :Fix - Compatibility problems with REBOL/Plugin 1.2.47.3.1 and non-AGG REBOL versions :Fix - STANDARD-PARA did not include a WRAP?: FALSE as was the intention. :Fix - LIMIT-SEL-CNT was not documented correctly and was labeled as RESET-SEL-CNT in the docs. :Fix - If you select a row and perform filtering so that the row is no longer visible, the invisible row was still selected. It no longer is, and now instead SEL-CNT is set to NONE. :Fix - When shift-tabbing out of an inline edit field in a list with one column, the field is now refocused. :Fix - When doubleclicking to inline edit, the wrong field was sometimes focused, when using READONLY-COLUMNS. This would also sometimes assign SYSTEM/VIEW/FOCAL-FACE to a word rather than a face and cause the application to crash. :Fix - HIDE-EDIT was run explicitly by mistake on every row select. :Fix - Inline editing did not work correctly while sorting. :Fix - FINISH-EDIT-ACTION is now not run, when using shift-tab to go backwards from the last field. :Fix - When setting the face for an edit field using SET-FACE in TAB-EDIT-ACTION, the value was not stored in DATA. This means that binding the values to DATA don't work when using SET-FACE (a bug in VID?), but it works now anyway. :Fix - Edit fields were named after DATA-COLUMNS, rather than VIEWED-COLUMNS by mistake. :New - *-CNT functions now have an /act refinement to let you perform LIST-ACTION. :Fix - *-CNT functions now work properly while sorting. :New - GET-COL is back and now it really returns a full column. ---0.0.30 :Fix - SORT-DIRECTION and SORT-COLUMN could not be set outside the initialization block without using UPDATE/FORCE. :New - SET-SORT-BUTTONS to redraw only the header buttons. :Fix - Last edit field in a row was one pixel too wide. :Fix - Finally fixed certain document images that did not show inline editing properly. :New - TOTALS returns a pair with the number of rows shown (processed from limits and filters) versus total number of rows. :New - SORTED-DATA function which returns DATA sorted, limited and filtered like in the list. :New - LIMIT. Integer which limits the number of rows displayed. Suitable for creating a Top 10, Top 20, etc. This is accompanied by SET-LIMIT and RESET-LIMIT to handle the LIMIT functionality cleanly. Use the last two primarily. :Fix - HIDE-EDIT optimization by removing a CHANGE-ROW and referencing the text fields directly to the DATA row. :New - HIDE-EDIT has been partially separated out into SUBMIT-EDIT to allow submitting edits withu actually hiding the inline edit fields. :New - READONLY-COLUMNS will not allow you to edit these columns via inline editing. In the inline editing row of fields, there will simply be a space, rather than a field. :New - FOCUS-COLUMN which holds the word name of the column which is currently focused in the inline editing fields. :Fix - Focus was not removed when tabbing out of the last inline field. :Fix - TAB-FIELD-ACTION was not run when tabbing out of the last inline field. :Fix - More *-ACTION functions are properly bound to the list, so you can access list variables from within action functions. :New - EDIT-ACTION. This will run when SHOW-EDIT is run and is useful if you want to convert data at the selected row to something else, when activating inline editing. :New - TAB-FIELD-ACTION can now extract information from LIST-VIEW itself. This is useful if you want to use it to validate or change the inline edit fields, before they are submitted to the list. :New - GET-UNIQUE returns all unique values of a specified column. ---0.0.29 :New - UPDATE? flag. When FALSE, the list doesn't visibly update during manipulation, allowing for much faster series of list operations. :Fix - When edit fields were shown, and you clicked on an empty field, the last row would always be selected, when the size of DATA exceeded the size of the list view. :Fix - When edit fields are shown, they now follow when the list is scrolled :Fix - SHOW-EDIT placed the edit fields wrong, when scrolled away from the top :New - TAIL-CNT? to check whether the selected row is at the tail of the list. :New - MOVE-ROW-UP and MOVE-ROW-DOWN to move the selected row in DATA up or down :Fix - Compatiblity bug with older REBOL/Plugin :Fix - Certain internal variables for editing were made global by accident. ---0.0.28 :New - Actions available in the List Demo :Fix - Proper binding of all actions to LIST-VIEW so you can access the internal variables of LIST-VIEW from the action. :New - OVER-CELL-TEXT returns the text in the cell that the mouse is over. :Fix - Action functions are renamed: LST-ACT -> LIST-ACTION ALT-LST-ACT -> ALT-LIST-ACTION DBL-LST-ACT -> DOUBLECLICK-LIST-ACTION EDT-LST-ACT -> FINISH-EDIT-ACTION EDT-FLD-ACT -> TAB-EDIT-ACTION OVR-LST-ACT -> OVER-ROW-ACTION ---0.0.27 :New - Basic support for images! This is done by using EFFECT, so it may not work in the REBOL/Plugin. :New - GET-CELL now also supports an integer offset as the cell argument :Fix - ROW-FACE height was ignored :Fix - Wrong images for filtering in documentation :New - OVR-LST-ACT to perform an action when mouse over on a row :New - TRUNCATED? to check if a LIST-TEXT face has been truncated ---0.0.26 :Fix - FIND-ROW didn't find values located in the last row :Fix - Bug in CHANGE-ROW's /top refinement :Fix - A few documentation errors :New - History became too big, so it's in a separate file now. :Fix - A bug in UPDATE, caused the list along with its parent face to refresh. Should greatly speed up UPDATE now! :Fix - Fixed a stupid bug in HIDE-EDIT that corrupts edited rows ---0.0.25 :New - TRUNCATE flag. When TRUE, the text in a field is capped with an ellipsis. :Fix - Corner button glyph scales correctly now :New - SPACING-COLOR to set the color of SPACING :New - SPACING, to create a space between rows and columns. ---0.0.24 :Fix - Doubleclicking on empty fields would bring up the edit fields :Fix - LIST-FIELD didn't work, because of a missing font description :Fix - HIDE-EDIT crashed, if the DATA-COLUMNS was different from VIEWED-COLUMNS :New - If SEL-CNT is NONE, then data retrieval and manipulation functions will use the first row in the list, instead of doing nothing. :New - SET-FILTER to set the filter with a string in one function :New - RESET-FILTER to remove the filtering :New - RESET-SORT, to remove sorting :New - GET-ID to cleanly and uniformly get a position in the list for internal use :Fix - Lots of variables and functions are renamed: IN-COLS to DATA-COLUMNS OUT-COLS to VIEWED-COLUMNS HDR-COLS to HEADER-COLUMNS SORT-COL to SORT-COLUMN MAIN-COL to RESIZE-COLUMN SCR-WIDTH to SCROLLER-WIDTH OLD-FLT-STRING to OLD-FILTER-STRING FLT-STRING to FILTER-STRING FLT-LIST to FILTER-LIST LOCK-LST to LOCK-LIST STD-FONT to STANDARD-FONT :Fix - Lots of functions are changed to be simpler: GET-ROW -> GET-ROW/RAW GET-ROW-HERE -> GET-ROW GET-ROW FILTER-POS pos -> GET-ROW/HERE GET-COL-HERE -> GET-CELL GET-COL FILTER-POS pos -> GET-CELL/HERE GET-COL pos -> GET-CELL/RAW pos INSERT-ROW-HERE -> INSERT-ROW INSERT-ROW pos -> INSERT-ROW/RAW pos INSERT-ROW FILTER-POS pos -> INSERT-ROW/HERE pos REMOVE-ROW-HERE -> REMOVE-ROW REMOVE-ROW pos -> REMOVE-ROW/RAW pos REMOVE-ROW FILTER-POS -> REMOVE-ROW/HERE pos CHANGE-COL row col value -> CHANGE-CELL/RAW row col value CHANGE-COL-HERE col value -> CHANGE-CELL col value CHANGE-COL FILTER-POS row col value -> CHANGE-CELL/HERE row col value :New - FILTER-POS to get a position in a sorted, filtered list :New - SELECTED? to determine whether one or more list items have been selected ---0.0.23 :New - /no-select refinement to APPEND-ROW, so the appended row won't be selected :New - LIMIT-SEL-CNT to internally restrict SEL-CNT to be a number within SORT-INDEX. Will prevent quite a few crashes. :Fix - Default font was not correct when using FONTS :Fix - Corner button to reset sort was disabled. :New - STD-FONT to easily let you globally set the font object for the list. :Fix - LIST-VIEW crashed when using FIND-ROW while DATA was empty ---0.0.22 :New - ROW-HEIGHT to set the height of the ROW when not using ROW-FACE :New - FIND-ROW to find a row with a specific value and select it :New - CHANGE-COL and CHANGE-COL-HERE to easily change one value in a row. :Fix - Now possible to use INSERT-ROW and INSERT-ROW-HERE on empty DATA :New - RESIZE function for easier resizing of the list :Fix - Now doesn't crash if DATA is NONE :New - /top refinement to CHANGE-ROW and CHANGE-ROW-HERE to move the changed item to the top of DATA :New - LAST-EDIT stores the row of the last edit, when HIDE-EDIT is enacted, if EDT was shown, otherwise NONE is stored there. ---0.0.21 :Fix - Fixed an instance where LIST-VIEW would crash with empty OUT-COLS :New - FONTS block to set font objects for each column :Fix - Got rid of the grey color bar at the bottom of the list view, when the list height didn't add up to the rows. Thereby, you no longer need to set COLORS/4 manually. :Fix - Background color in COLORS was not used :Fix - When using ROW-FACE, FIT = FALSE and the columns weren't filling out the header, the last text field would be darkened. :Fix - Sometimes when HDR-COLS was not defined, LIST-VIEW would crash :New - SHOW-EDIT now allows to select which column to focus on ---0.0.20 :Fix - Documentation errors and updated images :New - Visual indication of when the combined width of all columns is smaller than the list width :New - Fixed width columns finally work! :New - FIT flag to enable/disable width fitting with MAIN-COL ---0.0.19 :Fix - Rewrote docs to be much clearer, with more images and better flow :Fix - APPEND-ROW properly works during filtering :Fix - MAIN-COL calculation was accidentally broken :Fix - EDITABLE? is now default FALSE by popular request :New - Easy column reordering with IN-COLS and OUT-COLS ---0.0.18 :Fix - SCR initialization bug :Fix - Demo Lab now always downloads the latest list-view.r :Fix - If MAIN-COL is NONE, then the first column will be resized. :New - Decoration in the upper right corner button ---0.0.17 :Fix - FILTER was broken. Seems to be a bug in clearing bitsets. :New - EDT-FLD-ACT and EDT-LST-ACT to let you perform functions when tabbing out of an inline editing field :Fix - Column selecting marked columns beyond the end of DATA. :Fix - Fractional widths are now properly resized, when resizing the list :New - Inline Editing! Can be activated with the EDITABLE? flag (default on) ---0.0.16 :Fix - LAST-CNT crashed on empty SORT-INDEX after filtering :New - FILL flag to set whether or not to paint all rows in the list view :New - COLORS/4 contains the color of the background behind the rows. :New - When resizing OUT-COLS in runtime, WIDTHS is reset to default values :Fix - Columns can now be appended or removed to OUT-COLS in runtime :Fix - Changed behaviour so that DATA is always treated as a block of blocks if manipulated by LIST-VIEW itself. Only external input of a single block value can change this. :Fix - INSERT-ROW-HERE, REMOVE-ROW-HERE, CHANGE-ROW-HERE failed on empty DATA :New - Stricter typechecks on manipulation functions :Fix - Values are now copied into DATA :Fix - Sorting did not work, when using only one DATA column :New - Allows using keyed blocks as input for manipulating functions. :Fix - Header size now calculated with OUT-COLS also, which removes a crash :New - Created a test suite in file list-demo.r :New - Moved demo code out of this file ---0.0.15 :New - Updated documentation with images :New - DATA can now also be a single block of values :Fix - IN-COLS is no longer mandatory :Fix - MAIN-COL is no longer mandatory :New - Default WIDTHS now a fraction value. :New - Fractional widths of the list width as decimals :Fix - List size calculation optimizations :Fix - Scroller width is now always equal to the corner reset button width :New - SCR-WIDTH lets you set the scroller width :Fix - AGG is no longer a requirement :New - CLEAR to quickly clear the list ---0.0.14 :Fix - Documentation updates :Fix - Multiple lists accidentally shared the LIST-SIZE value :New - Custom layout block can now have multiple rows at the cost of horizontal resizability :New - Now using ROW-FACE to store the custom layout block :New - If HDR-COLS is set to a single word in a block, it will take the width of the list view. :Fix - Code size optimization of navigation functions :Info - The version between 0.0.12 and 0.0.14 is mysteriously missing... :-) ---0.0.12 :New - Documentation! :New - WIDTHS block to let you determine the widths of the columns ---0.0.11 :Fix - Better initialization of OUT-COLS and HDR-COLS :New - Header can now be defined from the words in OUT-COLS or IN-COLS :New - No longer need to manually create the subface for the list :Fix - DATA was not properly initialized :Fix - List was updated twice during all manipulation functions added in 0.0.10 :New - Added /no-show refinement to FLT-LIST to speed up certain updates that require setting the selected row before showing ---0.0.10 :Fix - Optimized updating when moving from filtered to unfiltered view :Fix - Accidentally didn't filter on the original DATA, when doing multiple filterings :Fix - Better detection of when FLT-STRING has been changed :Fix - SCROLL-HERE can handle empty lists now :Fix - Crashed if DATA was empty :Fix - Selecting rows that are empty, no longer causes a script crash :Removed - Ctrl-key functionality, because it's too complex to handle with the different modes right now :Fix - GET-BLOCK caused error if Ctrl-key was used to select cells. :New - Data manipulation functions: INSERT-ROW, INSERT-ROW-HERE, CHANGE-ROW, CHANGE-ROW-HERE, REMOVE-ROW, REMOVE-ROW-HERE, APPEND-ROW These only work in select-mode 'row ---0.0.9 :New - GET-BLOCK retrieved the selected data as a block. Only works with shift for now under multi and multi-row. :New - Using the shift key, you can select multiple cells in multi and multi-row mode. :New - Five different select modes now: Single, multi, row, multi-row and column. :Fix - SCROLL-HERE only works with select modes 'single and 'row :Fix - FOLLOW didn't work when selecting a row and then sorting ---0.0.8 :New - GET-ROW and GET-ROW-HERE allows you to return a row as a block or an object :New - Functions to select next, previous, next page, previous page, first and last. Uses FOLLOW. :New - FOLLOW. Automatically follows the selected entry so it's always in view. Requires FOLLOW? set to true. :New - SCROLL-HERE. Scrolls automatically to the selected entry. :Fix - Filter result was lost after resize. :Fix - Sorting was lost after resize. :Fix - Sorting indication is now persistent after resize. :Fix - Dual state sorting was accidentally broken. :New - Initial sorting can now be set before first view :New - Right-click on header unsorts the list ---0.0.7 :New - Added /force refinement to UPDATE :Fix - Fields are rendered now, when filtering with fewer results than the size of the list view. :New - List now can have an edge of any size. :New - ALT-LST-ACT action for right click actions. :New - If HDR-COLS is empty, the header is now not drawn. ---0.0.6 :Fix - Made selection persistent even when filtering and sorting ---0.0.5 First Public Release