-
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