• Ben Avison's avatar
    UTF-8 support from previous version switched in; additional alphabet-... · 2c759475
    Ben Avison authored
    UTF-8 support from previous version switched in; additional alphabet- conditional support added as follows:
    
    * Correctly converts character index returned from Font_FindCaret into byte
      index into raw string.
    * Left-arrow, right-arrow, delete-left and delete-right now act as far as
      the next character boundary, instead of to the next byte.
    * Menu item text justification works again (it relies on overwriting spaces
      with hard space characters, which are two-byte characters in UTF-8).
    * General key handling code has been rewritten. The Wimp now has three
      internal key input buffers - one each for taking keyboard-generated,
      task-generated, and function-key-generated strings. Each input buffer is
      processed in chunks of one character, rather than one byte; malformed
      UTF-8 characters are rejected, so tasks don't have to worry about them
      (simplifying their character-handling code). There is also a key output
      buffer, to ensure that (UTF-8) sequences of Key_Pressed events are not
      broken up.
    * As a result of the above, multiple calls to Wimp_ProcessKey are now
      possible between calls to Wimp_Poll. Previously, this resulted in bytes
      getting jumbled up - making it useless for input of UTF-8 characters.
    * Multi-byte characters are inserted into writeable icons in one go, so you
      don't see a brief flicker of the "malformed character" symbol while the
      initial bytes are being inserted.
    * Multi-byte characters that don't entirely fit in a writeable icon buffer
      are not inserted at all.
    * A new validation string command ("U") can limit the contents of a
      writeable by number of characters, instead of bytes. This will hide the
      character sizes from the user interface.
    * Allowable characters (validation string command "A") now works on Unicode
      characters and character ranges.
    * Various other minor bugs are fixed (Wimp_ProcessKey 13 can activate a
      writeable menu item, Shift-arrow keys are always consistent in firing off
      Key_Pressed events, etc.)
    * Password icons supported: one symbol is displayed for each character
      (instead of for each byte); the display character (validation string
      command "D") can be any UTF-8 character; correctly displays the caret
      after set-caret-by-index calls, even though characters in the processed
      string are different width to those in the raw string, in password icons.
    
    Other changes:
    * The border around NC-style error boxes is resized when the error window
      is grown or shrunk.
    * Messages, CmdHelp and Template files made consistent across resource
      directories, including support for all Ursula features.
    * ShrinkableAreas turned back on in System=RCA builds.
    * User interface features of desktop OS builds standardised.
    
    Version 4.06. Tagged as 'Wimp-4_06'
    2c759475
!Common 3.47 KB