- 31 May, 2000 1 commit
-
-
Andrew Hodgkinson authored
64-wide comments adopted throughout. All headers protected against multiple inclusion. Use of <> for external headers rather than "". For libraries, <libname/header.h> is used rather than relying on a complex include path, where appropriate. Move towards using external URILib rather than the local copy. Phoenix JavaScript build resources are the only up to date set currently so don't try others; more work still required on Makefile (e.g. getting the ROM build working, and internationalisation issues). Version 2.08. Not tagged
-
- 01 Mar, 2000 1 commit
-
-
Andrew Hodgkinson authored
Header and footer support working a lot better than in the previous release. Could do with some code tidying, but little else to do. Fixed a typo in JavaScript.c that stopped debug builds compiling, and updated Trace.c to know about all current HStream flags bits.
-
- 25 Feb, 2000 1 commit
-
-
Andrew Hodgkinson authored
Misecllaneous tweaks and fixes. Major addition is full header and footer support in the printing system - see the Phoenix Choices file for more information. Only the Phoenix resources are up to date currently.
-
- 02 Sep, 1999 1 commit
-
-
Andrew Hodgkinson authored
Long overdue check-in of intermediate browser build, from continued "out of hours" work. Forgot to add a few files last time too. List dialogue box handler complete, and exclusion lists implemented within the main browser code. Full documentation in Choices file. Save routine knows all about it but is now getting very slow - must come up with a better scheme; for now, it puts the hourglass on... StripExtensions option controls auto stripping of filename extensions. More sensible ancestor / frame selection for keyboard shortcut items and the save dialogues - having selected a frame won't lock you into it for F3 and related shortcuts now (input focus in URL writable -> get ancestor details, input focus in frame -> get frame details). F4 works in frames. F5 now generally present for 'view source' with a corresponding menu entry in the File menu. Odd thing in later Res files; there's no action set for Adjust clicks on the main ToolAction items in the button bar. Very odd. Nothing appears to be set in v2.07 either, yet adjust-click works. Even stranger. Anyway, added in the relevant event details (same as for Select click in all cases) and this fixes the problem. Background colours in the TABLE tag ignored the "don't print any backgrounds" Print Style setting. Fixed. Meanwhile, the "black text with no backgrounds" option wasn't getting this right either; fixed this also. Event logging implemented; HTTP errors and script output via. window.print extension. No internal error output yet. Faith:Never behaviour extended. If ever a server sends something with no content type or an unhandleable type, the browser will try and get a filetype from the URL. If it gets text or HTML, it'll render the file. Else it'll save it. Hacks around IIS 4's lack of a content type field in the Marketeye login stuff, and similar other slightly broken sites.
-
- 30 Mar, 1999 1 commit
-
-
Andrew Hodgkinson authored
Intermediate check-in; building a browser from this gives you something between 2.07 and 2.08. Only the Phoenix JavaScript resources are fully up to date. I *think* these are the changes since the last check-in: When saved as a Draw file, horizontal rules were plotted one page width too far to the right (wonder when that started happening?!). Fixed. In addition, DrawFiles now accepted as OBJECTs - they weren't in the recognised filetype list before. Doh. Table size calculator tables_count_table would overestimate the number of cells where ROWSPAN was present and there were other rows below the one spanned. Fixed. In certain odd cases (e.g. optimised image exports as HTML tables (!!) from the Gimp) this can save vast amounts of RAM. Fixed problem where printing stops in the middle of a document. Redraw engine pagination code was written in the days where lines couldn't have gaps between them; they can now. If a gap fell at the bottom of a page the engine would look down, see no line straddling or touching the page edge, and assume there was nothing more. This case is now correctly handled. Made sure desktop and testbed Browse Res files had up-to-date Encoding menus (v2.07 Phoenix has different menus from v2.07 Browse by oversight). URL auto-completion piggy-backed onto manual completion code; any string without '.', '/' or ':' in it gets run through completion to see if a more meaningful item can be produced - "www" special cased out though. New List dialogue box handler, used for proxy exclusions etc. (incomplete), complete with appropriate Res file objects.
-
- 24 Feb, 1999 1 commit
-
-
Kevin Bracey authored
Replacement set of Hangul syllables, created from Hanterm's Johab Iyagi font. All 11,172 syllables now present. They no longer match the single Jamo block though.
-
- 13 Oct, 1998 1 commit
-
-
Andrew Hodgkinson authored
Tweaks to export rules in Makefile - ResJ source for JavaScript builds, all of User dir exported, resources rule exports About as well as User. Handles images with a width or height of 0 specified in the HTML. Previously went for a default size placeholder and changes to image sizes and/or redraw problems could occur before/after subsequent reformatting (involved trivial changes to image_get_image_size and image_redraw_area only). Default parameter HRs now plot properly in rectangular pixel modes. Choices code updated to cope with the minimum font size, JS support, watchdog on/off and timeout, Navigator object option added generally (act even *more* like Navigator), image GC after fetch, and image GC unused image / free RAM constraints. Code in JSnavigator.c updated to obey new "act more like Navigator" option (see above). Currently declares itself as version 3.0. Resources for all builds are up to date. All links in default hotlist verified and corrected where necessary, with several new links added. This is Release v2.07. Not tested very much, sorry; YMMV.
-
- 06 Oct, 1998 1 commit
-
-
Andrew Hodgkinson authored
Lazy clearing of backgrounds - pages with the same background image or colour won't be cleared to grey when going from one to the next anymore. BODY element onLoad script attribute implemented properly (beyond the Customer hackery). Images use independent flex blocks for URL and transient fetch data; greatly improved data throughput in image system as a result. Image renumbering implemented - speeds up closing of pages / frames with many images. Image xref is still rather slow though and images with a 0 width or height specified in the HTML still cause an incorrectly formatted page to appear. Have, I think, fixed the "stops anti-aliasing" bug. Noticed that some background images are not being processed as Fast (e.g. at the Fibblesnork Lego Guide) - that old problem has reappeared, then. Background images would cross reference when two pages had the same background colour set in <body> elements but one was configured to use document colours and one wasn't (so xref should not occur). Code was looking at b->background_colour; corrected to call redraw_backcol(b). Titles were added to the history according to the fetch URL not the display URL, though the former is more likely to be in the history due to the code execution order in the fetcher; changed to see whether this improves upon the rather hit and miss addition of titles. The 'about:' page now gets entered into the history (makes for much more sensible behaviour if it is configured as a Home page, for example).
-
- 23 Sep, 1998 1 commit
-
-
Andrew Hodgkinson authored
Another intermediate check-in, resources may not be up to date; items most likely to be buildable are PhoenixJ and BrowseD. Done because I'm about to make some rather dodgy changes to code otherwise unchanged since the Customer browser and I may well have to back them out... In Handlers.c now set the HFlags_HasBeenVisited bit of a token at the point it is first clicked on. Means the link returns to a "visited" colour after the highlight flash immediately. This will persist for as long as the browser window is kept open on that page, though if the URL doesn't end up making it into the history for whatever reason it would "unhighlight" on reload; fair enough, really. The highlight is window-local, so there are no redraw worries for other open windows with links to the same URL (though other same-URL links on the same page aren't updated either). All forms submissions force a reload (principally for eudoramail.com, but many other sites have similar requirements). !MkClean and !MkClnAll didn't correctly call the utility to strip Makefile dependencies. Fixed. On fetch closedown, fetchpage_preprocess_token could be called on a token which had already been run through the preprocessor. Now checks the flags word before proceeding. Image RAM cache and garbage collection system implemented - see new Choices file entries CollectAfter, FreeRAMLimit and UnusedImageLimit to get an overview. This contains groundwork for JavaScript image array support. More JavaScript support improvements. Any one window object will know its parent, top, this, etc.; frames array working except for a frameset created via. multiple documents; opener for something created with window.open is currently not set and don't know why (property is being created, pointer to valid object is held, but JS engine returns 'null'. Ho hum) - JSChain won't work yet, then.
-
- 07 Sep, 1998 2 commits
-
-
Andrew Hodgkinson authored
Forgot to mention last time: The frames code changes in Frames.c mean the frames array stuff in JavaScript will be broken. I'll get round to fixing it up eventually. (I did say this was an intermediate check-in...!)
-
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).
-
- 09 Jul, 1998 2 commits
-
-
Andrew Hodgkinson authored
CVS crashing. Some of the Resources may well be out of date due to CVS locks being in place after earlier server-end core dumps, which I can't remove myself. I'll try and check one file in at the end with the full change log so people know what's happened (it's reached about 16K...) - I'll make that the TaskObey file '!All' in the top level directory. So for the full log, look for the changes on this file.
-
Andrew Hodgkinson authored
CVS crashing. Some of the Resources may well be out of date due to CVS locks being in place after earlier server-end core dumps, which I can't remove myself. I'll try and check one file in at the end with the full change log so people know what's happened (it's reached about 16K...)
-
- 02 Jul, 1998 2 commits
-
-
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.
-
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.
-
- 21 Apr, 1998 1 commit
-
-
Andrew Hodgkinson authored
MIDI themes is unreachable, Hensa has been restructured. For table cells where the line or chunk data totals less than Flex_256_Point bytes (see top of Memory.c, current value is 8192) there would be an over- allocation of 1 byte per cell due to a (now fixed) bug in the granular allocator. This would translate into 4 bytes wastage of course, and may represent a small speed penalty depending on how flex works out block word alignment. Several entries in the Choices file were missing from save_save_choices in its new form (see last check-in). Added back in. Ursula and Phoenix Res files contained an incorrect component ID in pane 3 that was stopping the 'no scroll bars' option in pane 7 working correctly (duplicate component ID). Res files corrected; TRACE builds will now spot such errors and give a warning when they occur (in choices_find_component). Table widthing code fixes: * Very wide table cell specifiers (e.g. TD WIDTH="2000") were ignored, but this isn't what Navigator / MSIE 4 do. This code was present because of other bugs in the widther, long since fixed. The code has been commented out - if the problem reappears the use of the code can be re-investigated, but as far as I can tell it isn't needed. * If two pixel specified cells appear one above the other, the first would always have been taken for use in the final width calculation even if it specified a smaller width than the second. The check was made to ensure that pixel specifiers were chosen in preference to other cells, which is OK, but it didn't notice if the current cell was also a pixel specifier! Fixed; you now get the widest. * The TRACE build 'Colspan cell xxx would have been width yyy, below minimum width of zzz' error should no longer happen. In a manner similar to the bug mentioned above, two cells above each other spanning the same columns with the lower cell narrower than the upper would end up with the narrower width. The code that trapped and corrected the error was not compiled out of release builds, even though the error message generation was, because the rendering would fail otherwise. The widther has now been fixed not to make this mistake and the final check is now strictly TRACE build only, thereby speeding up table widthing for non-TRACE builds. * Another use of MSIE4StyleTables option, for cellspacing; it's based on the actual used cells, rather than the maximum cell width caused by COLSPAN etc. So if you've a cell with a big COLSPAN but as a heading but the rest of the table only uses, say, 4 columns, you won't get a gap to the right which adds up to the spacing for all of the cells that the COLSPAN attribute in the heading implied. The option was actually intended as 'bad things when switched on', and though in this case it makes for a better rendering, it does hide an error in the HTML. Note Navigator 4 acts as Browse with MSIE4StyleTables off in this particular case. Oh, it works in both ways of course, so the table height routine had to be updated too. A new function, tables_find_actual_size, exists to support the feature in general. Messages files updated to v2.05 (21-Apr-98). Help menu items renamed a bit in Ursula, Phoenix and Customer Res files, but entries still point to the same URLs. Phoenix button bar markers have been brought closer together to stop them being visible when only the URL bar is meant to be present.
-
- 16 Apr, 1998 1 commit
-
-
Andrew Hodgkinson authored
RefoKeep and RefoHold options added to, respectively, try and maintain the line at the top of the visible area when reformatting, and not shrink the vertical extent at the start of a reformat to try and avoid flicker to the top of the page and back down again when RefoKeep is on. Choices front-end implemented, which also allows RefoWait and RefoTime to be set. Unfortunately for various reasons this doesn't help the page jumping when unsized images come in (but RefoHold can improve matters...) - roll on the image history. DragToScroll and NoScrollBars options added for frames; included new pointer type, Mouse_Shape_DTS, so relevant Controls file entries done and Sprites[22] files updated as required. Noticed some builds have a low-res ptr_link with a mask - mask removed. Named anchor following fixed up somewhat - anchors near the bottom of the page shouldn't be displayed, and then pulled down when the fetcher releases null polls and ensures the y extent is correct (this through implementing the min_height field in the browser_data structure). RefoHang was never implemented and there seems little point to it now, so the entry for it has been removed from the global choices structure and all Choices files. Markers menus should work properly now (in last check-in they would not update correctly if Adjust was used on the entries). URI handler usage now a lot more sensible, with configuration of how the browser uses the module from both a Utils menu submenu (sic) and the Choices dialogue. Slightly dodgy 'hang around waiting for user input' stuff for the Cookies dialogue box: All fetches are suspended; the fetcher remembers some info about its state at the time the cookie came in, and restores it later; it will only do this for one fetch at a time. It's necessary to single-thread the fetcher at this point anyway, since other fetches may have a dependency on the cookie that is hanging in mid-air at that point. As part of this, some of the fetcher code has been split out into separate functions (to try and 'black box' the code a bit). Anyway, Cookie Query dialogue box now implemented with appropriate Choices file entry and UI work in the Choices dialogue box. Phoenix build Choices rearranged. Can now choose when the image history is saved from the front end. Added also MSIE 4-style table option menu for JPEG support (OS only, OS if it can handle it, internal only). Should be a bit faster at loading the history - though 95% of the time is spent in SWI URL_ParseURL. URL descriptions are stored more efficiently as part of this - one malloc block instead of several small blocks. The minimum block size for malloc blocks typically leads to a significantly smaller startup wimpslot depending on the visit history size. Nasty bug in image system fixed. If an image size came in and a reformat was to take place, the line the image lies in is found and the reformat progresses from there. Unforunately, this didn't check to see if the token can't be found in the line list, so it'd reformat from the top of the page...! This would happen if, for example, an image halfway down the page came in whilst a reformat for an image higher up had just begun. In Choices.c, made choices_set_timetype_field, choices_set_uri_field, choices_set_plugin_field, choices_set_cookie_field, and choices_set_jpeg_field static (so they're not declared in Choices.h now). Two memory leaks plugged in URL comparison routines in URLutils.c (calling free() url_description instead of urlutils_free_descripton()). Client pull reload handler was setting the reload flag if reloading the same page, but forgetting to turn on reload_lock so fetchpage_postprocessed was clearing the reload state... Similarly, Ctrl+Shift+SELECT-Click on a link when the Controls file 'UseSmall' entry is 'no' would not have reloaded as it should. Both fixed. Frames shouldn't be so keen on acquiring horizontal scroll bars and never letting them go when their width is decreased now. Frames set up for 'scrolling="yes"' will not start with no scroll bars and then gain them shortly afterwards, causing flicker and two reformats - they'll start with, and continue to hold, both scroll bars. Pointer shouldn't flicker when over a frame border whilst other fetches are progressing now.
-
- 26 Mar, 1998 1 commit
-
-
Andrew Hodgkinson authored
This is NOT a 'final' version of anything in particular. I'm checking it in as I'm about to start playing around with low level window handling (as part of the thing mentioned at the bottom of this log) - this could screw things up quite badly if it goes wrong! =8*P Consequently, I advise you not to check this out over your working sources, and preferably not to check this out at all. Markers system - events defined in MiscEvents.h will make Browse remember where it is on the page. This position can be jumped back to later. Some builds will have defined keyboard shortcuts Ctrl+Shift+F5 through F8 to set a marker, and Ctrl+F5 through F8 to jump to a marker. The front-end for the above now has gadgets 0x80 upwards on the Toolbar or a set of menus (see Menus.h). Noticed an omission in copy_toolaction_info() (didn't copy the gadget state) in passing; fixed. browser_top_line() now works properly, as part of the above, but it'll be slower than before. If flagged to only find a complete line, it'll do just that, but whereas before this would require any tables that it looked inside to be wholly visible, tables can now be partially visible and have lines inside that are fully visible. This should help the Find function too. There is a new call, browser_top_line_offset, which works as browser_top_line but also returns a vertical scroll offset in the found line (used for more accurate marker position). browser_bottom_line[_r] turn out to never be used, even by the keyboard control routines, so they have been removed from Browser.c (rather than spend a lot of time and effort fixing them). browser_show_token erroneously subtracted 1 from a particular coordinate when calculating the y scroll position, which could lead to single pixel page creep using the markers system. Corrected. The View Resources button (see Toolbars.h) has been finally implemented, insofar as it fetches the resources file to the current browser page (or to a new window if Adjust is used, Controls file settings permitting). menus_toggle_bars did not take account of the toolbar lower window border edge correctly. It does now. The reformatter has a prototype system to keep the vertical page position when reformatting. This was coded about 5 minutes ago, and is not likely to be reliable...
-
- 20 Mar, 1998 1 commit
-
-
Andrew Hodgkinson authored
Some compile-time hacks in place to use MemLib, a dynamic area based malloc replacement which shrinks its heap when possible. All builds have these switched off at the moment. Seemed to work with just Browse, though there would be problems with message blocks stored in dynamic areas because of the Wimp's '&3800000' check - however, it failed when HTMLLib was made to use it, too. Don't know why yet. ItemInfo.[c/h] source added, with Res file additions for testbed Browse and Phoenix. Small fetch windows now work properly regardless of toolbar settings in the Choices. Reload now reloads all images too, rather than only reloading them for as long as the main page was being fetched. Added a simple 'Find' facility. Realised that event handlers in eventlib are called in reverse order of registration, so the miscellaneous event handler is now registered first rather than last. Multiuser code added (most only active if SINGLE_USER is undefined). As part of this, hotlist code now knows about read-only items (done for the Customer-style 'Resources' file, but works generally anyway). handle_add_hotlist doesn't try to save the hotlist itself anymore (the hotlist_add function does all that through hotlist_modified anyway). Customer build Choices and Controls updated slightly (e.g. ClaimHelp off, hotlist to save on quit only). Customer build now uses Phoenix-style buttons. Sprites files which worked at the time (but will probably be out of date now) and included most of the original Customer-style sprites are in 'Utils.Icons.Customer'. Choices, Messages and Res files for all builds now stripped down to only single user items or single plus multiuser for Customer build and testbed build. Before, all contained a few multiuser bits in at least the Choices file if not more. Grammatical error ("Fetching frames contents" (sic.)) corrected in default message, Toolbars.c, and all of the Messages files. Customer build brought back to a servicable level (including implementation of the Find dialogue box with animation and fixing up authorisation and 'Stop' state in the tristate). Quite a few missing #ifndef REMOTE_HOTLIST bits from hotlist code added... Customer build will not use <Choices$Write> or Boot:Choices for any file finding now. UseProxy defaults to 'yes', MaxImages to 2. Res file includes Proxy Address setting (save_save_choices() now writes the ProxyAddress line).
-
- 23 Feb, 1998 1 commit
-
-
Andrew Hodgkinson authored
The '3F6C0' abort fixed; reformat_left_margin didn't cope with a NULL cell pointer. This only happened if the image library tried to deal with an image in a table cell which wasn't properly dealt with by the table systems yet, for whatever reason. Rare, but persistent once it started happening because it depended on the value of the FIQ vector! Put function header comments in SaveFile.c, at last. Messages files now read version 2.01, 23 Feb 1998.
-
- 19 Feb, 1998 2 commits
-
-
Andrew Hodgkinson authored
As a finishing touch, replaced the generic 'The browser requires...' errors in the !Run[D] files with '[Appname] requires'.
-
Andrew Hodgkinson authored
Customer build Res file fault corrected - URL bar writable icon had ended up with allowed characters of 'Button' only when a set of Help messages got imported. Messages files now say "Version:2.00 (19-Feb-98)". Yay!
-
- 13 Feb, 1998 1 commit
-
-
Andrew Hodgkinson authored
Precautions taken in table code to avoid divide by zero errors. Framesets defining more frames than the frameset implies, for whatever reason, should never cause a crash now - just report a 'Frames definition is badly nested' error (if STRICT_PARSER defined). Along the same lines, in a single document defining a set of nested frames, two /FRAMESETs in succession could cause a fairly nasty crash. Fixed. TIFFs do not get loaded by double-click now. If holding down SHIFT to save a link contents to disc, you can also hold down CTRL to bypass the cache (sets the browser's reloading flag). Noticed when testing this that windows_create_browser didn't take account of the Controls file 'UseSmall' entry when adjust-shift-clicking on links. It does now. There is now a complete and up to date set of interactive help messages built into the Ursula, Customer and Phoenix build Res files.
-
- 06 Feb, 1998 1 commit
-
-
Andrew Hodgkinson authored
WindowManager 3.98. Sets URI handler environment variables for http, ftp and gopher. Fixed 'doesn't reformat for unsized images' bug - only happens when the deferred reformatter is enabled, hadn't remembered to check this in my debug build where this is turned off. Oops. Caret position in forms could get left behind despite attempts to rectify this in v1.31 - now fixed (and faster, fortunately). Hourglass + percentage displayed for History and Image History when loading - it can take a while for very big histories, though in practice you only see the visit history loading (has to do a lot more work, and is thus quite a bit slower than the image history). POST forms worked when targetted to frames, but were broken when not targetted! (Forms data inherited from one browser to the same browser; ended up freeing the flex block...). Fixed. Now support 303 response code (redirect to GET). Treated as 301, i.e. not support if STRICT_PARSER is defined, otherwise drops through to the 302 handling code. Pointer shouldn't get stuck in odd shapes when going to a new page now; it gets reset to a standard shape every time the null handler that checks the position is called, though (whether or not the handler thinks the pointer is over a different token, if that token is NULL, it sets the standard shape). A possible work around would be for a browser to remember the pointer shape too; that's for the future, though. Early stage table formatting functions could blow themselves apart if tables_count_table decided there were no rows, columns or both. A net table size of zero cells is now dealt with; slow, partial table fetches in multiple windows with image loading turned on will now *hopefully* be stable, where v1.31 would have bombed out repeatedly. A nested frameset within one document will now inherit the border width (frame spacing) and border colour of its parent. This is done by copying the maxlen and indent fields of the parent token over the child, and note it's done in the browser (fetch_preprocess_token), not HTMLLib. Border colour on a FRAMESET now used, with the first colour on any FRAME within it overriding, as in NN 4 and MSIE 4. <LI> bullets really do stick to the text next to them now (I'd done that in an experimental piece of code and forgotten to merge it back before the last check-in). Browse$HotlistURL/URIFile and Browse$HomeURL/URIFile now work from _TaskName in the Messages file, and are thus of the generic form <App>$HotlistURL etc. - Docs.Notes and Docs.User updated appropriately. Event 0x11d00 through to 0x11d7f will make the browser look up Controls file entries 'JumpTo00' through to 'JumpTo7f' and read a URL from them. This will be fetched in the ancestor window of the source of the event, or a new window if such an ancestor can't be found [for Daytona demo]. NB: Nasty frames-related crash at http://www.teledanmark.dk/menu/start.htm is *not* fixed in this source. NOBR is not supported.
-
- 02 Feb, 1998 1 commit
-
-
Andrew Hodgkinson authored
Machine hung during last check-in; trying again... Apologies for sending out such a huge log message *twice*. Check for WindowManager 3.97 and ensure Unicode$Path is set in all !Run[D] files, don't set the Alias$@PrintType_FF4 variable, and updated Customer build ROM obey file variants. Various other changes to the Run files for new module versions, updated paths to support new positions of choices, hotlist and histories (see later), etc. !Sprites[22] files hold small !app icons for some variants, and an ic_browse sprite. Some variants now have a Sprites and Sprites22 file instead of just Sprites, with the former containing various mode 12 or 15 specific sprites. Text files dragged to the URL writable are treated as ANT URL files. This relies on URLBarWrit (Toolbars.h) being a unique ID, which it should be, but beware of the Hotlist and Choices numberspaces... INPUT TYPE=BUTTON supported. Form items without a FORM tag are now shown (as MSIE 4, but not NN 4). '*', '-', '@', '_' and '.' are not escaped when submitting forms now. The Web interface to the IMDb now works. INPUT TYPE=HIDDEN items will not affect the line height anymore - so http://www.hotmail.com/ now has correctly aligned writable icons, for example. Similarly, TAG_FORM and TAG_FORM_END items could push up line height and don't anymore. HRs with a specified pixel width will now influence the size of a table cell (they didn't before). BRs now checked by tagno field when the browser needs to know something was an actual BR tag rather than just a line break signal, and by the style bit entry when only the indication of a line break is required. Table widths of 0 or 0% are ignored. Trace.c updated to report height and background fields in a table_stream. fm_putsl() writes a terminator into the string; the Forms.c routines were calling this for displaying INPUT TYPE=PASSWORD fields using the FE_PassCode literal string (a line of stars). This write into a read only data area would make the debugger fault the access. A local char array is now used instead, to get round this (note the use of var[]=literal rather than var[sizeof(literal)]; strcpy(var, literal) due to some weird compiler bug that copies the wrong thing into 'var' under some (undefined...) circumstances). Text areas don't scroll back to the top line when clicked in anymore; single line writables don't scroll back to the left either. When reentering a text area from 'above', the caret appears at the top line rather than 'somewhere further down'... ARROWS_MOVE_OUT compile time option at the top of Forms.c defines whether you must press Tab/Shift+Tab to move between writable fields in forms or if up/down will drop out of them, though if keyboard control is on this is enforced (or you get trapped inside the form!). urlutils_filetype_from_url now uses MimeMap module. If fetcher is told a page is text, it'll check for a filename extension and may choose to use this instead (e.g. it may find it's HTML instead). This is to try and get around duff servers... (e.g. http://www.batalarms.co.uk/). Save dialogues shouldn't flicker when options that don't change the filetype are selected (before, the draggable sprite was always reset for each selection). Noticed the erroneous setting of a static variable in SaveFile.c by a call to this by SaveObject.c, and so added a flag to savefile_set_filetype to deal with this - would have been possible to get the wrong filetype sent to applications or at best the wrong filetype sprite in the dialogue without that. The caret shouldn't jump out of a form back to the URL writable if the page reformats now. Table background colours now supported (as in the colour you see in the border space if the cellspacing is large enough; this is as in MSIE, not as in Navigator). Drawfile output routines updated accordingly. Corrected erroneous use of wimpt_dx() / wimpt_dy() in a couple of places in Images.c, which meant that (say) 1x1 images didn't work correctly in medium resolution display modes. Now have support for save as text (component ID and event 0x12) and save as Draw (component ID and event 0x13) buttons. Dubious conditions for greying and ungreying the print, save source and view source buttons and menu options sorted out as part of implementing the same for the two new buttons; added greying out of their associated menu items in passing. Turned kerning on in draw file objects (does mean a rather heinous increase in file size, but this is the only way to ensure the draw file matches the visible page). Comments before functions in SaveDraw.c are now complete and up to date. Image and visit histories now generate a crude hash number to speed up searching for items. It does give a speed increase, though it's a disappointingly small one. Issue of left/right margins and cellpaddings sorted out. Now have redraw_left/right_margin for finding out the basic gap you must leave. redraw_left/right_gap then gives any extra indentation for LI, BLOCKQUOTE or whatever. The last two can be subtracted from the display width to get an available page width for any section of text. Note that redraw_left_gap replaces redraw_margin. The redraw_start_x function uses the above to work out where a line's left hand edge should be, taking account of left/right/centre alignment. HRs have been fixed now (they were quite broken in v1.30, I think) based on this new model and the behaviour of MSIE/NN 4. Fixed width of cells with no contents - cell padding values wouldn't have worked properly as the reformatter returns 0 rather than the left hand margin size if given no stream. Removed FM_Absolute flags for Font_Paint (spotted by DBrown) - sets bit 2, which is reserved...? IMG width and height in % terms now works correctly; a % of available width (after margins and indents) or height on the main page or for a table cell, if the image lies in one. Because of the chicken-and-egg problem with the latter, the cell must specify a width and/or height for things to work properly. If this is not done, you'll usually end up with a 1:1 scaled image (as in Navigator 4, rather than ending up with no image or even no cell (!), as in MSIE 4). HEIGHT attribute on a TABLE tag is supported, but only in a crude fashion; the extra height (if there is any) is distributed over the rows in a linear fashion. This is probably all you have to do in practice, but I haven't checked. To maintain a notion of min/max height as well as width would of course require a great deal more work... If using client pull to reload a page with a fragment ('...#name') specified, then the reload wouldn't work on the same page; it'd just jump to the fragment position. This won't happen if b->reloading is set now (so works in conjunction with client pull on the same page forcing a non-cached fetch). Similarly, if POSTing to such a URL, a fetch will proceed (both these fixes done originally for http://jupiter.beseen.com/chat/rooms/g/1678/). browser_inherit split to browser_inherit and browser_inherit_post_data; the code for the latter didn't clear any post_data in the child before copying from the parent either, and could cause flex errors (now fixed). Res file for Ursula ('Desktop' Browse) build tweaked - bits in the font choices dialogue renamed, and button bar rearranged to hold the new Save As Draw button. Other builds have had Save As Draw and Save As Text buttons added, or not, depending upon availability of suitable sprites, required UI simplicity, etc. Now have: Browse$ChoicesFile Browse$ControlsFile Browse$ChoicesSave Browse$ControlsSave (the last two are new) for loading and saving of the Choices or Controls files. If unset, <App$Dir>.Choices or <App$Dir>.Controls will be set. E.g., you could set Browse$ChoicesFile to be: <App$Dir>.Choices,Choices:WWW.(app).Choices for loading and <Choices$Write>.WWW.(app).Choices for saving. (The browser never saves Controls at the moment, so the relevant variable above isn't effectively implemented, but could be in future). Similarly, to support asymetric loading/saving of the Hotlist, there are HotlistSave, HistorySave and ImageHistorySave entries in Choices to complement HotlistPath, HistoryPath and ImageHistoryPath (which are used for loading). save_save_choices will create directories as needed to obtain the given path (and has also been fixed in various areas that hadn't been tested out until now; e.g. zero termination of the AppName$ChoicesFile variable expansion...). !Run[D] files updated appropriately. Table widthing code rewritten. Slower, but a lot better on the whole. Still has some problems - still needs a final 'make sure nothing is below minimum width' scan, which it should be possible to do without. No time to fix this at present! The reformatter will now 'glue together' an LI token followed by any non-LI token; so a bullet point followed by an item should not be able to have a line break inserted after the bullet because of very tight width constraints (it could before - yuk...). 'about:' brings up a page about the browser and any Plug-Ins, as with Navigator (for example). URI files support titles, as per spec. version 8. Saving a current location to the Hotlist will thus give a sensible title now (unless you're in a frame, so there's no title to get...). Of course, v1.00 files without a title still work. Note that NOBR is *not* supported in this build and this combined with the new table widther may cause problems on some sites (e.g. Microsoft's home page!).
-
- 31 Jan, 1998 1 commit
-
-
Andrew Hodgkinson authored
Check for WindowManager 3.97 and ensure Unicode$Path is set in all !Run[D] files, don't set the Alias$@PrintType_FF4 variable, and updated Customer build ROM obey file variants. Various other changes to the Run files for new module versions, updated paths to support new positions of choices, hotlist and histories (see later), etc. !Sprites[22] files hold small !app icons for some variants, and an ic_browse sprite. Some variants now have a Sprites and Sprites22 file instead of just Sprites, with the former containing various mode 12 or 15 specific sprites. Text files dragged to the URL writable are treated as ANT URL files. This relies on URLBarWrit (Toolbars.h) being a unique ID, which it should be, but beware of the Hotlist and Choices numberspaces... INPUT TYPE=BUTTON supported. Form items without a FORM tag are now shown (as MSIE 4, but not NN 4). '*', '-', '@', '_' and '.' are not escaped when submitting forms now. The Web interface to the IMDb now works. INPUT TYPE=HIDDEN items will not affect the line height anymore - so http://www.hotmail.com/ now has correctly aligned writable icons, for example. Similarly, TAG_FORM and TAG_FORM_END items could push up line height and don't anymore. HRs with a specified pixel width will now influence the size of a table cell (they didn't before). BRs now checked by tagno field when the browser needs to know something was an actual BR tag rather than just a line break signal, and by the style bit entry when only the indication of a line break is required. Table widths of 0 or 0% are ignored. Trace.c updated to report height and background fields in a table_stream. fm_putsl() writes a terminator into the string; the Forms.c routines were calling this for displaying INPUT TYPE=PASSWORD fields using the FE_PassCode literal string (a line of stars). This write into a read only data area would make the debugger fault the access. A local char array is now used instead, to get round this (note the use of var[]=literal rather than var[sizeof(literal)]; strcpy(var, literal) due to some weird compiler bug that copies the wrong thing into 'var' under some (undefined...) circumstances). Text areas don't scroll back to the top line when clicked in anymore; single line writables don't scroll back to the left either. When reentering a text area from 'above', the caret appears at the top line rather than 'somewhere further down'... ARROWS_MOVE_OUT compile time option at the top of Forms.c defines whether you must press Tab/Shift+Tab to move between writable fields in forms or if up/down will drop out of them, though if keyboard control is on this is enforced (or you get trapped inside the form!). urlutils_filetype_from_url now uses MimeMap module. If fetcher is told a page is text, it'll check for a filename extension and may choose to use this instead (e.g. it may find it's HTML instead). This is to try and get around duff servers... (e.g. http://www.batalarms.co.uk/). Save dialogues shouldn't flicker when options that don't change the filetype are selected (before, the draggable sprite was always reset for each selection). Noticed the erroneous setting of a static variable in SaveFile.c by a call to this by SaveObject.c, and so added a flag to savefile_set_filetype to deal with this - would have been possible to get the wrong filetype sent to applications or at best the wrong filetype sprite in the dialogue without that. The caret shouldn't jump out of a form back to the URL writable if the page reformats now. Table background colours now supported (as in the colour you see in the border space if the cellspacing is large enough; this is as in MSIE, not as in Navigator). Drawfile output routines updated accordingly. Corrected erroneous use of wimpt_dx() / wimpt_dy() in a couple of places in Images.c, which meant that (say) 1x1 images didn't work correctly in medium resolution display modes. Now have support for save as text (component ID and event 0x12) and save as Draw (component ID and event 0x13) buttons. Dubious conditions for greying and ungreying the print, save source and view source buttons and menu options sorted out as part of implementing the same for the two new buttons; added greying out of their associated menu items in passing. Turned kerning on in draw file objects (does mean a rather heinous increase in file size, but this is the only way to ensure the draw file matches the visible page). Comments before functions in SaveDraw.c are now complete and up to date. Image and visit histories now generate a crude hash number to speed up searching for items. It does give a speed increase, though it's a disappointingly small one. Issue of left/right margins and cellpaddings sorted out. Now have redraw_left/right_margin for finding out the basic gap you must leave. redraw_left/right_gap then gives any extra indentation for LI, BLOCKQUOTE or whatever. The last two can be subtracted from the display width to get an available page width for any section of text. Note that redraw_left_gap replaces redraw_margin. The redraw_start_x function uses the above to work out where a line's left hand edge should be, taking account of left/right/centre alignment. HRs have been fixed now (they were quite broken in v1.30, I think) based on this new model and the behaviour of MSIE/NN 4. Fixed width of cells with no contents - cell padding values wouldn't have worked properly as the reformatter returns 0 rather than the left hand margin size if given no stream. Removed FM_Absolute flags for Font_Paint (spotted by DBrown) - sets bit 2, which is reserved...? IMG width and height in % terms now works correctly; a % of available width (after margins and indents) or height on the main page or for a table cell, if the image lies in one. Because of the chicken-and-egg problem with the latter, the cell must specify a width and/or height for things to work properly. If this is not done, you'll usually end up with a 1:1 scaled image (as in Navigator 4, rather than ending up with no image or even no cell (!), as in MSIE 4). HEIGHT attribute on a TABLE tag is supported, but only in a crude fashion; the extra height (if there is any) is distributed over the rows in a linear fashion. This is probably all you have to do in practice, but I haven't checked. To maintain a notion of min/max height as well as width would of course require a great deal more work... If using client pull to reload a page with a fragment ('...#name') specified, then the reload wouldn't work on the same page; it'd just jump to the fragment position. This won't happen if b->reloading is set now (so works in conjunction with client pull on the same page forcing a non-cached fetch). Similarly, if POSTing to such a URL, a fetch will proceed (both these fixes done originally for http://jupiter.beseen.com/chat/rooms/g/1678/). browser_inherit split to browser_inherit and browser_inherit_post_data; the code for the latter didn't clear any post_data in the child before copying from the parent either, and could cause flex errors (now fixed). Res file for Ursula ('Desktop' Browse) build tweaked - bits in the font choices dialogue renamed, and button bar rearranged to hold the new Save As Draw button. Other builds have had Save As Draw and Save As Text buttons added, or not, depending upon availability of suitable sprites, required UI simplicity, etc. Now have: Browse$ChoicesFile Browse$ControlsFile Browse$ChoicesSave Browse$ControlsSave (the last two are new) for loading and saving of the Choices or Controls files. If unset, <App$Dir>.Choices or <App$Dir>.Controls will be set. E.g., you could set Browse$ChoicesFile to be: <App$Dir>.Choices,Choices:WWW.(app).Choices for loading and <Choices$Write>.WWW.(app).Choices for saving. (The browser never saves Controls at the moment, so the relevant variable above isn't effectively implemented, but could be in future). Similarly, to support asymetric loading/saving of the Hotlist, there are HotlistSave, HistorySave and ImageHistorySave entries in Choices to complement HotlistPath, HistoryPath and ImageHistoryPath (which are used for loading). save_save_choices will create directories as needed to obtain the given path (and has also been fixed in various areas that hadn't been tested out until now; e.g. zero termination of the AppName$ChoicesFile variable expansion...). !Run[D] files updated appropriately. Table widthing code rewritten. Slower, but a lot better on the whole. Still has some problems - still needs a final 'make sure nothing is below minimum width' scan, which it should be possible to do without. No time to fix this at present! The reformatter will now 'glue together' an LI token followed by any non-LI token; so a bullet point followed by an item should not be able to have a line break inserted after the bullet because of very tight width constraints (it could before - yuk...). 'about:' brings up a page about the browser and any Plug-Ins, as with Navigator (for example). URI files support titles, as per spec. version 8. Saving a current location to the Hotlist will thus give a sensible title now (unless you're in a frame, so there's no title to get...). Of course, v1.00 files without a title still work. Note that NOBR is *not* supported in this build and this combined with the new table widther may cause problems on some sites (e.g. Microsoft's home page!).
-
- 06 Jan, 1998 1 commit
-
-
David Brown authored
-
- 05 Jan, 1998 2 commits
-
-
Andrew Hodgkinson authored
When converted from hours to seconds, all the Choices ended up with the same history expiry times - they weren't to start with, though (and aren't anymore) :-)
-
David Brown authored
-
- 18 Dec, 1997 2 commits
-
-
Andrew Hodgkinson authored
-
Andrew Hodgkinson authored
Not all resources are up to date in this check-in, and documentation both within source and stuff in 'Docs' is out of date or missing - I was very pushed for time on this one... Hopefully will do another 'tidy up' check-in before close on Friday; until then, beware of anything other than the Ursula (Desktop browser) build. Anyway... Export As Draw done. As part of this, FONT SIZE and SUP / SUB adjustment of font size is done in fm_token_font_info rather than fm_find_token_font. Bullets and switches are plotted as indirected sprite items, rather than indirected text + sprite items - this relied on being in a redraw loop to pick the sprites up from the local pool (failed during printing). URI files now have a LF line ending rather than CR... '*' recognised as an empty field when loading via. RAM transfer now (only worked for loading from disc before). Gave placeholder bounding boxes 4 OS units more minimum extra gap vertically and reduced horizontal addition to this value * 1.5, rather than * 2 (see reformat_get_placeholder_size). Background image tiling starts at ymax - h + 4, rather than ymax, so there isn't the bottom line of pixels from the top tile always present at the top of the window. The '+4' is for caution's sake. Can now save a frame's HTML source, that of its parent or its ancestor, and the same for the URI pointing to those documents - see Menus.h for the relevant component IDs that should lead to the SaveFile dialogue. Have hopefully fixed timeout = 0 values (i.e. 'forever') on things like LinkTo; before, image fetches could override the state (so you'd only ever see brief flickers of a given URL as the pointer went over a link). Save File dialogue will remember the state of option or radio buttons for a given parent component origin and restore that state when the dialogue is next opened from the same place (stops turning on saving as a URL file also turning on 'save background images' for Draw file export, etc.). Use of a META tag to reload the *same* page now sets the 'reloading' flag in the browser so that it doesn't go through a proxy - otherwise pages which are meant to update periodically through client pull don't work, as they keep coming out of the cache. Can now handle images specifying just a width or height in the HTML (other dimension is scaled accordingly, but note that the placeholder size must still be 'dumb' until the image data comes in). An image will now override an image history size entry for the same entry with a different size.
-
- 12 Dec, 1997 3 commits
-
-
Andrew Hodgkinson authored
Note that the 'Docs' documentation (possibly contrary to previous log messages) still hasn't been updated with the new SaveFile stuff, and function header comments have yet to be written for SaveFile.c. Fixed urlutils_pathname_to_url - OS_GSTrans doesn't like the same input buffer as output buffer (fairly obvious, but I was living in the hope of not having to duplicate the input path string). Image history will not cache scrap file images anymore. Browser's image handling library won't cross reference them either. When dragging a single item from the hotlist to a Filer window, the code now checks Ctrl - if held down, a URL file is written, else a URI file. The state of any option buttons or radios in the last Save File dialogue that was opened is no longer relevant...! history_save_as_html could write out broken files when titles for items in the History were not present. Fixed. Hourglass switched on for hotlist and history saving as HTML; hotlist_save_entries no longer closes the output file on error (it should be done by the caller, since the caller is responsible for opening the file and passing the FILE * pointer to hotlist_save_entries).
-
David Brown authored
-
Andrew Hodgkinson authored
There are a few known significant problems with this code but it's being checked in so the Choices can be worked on. Note that Res files etc. are not up to date across all builds. Progress is as follows... Bug report prompted me to do this - now ignore <p> tags straight after <li> tags, so '<ul><li><p>Some text' works as the author (or automatic generator, more commonly) intended. A <p> tag before a table will be acted upon now (it was ignored before). Something like <li><p><table...> will give a line break and paragraph space after the <li> despite the changes mentioned above, as in other browsers. Both browsers differ from Navigator, where the table appears alongside the <li> tag. Multiple BR tags work as in MSIE / Navigator (they don't collapse to zero height anymore). For the above, line height (and so, <br><br> or <p> spacing) is now calculated inside reformat_text_line_height, and is used with either a token to get the text height at a given size (e.g. for general line spacing or multiple BR tags) or NULL for normal size text (e.g. for P spacing, though this value is in practice later scaled by 7/8ths in reformat_check_height). Note this behaviour is exhibited by MSIE 4; v3 gave two BRs the same spacing as one P (i.e. not font size dependent). Save dialogues can have an option button or couple of radios to switch between various formats (e.g. URI or URL, sprite or original format). See 'Docs.Notes' for more. The back-end to this is now implemented (i.e. at the moment, save as URI or URL, save as original image format). Note that when saving background images, a leafname based on the original fetch URL is now offered rather than a generic 'Background'. Internal URL scheme changed to be all lower case, so relativisation through URL_Fetcher still makes sense... :-/ Holding down 'shift' when clicking on stop reverses the interpretation of the Controls file 'StopWebServe' entry. Fixed row / column count for exporting tables as text; fixed a few bits and pieces of internal URL scheme stuff which got broken when HTMLLib started using URL_Fetcher's relativisation.
-
- 04 Dec, 1997 1 commit
-
-
Andrew Hodgkinson authored
Fixed some glitches in the modified status bar code (e.g. status inference wasn't working properly). Shift+Toggle size always opened to not obscure the icon bar. If CMOS is set to always show the icon bar, then Shift+Toggle size is meant to reverse sense and open to absolute full size. It now does this. !Run[D] files now require URL 0.22, HTTP 0.64, FTP 0.22, Gopher 0.08 and File 0.32. Minor overhaul of 'Docs.Notes' (with 'Docs.User' similarly updated) to include a few new bits and pieces. Timeout values of 0 now mean 'forever'. Plug-in status messages now have their own timeout setting. New Messages token 'Actv' for extra info when a status message times out and the status line drops to 'Viewing' or 'Ready' when there is still a Busy state registered by the Plug-in. Small Fetch windows don't become visible briefly for Plug-in fetches when the fetch is complete (for SeeFetches:no, where these windows should be hidden all the time). WebServe may be controlled through the Browse front-end via. Wimp_MAppControl reason code 4 (Wimp_MAppControl_Configure). Note the renaming internally of 'WebServ' or 'WebServe' has been changed to 'Proxy' (with lower case equivalents where relevant); proxy name and starting details come from the Messages file 'ProxyName' and 'ProxyComm' tokens. More in 'Docs.Notes'. Res files updated for image history and PRE/TT font aspect ratio choices. 'Don't expire' labels changed to 'Expire' (oops, didn't notice the change in the development Browse's Res file when I updated all of the others until now...). When printing, Wimp_PlotIcon appears to ignore R4 and R5, plots 'somewhere' on the page, and tries to get the sprite from the global pool. This latter part normally causes an error to be raised; though on my machine I just get a corrupted error message. The Desktop font gets lost at this point too. All have yet to be fixed; as an interim work around, Wimp_PlotIcon objects are never drawn at all if the global 'printing' flag is set.
-
- 03 Dec, 1997 2 commits
-
-
David Brown authored
-
David Brown authored
-
- 02 Dec, 1997 1 commit
-
-
Andrew Hodgkinson authored
Message_PlugIn_Busy. Plug-in code more robust when given invalid browser instance handles by the plug-in. Line spacing is now calculated on the basis of the normal style base serif font, with all other fonts being forced into that line height. This does mean that an unusually tall (say) sans serif font may get clipped. It appears to be the only way to get around wildly different baseline depths returned from the font metrics - you can't work out line spacing based on each different font style; the line spacing will vary. Table heighting (as opposed to widthing...) improved considerably; rowspan can no longer cause very tall cells in odd places. Having trouble getting rid of the single pixel breaks between vertically adjacent cells, though I've not tried too hard. Widthing, though, seems fairly badly broken at present... :-/ Set/clear of page_is_text flag made more robust (it looked as though there was the potential for this to get stuck in a set state, though I've never see the front-end behave in a manner which indicates this is the case). The reformatter will now decrease leading if this flag is set (plain text pages look daft with a line spacing that is OK for 'rich' text pages). No reformatting is done if the page width changes by dragging on the resize icon, though toggle size / full screen will still reformat even if the contents are only text (browser needs to sort out various width flags at this point). Cut down on excessive redrawing when reformatting due to a change in window dimensions is not done. If display_width hasn't changed, then no redraw is needed. If this causes redraw problems, then whatever is changing display_width needs investigating. It shouldn't be kludged (basically) by forcing a redraw instead of a reformat. TT/PRE/etc. text can now have a non-100% aspect ratio. 80-90% looks best (ArcWeb, for example, uses 86%). New option 'TTAspect' in the Choices files. Debug builds link to a non-debug Unicode library now; stops stderr being dumped to the bottom left of the screen if you've not redirected it in the Run file. RISC OS 3.1 seems to need more initial WimpSlot than later OS versions. The 64 deep nested table set gives a 'No stack for trap handler' error (which it really means in this case!) without 800K, even though 3.71 is happy with just 640K. So, the !Run file checks if Boot$OSVersion is exactly 300, 310 or 311, and sets the WimpSlot accordingly. !Run[D] files now require latest fetcher module versions (URL 0.21, File 0.31, HTTP 0.58).
-
- 01 Dec, 1997 1 commit
-
-
David Brown authored
i) There can be two sets of gadgets, one set for page history and another set for image history. ii) There can be one set of gadgets for both settings and two radio buttons to select between them. Only one of these may be present at the same time. Currently the radio button version is the one that is in place. To change to the other version delete the radio buttons and copy the gadgets from the ChoicesTMP window into the appropriate window.
-
- 27 Nov, 1997 1 commit
-
-
Andrew Hodgkinson authored
Significant reduction in number of times reformatter is called during a table widthing session results in a dramatic speed increase for nested tables (e.g. 64 deep with a paragraph of text in the deepest table takes about two seconds to load with near-instantaneous subsequent reformats, as opposed to taking optimistically 28 days for a 32 deep table!). This code relies on a very big stack of assumptions... Save as plain text implemented. Choices, Messages and Res files brought up to date where necessary. Version number taken to 1.28, 04-Dec-97 (so I don't forget later, basically...).
-