------------------------ AmigaOS 4 project --------------------------- texteditor.gadget 16.1 (2002) - initial release. This is a Stephan's rewrite of the original texteditor.gadget by Allan Odgaard! ---------------------- AmigaOS 3.2 project --------------------------- texteditor.gadget 16.3 (18.8.2019) - Notice that v16.3 reflects only a transitional status between the OS4 and 3.2 projects. - fixed race condition when opening/closing. - ported to SAS/C. - now runs on 68000/68010. texteditor.gadget 47.1 (9.1.2019): - recompiled with data=far and utllib to improve the code generation. texteditor.gadget 47.3 (15.11.2019): - Fix short cut for Undo to be the standard Amiga-Z and both Amiga-Shift-Z or Amiga-Y for Redo texteditor.gadget 47.4 (24.11.2019) - Substantial refactor and rewrite of cursor and undo handling - We now have normal cursor movements and selections - the cursor remembers it's x position going up and down - selections have an anchor point - basically it works as you'd expect in 2019 - there is support for pgdown, home, end pgup for those keyboards that has such keys, but otherwise ctrl and alt plus cursors give you alternatives - shift plus cursor extends the selection - The undo system is rewritten in preparation for future improvements - The rendering of the document as well as import and export is unchanged texteditor.gadget 47.5 (26.11.2019) - The cursor position is now part of the undo/redo states - Clicking to place the cursor now places the cursor at the nearest insertion position texteditor.gadget 47.6 (27.11.2019) - Blinking cursor - Undo/redo can now report if the text is unchanged or not (nice for "are you sure you want to quit") - Undo/redo now does merging of simple changes (like modern texteditors all do) - Undo/redo is now unlimited (was 16 changes) - Fix a small bug when redoing everything, then the entire text was selected texteditor.gadget 47.7 (27.11.2019) - Fix double click and reintroduce triple click texteditor.gadget 47.8 (1.12.2019) - Fix broken readonly mode texteditor.gadget 47.9 (2.12.2019) - Don't process mouse click outside the gadget - Fix wrong cursor placement when clicking above or below the entire document - Fix Arexx method not handling command arguments texteditor.gadget 47.10 (2.12.2019) - New feature: Really support non word-wrapped editing texteditor.gadget 47.11 (13.12.2019) - Now scrolls with scrollmouse both vertically and horizontally (NewMouse scroll events) - API (struct Hook) support for applications to do syntax highlighting - Handle TAB characters without converting to spaces (GA_TEXTEDITOR_SpacesPerTAB and GA_TEXTEDITOR_ConvertTabToSpaces) - Fix bug of not all text being extracted for cut, copy, and delete undo - Fix the cursor not deselecting when cursor is at extreme edge - Fix horizontal scroll not working due to excessive number of MakeCursorVisible calls (now only when needed) texteditor.gadget 47.12 (19.12.2019) - Draw cursor with text color for improved visibility - Fix page up and page down not working since bug introduced in 47.11 texteditor.gadget 47.13 (24.12.2019) - Updated APIDOX - Remove beta API as there was previous API that should be implemented instead - Implement new search API for highlighting all matches - Implement new search API for incremental search - fix search backwards and next to find "mum" twice in "mumum" - Implement whole word option. It's based on IsAlNum() plus '_' and thus works like most editors. - implement cyclic option for search backwards and next - Extend ARexx interface with GETSELECTEDTEXT method texteditor.gadget 47.14 (26.12.2019) - Fix import of documents with TABs - A bit more efficient redraw when highlighting all matches texteditor.gadget 47.15 (02.1.2020) - redraw caret while dragging - don't loose selection on resize - also import tabs correctly - a bit stupid not to, now that we can handle them texteditor.gadget 47.16 (06.1.2020) - fix while drag selection you moved to the left of the window - now it correctly places you at start of the line - fix selection of word, cursor to next word, cursor to prev word - Implement moving the selected text to another location) - Fix a small memory leak - Fix a bug in doubleclick to select text texteditor.gadget 47.17 (10.1.2020) - Fix big memory loss due to double allocation of class memory texteditor.gadget 47.18 (18.1.2020) - Fixed: it was drawing over part of its bevel. - Fix lef offset (horizontol scroll) not being updated correctly on triple click - After above fix, change so triple click, selects entire line _including_ newline - Fix cursor leaving a trail when drag selecting (only happened with some fonts) texteditor.gadget 47.19 (16.2.2020) - Fix memory leak when moving a selection with the mouse - Reduce memory usage as a result of pasting multiline text - Made sure we notify changes after resize/layout - Fix it was possible to scroll small document out of view with mousewheel texteditor.gadget 47.20 (23.2.2020) - Fix cursor key movement in readonly mode texteditor.gadget 47.21 (27.2.2020) - Fix hit when clicking inside a selection texteditor.gadget 47.22 (24.3.2020) - Fix a layout problem (seen in RAWBInfo when clicking the icon tab) - Moving a selection is now a single undo step - The caret was rendered 1 pixel too tall, deleting parts of the line below with some fonts - The display and horizontal scroll could be out of sync after a resize texteditor.gadget 47.23 (26.3.2020) - Implemented a hook system for syntax highlighters to work through - Fix a bug that made it possible to render the cursor outside the gadget texteditor.gadget 47.24 (08.4.2020) - Fix highlight or search hitting text in the bloc colors would make the text invisible texteditor.gadget 47.25 (15.4.2020) - Fix a bug when pasting text containing blank lines. It would end up wrong and would eventually crash - Fix a small transparent area between text and bevel, where you could see eg fillpattern - Introduce a framework to show linenumbers (and in the future anything through a hook) texteditor.gadget 47.26 (20.4.2020) - Fix the possibility of writing line numbers into the general area - Fix a muforce hit when moving a selection as first thing after loading a file - Make sure we don't draw cursor into the leftbar area - Fix the text near the blinking cursor being rendered wrongly texteditor.gadget 47.27 (27.4.2020) - Fix sending out incomplete data upon resize - Fix blinking Cursor with selected text would visually remove one char of the selection texteditor.gadget 47.28 (15.5.2020) - Implement the new GM_HANDLESCROLL by calling our current code - Fix cursor movement left/right when a selection was active - Fix detection of line containing TAB failed on paste onto a line that contained tabs - Fix uninitialized cursor anchor after import texteditor.gadget 47.29 (23.5.2020) - Make sure the cursor is visible even if to the extreme right of the text - Don't loose scroll position on resize/relayout texteditor.gadget 47.30 (27.5.2020) - No point in wasting CPU cycles on doing division as it isn't really needed - Leftbar (most commonly for linenumbers) rendering - implement the hook calling for render and input - Rectangular selections (only possible with fixedwidth font and no wordwrap). Toggled with ctrl+lalt texteditor.gadget 47.31 (05.6.2020) - Fix copying from rectangular selection writing beyond buffer end - Fix crash when deleting the rectangular selection when it contains areas with no text - Fix crash when inserting using rectangular selections say 2 positions after the text of the line - Fix Undo/redo macros (merging of sub changes into one user-visible change) - Get,set,notify GA_TEXTEDITOR_RectangularSelections - Fix triple click on last line of document didn't work texteditor.gadget 47.32 (11.6.2020) - Fix rendering of cursor when rectangular selection and short lines - Make sure rectangular selections can only be moved to normal locations - Fix some colors being wrong when special colors were set after layout texteditor.gadget 47.33 (15.6.2020) - Clicking to move a selection should not grap if the selection ends on first char of line - Change signature of syntax highlighter so that we in the future are not bound by UWORD line length - Fix an offset glitch when going from non-wordwrap to worwrap mode (if horizontally scrolled) texteditor.gadget 47.34 (22.6.2020) - Fix rendering lines longer than 32000 pixels (~3500 chars) - Fix duplicate rendering that could be seen as temporary duplicate lines when adding/removing lines - Fix rendering glitches when going from word wrap to NoWordWrap texteditor.gadget 47.35 (01.7.2020) - Fix hit and don't set mousepointer if readonly texteditor.gadget 47.36 (13.7.2020) - Tweak GA_TEXTEDITOR_ConvertTabToSpaces from being a bool to being the number of spaces (0 disables) - Implemented GA_TEXTEDITOR_AutoIndent attribute that auto indents like previous line - Implement GA_TEXTEDITOR_CutCopyLineWhenNoSelection attribute texteditor.gadget 47.37 (06.9.2020) - Don't choke on pasting in text containing CSI sequences - Don't move up instead of down if on last line of last block (in dynamic wrapping mode) - Fix Esc keypress not being reported to the outside world texteditor.gadget 47.38 (17.10.2020) - Fix placing cursor with mouse click didn't set "wishX" texteditor.gadget 47.39 (16.11.2020) - More work on the leftbar interface (msg structures have changed) - General cleanup - New method to get a pointer to a block - Userdata is available in each block. It's a hook called when block is deleted - Fix double click to select word had anchor and pos reversed texteditor.gadget 47.40 (17.11.2020) - Fix Text insertion in rectangular selection mode so it handles TAB chars - Change wishX to be pixelbased rather than position based, which benefits proportional font editing and all in case of tabs - Fix drawing of the blinking cursor in rectangular selections so it now handles TAB chars - Fix Drawing of selection in rectangular selections so it now handles TAB chars - Don't listen for relative mouse qualifier when listening for ctrl+lalt to toggle rectangular selections - in fact only listen for keyboard qualifiers. This way it works while dragging with the mouse too - Detection of clicking inside a selection now works with rectangular and Tabs - Fix CursorSelectedText to work with rectangular selections tabs and selections outside text - Limit cursor coordinates when changing to from rectangular to normal - Fix horizontal scroll could be inprecise - Fix vertical offset could allow non-existent lines at the bottom when the should be scrolled away - Change mouse pointer when in drag and drop mode - Dragging rectangular selection can now be dragged whereever a selection can be made - Fix graphic glitches when moving a selection - Fix rendering big blinking cursors in rectangluar mode, we would try to render every single line - Change CursorPageUp and CursorPageDown so it tries to keep the the visual position on screen texteditor.gadget 47.41 (24.11.2020) - Fix a bug that could lead to corrupted data. If you pressed enter on an empty line, there was a chance of corruption - Fix "Select all" once again - previous fix, was wrong - Fix a screen update bug I introduced myself in the last revision - Fix that you couldn't enter | character on danish keyboard (bug could have other similar effects) - Fix crash when pressing enter with cursor in non char area and rectangular selection - Do indentation change on tab and shift+tab - Fix triple click in rectangular selection mode texteditor.gadget 47.42 (30.11.2020) - Bookmarks now allow more than 3, make them move while editing. Remove user shortcuts - More implementation of the editing with styles (still offciially NOT implemented, and certainly still not complete) - Use pooled memory for most of our allocations texteditor.gadget 47.43 (25.01.2021) - Implement Replace_all functionality (as repeatedly cyclicly replacing one string could go into infinite loop) - Implement GM_TEXTEDITOR_MultiChange so programs can group edits in one undo step - Add some bookmark related functions to the arexx method - Fix several render speed bugs texteditor.gadget 47.44 (07.02.2021) - Fix moving a selection would have indeterministic behavior if at the same position as cursor. - Change MultiChange method into arexx command as it is more versatile texteditor.gadget 47.45 (19.02.2021) - Introduce ChangeListener so applications can listen to changes - Bookmark system is refactored to be one such (internal) user of the ChangeListener system. - Fix bookmarks and linenumbers not being redrawn correctly when adding and removing lines - Change leftbar to be 3 seperate things bookmarks, hook and line numbers GA_TEXTEDITOR_LeftBarWidth is gone and replaced by GA_TEXTEDITOR_ShowLineNumbers hook for now gets 20 pixels wide texteditor.gadget 47.46 (25.02.2021) - Extend ChangeListener interface so you can now be notified of keypresses - One more Arexx command to have an optional shadow cursor for arexx texteditor.gadget 47.47 (04.03.2021) - Fix import text with CR or CRLF - Export can now be controlled to LF, CR CRLF, or same as import - When moving selection make sure selection endings are cleared correctly texteditor.gadget 47.48 (09.03.2021) - Fix that horizontal scroller wasn't updated when using scrollwheel - Fix that search did move the hit into view horizontally texteditor.gadget 47.49 (15.03.2021) - Fix that import mime was still converting tabs to spaces on import - Change it so tab replacement is done before inserting. This way replacement on undo/redo is avoided - Indentation is now only performed if a selection or the cursor is in leading whitespace - GA_TEXTEDITOR_ConvertTabToSpaces renamed to GA_TEXTEDITOR_IndentWidth - New attribute GA_TEXTEDITOR_TabKeyPolicy about what happens when pressing tab key texteditor.gadget 47.50 (28.03.2021) - Small change to GETCURSORe ARexx command to make the code smaller and more correct. It even fixed a small bug. texteditor.gadget 47.51 (09.04.2021) - Fix that auto-indent could in some cases give less than desireble results.