-
Andrew Hodgkinson authored
By request, an intermediate 2.06 check-in. This is not a "proper" release and will need some Makefile fiddling etc. to swap between JavaScript and standard builds and so-forth. The Resources files are not all up to date; only Phoenix and the testbed Browse are more or less current. Right now, JavaScript doesn't work, SO COMPILE IT OUT. But to make a JavaScript build for a larf - * 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 * Add -DJAVASCRIPT to DFLAGS in MakeFile * Strip dynamic dependencies from MakeFile * Rebuild Phoenix or the Desktop build of Browse * In the exported copy, increase the !Run file WimpSlot value; either use the appropriate symbols table in 'syms' or use about 960K for non-debug, 4600K for debug builds. * If the exported copy has an About resource, edit the HTML file inside and uncomment the line about JavaScript. * Reverse most of the above to rebuild a non-JavaScript copy! :-O I hope to have much of the above automated soon (either by a new target, or preferably hackery with the MakeFile). Here's the change list: References to 'Phoenix' removed from Ursula build Res file Choices dialogue help text (only a couple of them). Cookie value display made taller in the Cookie Query dialogue (prompt field shrunk to accommodate this). Yikes - ever since markers, "reformat page to fit paper" hasn't done anything when printing; the reformatter reset the HTML page limits to the window size at startup! Fixed. Using markers, you can now also reformat from the top of the visible area and still reformat to fit the paper; the print dialogue used to grey out the reformat option in this case. It still does this when printing to the bottom of the visible area, though. You can drag text files to form writables (single and multiple line, but NOT password items (deliberately; it's trivial to add this but I think it'd be a bad idea)). Normally, data is appended up to the limit specified by the field (unlimited for multiple line items). Holding down Ctrl replaces the current value entirely (still, again, limited by maximum field length). The caret is moved from wherever it currently is and placed at the end of the added data. Note that you *cannot* insert in the middle of text by placing the caret and dropping. Things can get distinctly sluggish when you start dragging many Ks of text file into a multi-line writable, so the keyboard buffer is cleared for any input code < 32, equal to 127 (backspace - this one is a little less clear cut, but I think it's probably worthwhile) and anything > 255. This way, when typing, you don't lose characters; but when moving around, you don't find the cursor "running away" from you. Multi-line writables (text areas) would redraw a vertical column taller, or horizontal column wider than the element covers itself should the user scroll enough in any one direction (e.g. Ctrl+Up or Ctrl+Down to go to the top or end of the area). The code working out how much of the area to redraw by the number of lines or columns moved didn't ensure it kept within the area. Because an update rather than force redraw is done, with background blending turned on text around the area would "thicken". Now fixed. Form menu entries have (at long last) a space appended to each one, so the Wimp doesn't get confused and think something is a keyboard shortcut when someone expresses "Formula 1" as (say) "F1"... Now fill in the menu width entry from having read the actual VDU character width and spacing, not that anyone uses the original RO 3.1 Wimp with Browse any more! (The code existed elsewhere anyway, so it was trivial to add). Ctrl+U in a multi-line writable clears the contents of the line the caret is on, but doesn't delete the line itself. Ctrl+J now does this. DDFLAGS doesn't set ALIAS_URLS - Customer build has this now. Tiled images were being plotted in the wrong place in some modes (a '+4' in the starting y coordinate calculations in the three filler / tile functions should have been '+wimpt_dy()'). MessageTrans lookup buffer extended from 256 to 320 bytes (Limits_Message in Limits.h), mostly to support Messages files alterations for the About page. Spelling error in URI handler menu for Desktop (also known as Ursula, though this is now something of a misnomer) build corrected. There was a missing 'l' in 'handler'). StartProxy setting in Choices was 'no' and is now 'yes'. Downloading files of sizes over about 20Mb would cause an overflow in the % calculating code ("(fetched * 100) / file_size" as opposed to "100 * (fetched / file_size)" with (float) and (int) casts as required. Percentages now shown to 1dp; Mb displays to 2dp where the file size is not known. Download speed is now indicated in Small Fetch windows. Increased the delay between progress indicator updates as part of this, and modified Res files to cope (byte counter needs to be enlarged quite a lot). It isn't shown in normal browser windows because the enlarged byte counter looks daft in that context (normally, there's never enough information to fill even half of it). Adjust-click on an unlinked part of a client side image map could give an invalid object ID error from accidentally using the return value of a previous Toolbox call instead of the return result of a call to a fetcher routine - because given it had a NULL pointer for the URL, there was no such call made. Corrected in windows_create_browser() and handle_link_clicks() won't try to do this in the first place anymore. fetchpage_fetch_targetted() will also warn of such NULL pointers in TRACE builds. Submitting a GET form back to the same URL would lead to the query string getting appended to the fetch URL over and over. form_build_data now checks to see if there's already a query string in the submission URL for GET methods and if so, strips it. fetchpage_new_add will do a similar thing in the case of the additional data starting with '?'. When following a link, if RefoKeep was 'yes', the page could sometimes jump to a pre-stored scroll position; it was down to the resize routines remembering it, but if windows_check_reformat() or windows_remember_size() didn't actually do a reformat the position was not forgotten. It is now, so this jumping should no longer occur. Single character leafnames (e.g. "a.class") used to be reported just as "Index" in a save dialogue for the object. Fixed. <P> elements could fail to work as expected in some circumstances. For example, there would be no gap above '<p> <b>...' - the <b> text doesn't have the <p> attached, the tag before it does. However, the white space on this tag gets stripped so it ends up with a NULL text field. This means that paragraph space is allocated but the text height for the line thus far is zero. This has been fixed through special case code in reformat_check_height. browser_base_url() function added, which through browser_base_callback can supply a base URL for the current document. In-page references (URLs with '#something' in them) would fail if the page contained a BASE tag which pointed elsewhere (that is, the page would be fetched from its base URL and references would work thereafter; not very useful for developing sites on your local hard drive). Fixed. Fixed also the problem where in-page references would fail once after a forced reload. Several ultra-stupid bugs in image cross referencing code within image_update_image fixed: - No longer redraws *every* page with the same background when *any* of those backgrounds are updated; just if the page with the actual image data attached is updated. Doh! - Similarly, no longer updates every copy of an image when asked to update any of them, only when the one holding the actual image data is updated. - In the above cases, image array a scanning is avoided wherever possible now, whereas it used to happen for any update. Animated masked GIFs will no longer flicker briefly when they are first viewed on a page. Hacky but useful optimisation in Images.c. Local compilation option 'FAST_TOKEN_REFERENCE' controls whether or not the flags word of each HStream associated with an image_info struct is used in part to store the image's array index. If so, there's no array scanning to do - this signficantly speeds up cross referenced image handling. It's still rather undertested "but it seems to work". The number of bits used for the array index is controlled by FAST_TOKEN_REFERENCE_SHIFT, and is currently 20, giving around a 1 million image limit on the browser and leaving 12 bits for genuine flags (only 3 currently used). If an error occurred when Message_PlugIn_Opening was received, Browse would exit early with the message - before it removed the plug-in from the queue, thus stopping other launches. The error is now reported and then the item is still removed, preventing this problem. The BASEHREF entry in the parameters file used for plug-in launching will now give the contents of any BASE tag in the document before looking at the display URL, then the fetch URL. When a new page is visited or a browser window closed, any in progress fetches for plug-ins are abandoned. They weren't before, which caused all sorts of problems later on. In addition, any pending plug-in items in the queue may not have been correctly flushed (the first item may have been left behind), which can cause mis-firing of the plug-in engine as it picks up outdated queue items and attemps to launch them. This has also been fixed. Fixed problem with asynchronous delivery and reception of the Stream_New plug-in protocol messages, which previously would be incorrectly handled - Browse assumed that, as with plug-in launch, only one fetch would be running at a time (or the message passing between plug-in and fetch window would occur synchronously). This is not the case, and a variety of problems could be seen if the system broke down. The most obvious symptom is in Scrap, where Browse used to leave behind "BTFxxxxx" files on quit. Intermittent "Invalid object ID" errors cured; the Find dialogue box handler wasn't clearing its remembered ID, and since Find is a shared object, that object could get deleted without the Find code realising. Corrected mis-spelling of "Parameters" n comment block at top of about_copy_info_file(), which fouled up the documentation auto-generation. BuildSHelp will recognise functions indented by 2 spaces, assume they're indented because of a wrapping #ifdef, and put 'Conditionally compiled.' under the name of any such functions. It no longer outputs broken manuals if no functions are found in a source file. More robust to odd input due to extra EOF checking. New utility BuildHTML, to generate HTML pages in the same manner as BuildSHelp, created from BuildSHelp. This was done to support Ferrotec who'd like StrongHelp-like documentation but don't want to be tied to Acorn machines (and haven't got any at the time of writing anyway!). HTML was agreed as a good, easy format to go for. Have begun to implement JavaScript support. Updated !Boot and !Run[D] files to define File$Type_F81 and Alias$@RunType_F81 (0xf81 is a JavaScript script file, 'JSScript', MIME type application/x-javascript, common filename extension '.js'.). !Sprites[22] files have the relevant file icons added. Messages files extended with various tokens for miscellaneous error messages, error box buttons etc. Created a Browse About: page section based on the JavaScript filetype - we at last credit the use of the JPEG group software, LibPNG, etc.
334a6d84