$Id: BUGS,v 1.8 2000/02/09 14:27:35 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.

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)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
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<cr>, highlight this (including <CR>) and cut
        * clear everything, then type 1<CR>2<CR>
        * highlight the 1<CR>2<CR> 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
