$Id: BUGS,v 1.12 2001/08/04 11:25:23 ben Exp $ This is a Bugs & Enhancments doc for xenon, as well as a todo list. Key --- ? : Not sure what this means. + : Corrected/Enabled. - : Not Corrected/Enabled. BUGS ---- - Menu bug, see line 63 of XeMenu.C This is a problem with how the menu resizes itself. If a command key string is too long it may cause other menu items to overlap their label and command key string. - Text field redraw glitches + selection clipping glitches - updating graphics expose events properly for some network connections... - bug? have a set of functions to hilight selections without using planemasks. this is becuase some vga cards don't have hardware planemasks (started) - setting the font in the text widget doesn't seem to work $$$ seems to now - delete a large number (>1000?) of lines -> redraw glitch $$$ still there? - Alt|Ctrl - Shift up/down doesn't do anything - reopen unreadable/nonexistent file silently does nothing - problem when scroll bar is made to be just bigger than the slider (happens when window is too small.. possible solution imposing a minimum size of 1 line on the text area) - hit escape to get rid of modal dialog when dialog isn't mapped causes X window of dialog to remain, but with the contents not redrawn. - brace matching doesn't grab every time, e.g on different ()'s in this file - undo bug: (noPlanemask = true) * position cursor to the right of some text * select some text to the left of cursor * type a single letter, or paste some text * undo twice, and there is a redraw glitch - could be a more serious inconsistency in a data structure - I have seen a similar problem (could be the same one) crash xe - search bug: a regexec() sometimes gets passed a null pointer search string which causes a crash (xed.C: 1372) ENHANCEMENTS ------------ - make all dialog boxes window modal rather than app modal. Static dialogs are stolen from a window currently using it - ctrl (configurable)-return forces beginning of line (overrides auto-indent) - xe.ad - compress certain key events so they don't build up during slow redraws - search should search over entire text (include newlines) rather than on a line by line basis. Also, use 'sliding-window' hashing algorithm. - right mouse button should change icon to "hand" - large x-paste from winterms/xterms - don't accept non-printable chars (eg insert) - detect no trailing newline (perhaps insert one) - paragraphize, justify - multi undo ops ?? - allow read-only access to text (selection etc) when a modal dialog is up - quit without saving notice etc... also SIGINT should trigger this - command line option to set cursor to initial x/y char position - turn the mouse cursor off when any key is pressed (handy), turns on again as soon as the mouse is moved - updating enabled/disabled menu items for undo/redo, save etc.. - a way of typing extended 8 bit + control characters. - nicer way to open new files, proper file open dialog? - Save As command - Indent, Extent blocks of text. (integrated with undo - difficult/time consuming) - automated find/replace (requires undo support) - ability to map more than one key combination to a single key op via X resource. - more resource reading by all widgets, including colours - more text key operations: - delete_right - cursor_home, cursor_end - cursor_page_up cursor_page_down - word wrap, which should be done on a line by line basis at first (then paragraph word wrap) - use stl/libstdc++ wherever possible and phase out built in adts * deprecate XeSpList, XeHash, String (done) * deprecate KrBuf: use crope as text and undo/redo buffers and vector as linestarts * use iostreams for io instead of stdio - split xed.C into individual files for each of its subclasses - redesign text widgets and buffer - XeText/XeTextField contain an XeTextBuffer or XeHistoryTextBuffer (with Undo/Redo history derives from XeTextBuffer) this way a text widget can contain multiple buffers - implement a filter plugin system so that the stdin/out of any unix process may be connected to a selection of text global preferences can be passed to the filter with environment variables =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- DONE ---- By 10/02/2000 ------------- + Kr FATAL ERROR: exhausted KrPool limit of 2500Kb. Need to find out what caused this, if it's a leak or the undo buffers were simply too full. * This limit is now removed, so the KrPool can grow as large as it likes + scroll beyond bottom of text with right mouse, when pointer goes past top of text area, end of text snaps back to bottom of text area. * XeTextBase::scroll needed a comparison changed from == to >= By 23/11/99 ----------- + API change in xed.C, use Kr String class for search string and filename. Also in XeTextBase.h, return String from getSelection() and getLine() + glitch: cursor off RHS, down arrow such that cursor is visible => horiz scroll glitch + Call XTranslateCoordinates() every time to work out top level window global coordinates, instead of sometimes relying on coordinates given by a ConfigureNotify event. + nasty crashing bug: runOnce mode, open new window via runOnce, file cannot be opened (no permission or not a regular file), error dialog appears by itself (no window below), core dump when dialog is dismissed. This was a result of XeWindow::_xfocusWindow being left as a dangling pointer when a MainWindow was closed. When the error dialog was dismissed it was trying to call takeFocus() on a deleted window! The simple fix was to set _xfocusWindow to NULL if it was the one being deleted - see XeWindow::~XeWindow. By 9/11/99 ---------- + auto select text fields in dialog boxes when mapped + brace matching function in XeText + make line-number column just wide enough for 6 digits + unprintable characters should act as border chars for word selection + visible display of control (unprintable) chars - required a rewrite of XeTextBase::redrawLines() + _sepTable in XeTextBase should be 32 bytes rather than 16 to handle extended chars + word selection: only group break characters that are the same (instead of any break character). + right hand side scroll bar - settable with "rightScroll" pref By 19/10/99 ----------- + dialog boxes start up with text field pre-selected for quick replacement + bug in portaselect(): sometimes produced negative time causing select to timeout immediately, resulting in infinite select loops until an X event arrived (XeText::autoMotionScroll). + open/save dialog should display cwd of current window (not that of process) + make scroll bar slider resize properly when text is scrolled past the bottom + the auto-scroll step size when cursor moves off screen should be configurable + XeTextBase::autoScroll() doesn't position on the same line every time when visLines is an even number + new technique for shrinking the scroll bar tab when scrolling beyond the end of the text: + scroll bar needs to clip properly at bottom + when file is really large, the scroll bar doesn't position properly after a window resize/move + in MainWindow::confirmCloseCB it's possible that the object returned by getParentWindow() is already deleted, which causes a SEGV. This can happen when an error is produced when trying to open a file from the open dialog. Clicking Ok in the error dialog causes the original window to be deleted (shouldn't happen). By 7/99 ------- + make default xerc prefs consistent between man page and actual prefs + configurable colours via X resources + run once + when using find or goto line number, centre the text around the cursor By 1/10/98 ---------- + Search Bug. When a match fails partway thru the match string, the search must continue from 1 byte after the position where the match began to succeed... ie it must 'rewind' By 28/3/96 ---------- + cursor movements shouldn't cause modified flag to be set + keys only work when the cursor is in the edit widget + mouse cursor picking over a tab space should decide left/right of the tab at the centre + when some highlighted text scrolls left (and new text is exposed on the right), there is a single-line glitch visible in the newly exposed part + don't print msg when file doesn't exist + small bug when paste-replacing a highlighted region: * start a fresh xe * type hello, highlight this (including ) and cut * clear everything, then type 12 * highlight the 12 including CR's * ALT-V, and **** the 2 does not get erased **** It's a display thing, the internal data structures are OK. When you redraw, everything's fixed. ** oh maybe not ... sometimes doing the above will cause things to get a little confused, and no amount of redrawing fixes it ... + if you save an empty file, you get: XeArray::operator[Od] - index out of bounds + the backspace up from the bottom -> Xserver explosion bug and line numbering erasures + scrollbar gets corrupted when resize window on largish files + the iconize X error bug + shift-cursor keys for selection + shift-click for selection + can pan further up so that space beyond EOF is visible By 18/4/96 ---------- + support x clipboard + make alt keys work when caps lock is down + shouldn't accept control chars in text + ***NEED SEARCH!!!*** Done it! + option to fork into background (This isn't an option.. but happens always) By 25/4/96 ---------- + Resource strings for window and icon title can use various macros : Not all of the macros are supported. %F - full pathname %f - tail part of pathname %l - current line no. of cursor %L - total no. of lines %c - current column no. of cursor %S - size of file as "n bytes", "nKb", "nMb" or similar %m...% - expands to ... if file modified, nothing otherwise %r...% - expands to ... if file read-only, nothing otherwise For example (zip style): title: %m*%%F%r [view-only]% iconTitle: %m*%%f By 25/10/96 ----------- + undo/redo ! + set wmhints for quantizing window size to whole character units + should recognise trying to open a directory or special file as normal file + view-only mode + line numbers on/off + configurable inter-line spacing By 20/3/97 ---------- + should deal with window close requests properly (top-left button) rather than give an X error + resources : window geometry - size specified in char units a la xterm + resources : font + dialog boxes for error messages. + soft tabs + configurable key mapping (including menu commands) + multiple editor windows