• Andrew Hodgkinson's avatar
    Everyone else seems to be checking lots of stuff in lately, so I've decided to... · 25b4a552
    Andrew Hodgkinson authored
    Everyone else seems to be checking lots of stuff in lately, so I've decided to join in. This is an intermediate check-in and so not all resources etc. will be up to date. You should be able to make Phoenix and a debug build out of it. As a reminder, to make a JavaScript build:
    
     * Build JSLib and NSPRLib. Recommend you leave -DUSEMEMLIB in there (as
       used by default) so you can watch it leak into a dynamic area... :-)
       If you do this, you'll need to build MemLib too, of course. If you
       do NOT use MemLib, *undefine JS_USING_MEMLIB in Main.c*!
     * Run !MkClean. This now strips dynamic dependencies from the MakeFile
       automatically, to save you having to do it yourself.
     * Run one of the TaskObey files with the "J" suffix, e.g. !DeskBrwsJ -
       this uses the same .o directory for object files and exports to the
       same position in the Targets directory as the non-JavaScript build,
       but it does produce a unique binary in 'abs' and symbols table in
       'syms'.
     * Sourcing an appropriate !Run (with increased WimpSlot value), !Boot
       and About resource is done automatically.
     * Some, but not all of the !xxxD (debug) TaskObey files will make
       JavaScript versions in passing - check the JSUFFIX value on the Make
       command line parameters in the file.
    
    This'll only work on RISC OS 3.1 due to the use of MemLib.
    
    Here's the change list:
    
    Included MNG icons in sprites files; added Sprites23 for some builds.
    Added in ANT URL file icon (b28) derived from URI file icon, because
    the Save dialogue can need it.
    
    No, you do *not* need to define the same keyboard shortcuts in each
    frame since the ancestor keeps the input focus and we've basically
    dropped non-nested Wimp support. Maintaining no less than 4 lists of
    identical shortcuts was a pain. Some Res files now only have the
    lists in the main browser window and button bar objects (these two
    are both required still).
    
    Ursula build Markers button arrangement changed from 1x3 horizontal to
    2x2 tilted, as in Phoenix, by popular demand.
    
    Couple of hotlist bugs fixed; dragging an item and deleteing it with
    Ctrl+X didn't terminate the drag, and deleteting an item underneath a
    menu opened for it didn't close the menu.
    
    'SendReferer' option added to all Choices files, all set to 'always'.
    Put just beneath 'Clone' as it refers to header items, though really,
    both Clone and SendReferer should probably be in the "Fetch controls"
    section rather than "Multiuser environments and proxying"! Front-end
    control of this is available.
    
    In image_export_original, save_save_source, save_transfer_source and
    save_save_object, flex_set_budge(0) was called to lock the heap but the
    return value wasn't stored. flex_set_budge(1) was then used to unlock
    the heap. All calls now remember and restore the old value, which is
    both safer in case one calls another and allows the flex_set_budge
    call in Main.c to have an application-wide meaning, as intended.
    
    Some restructuring to the data load and RAM transfer sections of
    Protocols.c; remote hotlist builds wouldn't allow files to be loaded
    to browser windows before, and can now drop URL, URI or text files to
    the Open URL dialogue.
    
    New option "MinimumFontSize", lets the 'size' attribute of the 'font'
    element be overridden. Default value is 1, to allow the full range of
    values for the attribute. Setting to 7, for example, would give font
    size 7 text at all times. Another new option, "ToggleOnXOnly", to
    make Toggle Size only extend the window vertically (with Ctrl then
    being used to toggle to genuine full size, rather than vice versa).
    All Choices files updated to hold both of these options; only the
    first has front-end control available (see debug build Res file).
    
    JavaScript Document object exists; frames array etc. working. Can now
    just about use "http://www.acorn.com/~ahodgkin/jschain/" but it does
    abort after a bit - problems with frames again, I suspect. Is is pretty
    slow, too. Can now press Escape to terminate a script.
    
    Main.c erroneously referred to Controls file entry "StopWebServe" as
    "StopWebProxy". Fixed.
    
    Keyboard shortcuts to raise SaveFile are now possible in a general sense;
    the code before was in the ToBeShown handler and just checked for a parent
    component of -1. It then assumed "save frame HTML source". Now there's the
    savefile_raise_from_shortcut function, which together with the seven new
    event codes in SaveFile.h allows saving of HTML source and frame location,
    export of links, images, backgrounds and the page as text or draw, to all
    be invoked by keyboard shortcuts. Some Res files have some of these defined.
    
    In reformat_check_height, the first check to see if setpara should be set
    references a field in tpLast without checking if it is NULL. Whilst the
    'line > 0' check should mean that tpLast wasn't NULL anyway, a direct
    call to the function from outside of the reformatter might have tripped
    up on this - the check for tpLast != NULL is now made.
    
    Adjust-click on close icon in window showing file: URL attempts to open
    the parent Filer window.
    
    Reformatter used to try and find a selectable token if keyboard control
    was enabled in a really stupid place - could make reformatting become
    very slow if no selectables were present, especially if the page had a
    few tables on it. Preprocessor now does this (since it goes through all
    of the tokens anyway), the reformatter just doing a last check to ensure
    no frames have obscured the selectable and if so, it tries to move it.
    Done in the reformatter as generating a line array implies the data really
    is visible.
    
    Ctrl+Tab URL completion now builds a full list of matches from the hotlist
    and history and can cycle through them (Ctrl+Shift+Tab stepping backwards).
    
    Will give a real error rather than just "Data Abort" if it goes wrong
    now. Someone somewhere is setting bit 30 of the error which confused
    the replacement signal handler. Flag bits are now masked off (as they
    should've been to start with).
    25b4a552
!RunJ,feb 5.31 KB