- 19 Nov, 1997 1 commit
-
-
Andrew Hodgkinson authored
This is an intermediate check-in to allow work on Choices for the new table options and History choices as detailed below. Res files are not up to date except where indicated and there are several known bugs that will be fixed before the 'final' v1.27 is created. Any work on resources should only be done for the testbed !Browse. Client side image maps implemented. There is code to draw highlighted borders in CSIM.c, but this is not wired in yet; other than that, the implementation is functionally complete. As part of this, centralised the fetching of a targetted URL taking into account user request of a new view and full screen mode, in fetchpage_fetch_targetted. The forms library now uses this too, so form buttons respond to both adjust-clicks and TARGET attributes. Fixed APPLET handling where '.class' isn't present in the CODE attribute. Paragraphs squashed at the top of cells/pages - browser would insert white space before. Now append a ' ' to the end of History menu items to prevent the Wimp thinking the end of entries represents a keyboard shortcut (e.g. 'Home'). Netscape's handling of 'meta http-equiv="refresh"' is to start counting when the fetch has completed and everything else has died down. The browser will now not start counting until the animation handler is deregistered (so formatting is complete) to show similar behaviour (note that this checks the main handler, not the 'idle but returning to first frame' drift handler). URLs from requests for fetches by Plug-Ins are now relativised. Page width change tolerance prior to reformat upped from 16 to 32 OS units. Hoping to provoke a loosely connected bug with this change! TableOuter, TableInner and SeeFetches choices added to all Choices files, with appropriate loading and saving code in Main.c and Save.c. AuthorFTP and AuthorFSh messages added for FTP authentication, and dialogue handling code (the component in FetchHTML.c) updated to recognise an FTP fetch and alter the dialogue presentation appropriately. All Messages file version numbers taken up to 1.27 (20 Nov 1997). Following a UseNet suggestion, Ctrl+Toggle Size will increase the window size to fill the screen vertically only; horizontal size/positioning is not changed. Shift+Tab in the URL writable will cycle through alternative fetcher protocols (from both the Controls file and checking the fetcher modules are actually present). Hotlist doesn't require '://' in URLs when loading HTML, just ':/' - so 'file:/' URLs now will be reloaded correctly. History system rewritten completely. GHistSize and VHistSize options removed, and replaced by MaxSize and ExpiryAge. Now have global history menus with most recently visited items at the top, and local history menus which reflect the path that forward/back buttons would take. Browsers are robust to background expiry of the History though this is not implemented - date expiry and size checks are carried out on history_record only. This does mean that with two windows open one could have the history expired underneath it whilst another fetched, though; the code handles this and update toolbars (greying items) as necessary. It is possible to have the history limits so tight that even one entry will not fit and again the code copes with this, though values read from Choices are limit checked to ensure rather more useful results! Implemented 'Save' button in save dialogues. Remembers pathnames and just replaces the leaf now (hard coded exceptions for <Wimp$Scrap>... and <Wimp$ScrapDir>...) - it did before, but only if you'd typed the path in. Not many people did, given that you couldn't press Return or click on a Save button to use that path... In a similar vein, files of type Data or DOS will be checked for a '/xxx' type extension and the MimeMap module will be used to find a more meaningful filetype. If this can be handled, the file is loaded. This only works for files dragged to the browser - the behaviour with inline data in web pages will depend on the File module, and similarly, if File doesn't spot what is going on and claims that the object is data, the browser will just open a save dialogue for it. !RunD files taken up to 3072K WimpSlot. Hotlist's saved HTML page title wasn't internationalised - is now. This opened up a significant can of worms; on file write error, the file would never be closed, and if a caller of the save or load functions passed in a filename held in the global Messages lookup buffer then subsequent lookups in the callees would corrupt that filename. All sorted out now. Local (not very useful) or global (useful) histories can be saved as HTML, which opens up the possibility of sending your history to the hotlist by saving to it. Local and global histories can also be emptied, though this is probably not a feature that current release Desktop browsers need. Inheritance of local history and certain UI features is now done more or less for all cases where one browser window spawns another, too. Vertical alignment on images is rather less ropey than it was (e.g. ALIGN=TOP stands half a chance of working) but is still far from perfect. This was part of fixing a nasty little bug in Redraw.c's setting of an image position via. image_set_token_image_position, which was making (amongst possibly many other things) client side image maps fail. Image update where images had large borders was affected by a similar problem too (more cans with more worms...). Fixed image background filler functions; two problems. When cross referenced images were replaced by base images in a browser because the original owner was closing down, the original owner browser would stay registered with ImageLib. Fixed; secondly, when images were deleted from the image array causing those above to be renumbered, images registered with ImageLib did not have their numbers updated (this was the one that lead to the visible drop out of background images with PNGs on the Acorn Internet home page when there were two views of the page and the first was closed). This is now also sorted out.
-
- 13 Oct, 1997 1 commit
-
-
Andrew Hodgkinson authored
More reformatter code bugs fixed; this one regarding width of items. Any kerned string was overestimated (causing redraw bugs and caret position problems in forms, apart from other minor bits elsewhere) and the default size of a writable icon wasn't especially clever. Crude Plug-In support; just about manages Java, but can't fetch on behalf of Plug-In (for example). Had to change the default file access URL construction to be 'file:/' instead of 'file://', or local file fetches that reference Java applets won't work. This is in its very early stages, and is being checked in mostly so that various Choices issues can be worked on.
-
- 09 Oct, 1997 1 commit
-
-
Andrew Hodgkinson authored
!Run[D] files updated for new fetchers and GopherFetcher; protocols list in Controls updated for Gopher. Debug builds now require 2760K rather than 2560K. Font$... variables set if not already, in anticipation of font Choices work. Additional bits in Choices section of Res file tidied and some name changes (e.g. Netscape -> Navigator(TM)). Frames support option added to Choices. Grouped 'support_frames' under the Fetch Controls section and added support_object in Global.h; appropriate entries placed in the Choices files, and are read at startup. At present, though, only the frames support flag is implemented. For some reason, Menu was the button to use on history popups if you wanted to show URLs instead of descriptions (or vice versa, depending on Choices settings). Now, Select and Menu will show the Choices defined setting, and Adjust will show the opposite. History menus are built backwards, so local histories have the most recently visited pages at the top. Global history has still no real order to it, but this may be arranged later. Customer name changed to Customer by request. Customer browser now gets its own resources (SYSTEM=Customer), but otherwise is unchanged, with the Ursula build now giving the 'spinning acorn' with a Bookworm-style toolbar. This is used for the Desktop !Browse build. !Sprites[22] files updated to include GIF, JPEG and PNG sprites; !Run[D] files and !Boot files set appropriate File$Type_xxx variables. Sprites in all sprites files have been checked for unnecessary palettes, which have been removed where present.
-
- 18 Sep, 1997 1 commit
-
-
Andrew Hodgkinson authored
Image deletion routines rewritten; nasty animated GIF bug now gone (it kept trying to update the cross-referenced image in the browser that no longer existed, and I've no idea how animated GIFs ever managed to *not* blow up if a cross referencing browser was shut down; and I've tested this...). There are now as many image structures as there are total images in the visible browsers, and no more; cross referenced images in the to-be-deleted browser have their ownership moved to the cross referencer before the cross referencee is wiped, with any required fetches being transferred with them. Reformatter sped up a bit by getting rid of strlen on the main text field of tokens in all places bar one, where it is called extremely rarely. This means direct app-to-app transfer of, say, a 359K text file to the browser won't run like a drain as it tries to do strlen on a 359K string over and over again! Most of the time the performance benefits won't really be noticable, but on the above text file, formatting time went down from 290 seconds before the change to just under 7 seconds, a 41 fold speed increase or thereabouts (SA110 228MHz). MakeFile changed to force function name compilation on for debug builds (-fn in the DD...FLAGS); useful for certain functions such as register_null_handler, which can now output the name of the function being registered. ...Which helped show up some nasties in the animation handler and animation drift handler registration/deregistration process, which have been fixed (callers of fetchpage_release_nulls were unaware that the drift handler could be installed, and fragments of old code checking choices.anim_drift had a value other than 1 or 0 were still hanging around - bit tricky for a single bit item). Added support for VALIGN in table cells. Spotted a bug or two in the 'what token is the pointer over' routines as a result, and fixed them - the worst was in browser_line_at_y, which checked the y coordinate was below the given one [the mouse], but didn't check the line height to see if the given y coordinate was *within* the line, rather than just above it. Never used to matter pre-tables, but a definite concern once multiple line arrays can exist on one page.
-
- 12 Sep, 1997 1 commit
-
-
Andrew Hodgkinson authored
As warned in the last log, pretty much all event codes and component IDs have now changed along with many of the names, to provide a consistent name and numberspace for events and components. This also minimises number clashes (e.g. as was, the Save File origin when opened from a Hotlist menu with an already-used component ID). To get full details on this, please carefully read through TBEvents.h. Res files, Sprites files and Messages files have been updated again both due to the above, and routine additions (e.g. message support for a few Hotlist bits and pieces). !Run[D] files updated for FTP 0.11 and HTTP 0.36. In the Makefile, the Customer objects list was missing Save - must have moved something when I should've copied it, when adding in SaveFile or SaveObject in all probability. Now fixed. Couple of other bits and bobs fixed in the build environment (e.g. stuff saying !Argo instead of !Customer). Oh, and I've altered the MakeFile copy options again to the best compromise I can come up with. Newer is turned on for everything except !Run[D] and !RunImage, since both of those change between debug builds - otherwise if you'd built debug and non-debug versions, it was not possible to switch between them - one version would have the newer timestamp and thus never get overwritten. The default hotlist has had a few items added - that'll be about the end of it, I think; there's more than enough stuff in there now. Saving of the hotlist from the document menu and of URI files, directories and selections from the hotlist menu tree is now implemented - this new save system rocks... Oh, and you can save all images and backgrounds as sprites. Saving of items with Shift+Click to other applications directly now works, and is robust. Unique Scrap filenames are used, with data load bounces (e.g. if some pra - er, person quits the app they're sending to) working correctly - that is, give an error, keep the file, rename it to something safe, and open the directory it lies in. As opposed to normal app-to-app bounces, where the scrap file is deleted (see PRM 3-254). This means you can now look at README files in FTP sites, say, without using a disc intermediate. Or you can send pictures straight to ChangeFSI, fetch HTML links into editors, and so-on, and so-on - it's all very funky. Known problems include the ambiguous 'invalid component ID' instead of 'file open' for *normal* (straight to disc) shift+click saves, and I think I'll introduce a unique name guarantee of some sort to stop 'file open' in the first place. Odd that the really tricky part (app-to-app) should be least likely to suffer from this!
-
- 09 Sep, 1997 1 commit
-
-
Andrew Hodgkinson authored
Only the Browse resources are currently valid. Added Utils.Icons - has a few archives inside containing the resources (well, some of them) used to build various UI sprites for various builds. Archived because these are unlikely to change much, and putting them on CVS was a move to, well, archive the stuff... SaveDBox objects vanquished and requirements in !Run[D] files removed. The data save code fits much more neatly in amongst the data load protocol stuff now (with the slight exception of having to split the SaveObject source into SaveObject and SaveFile - the former handles multiple persistent dialogues for Shift+Click on links and the like, the latter handles 'one at a time' transient dialogues for save source and similar). Export Link is now supported, too, and writes a 'proper' version URI file. You'll find that double-clicking on old URI files will work as the URI handler picks them up, whilst new version ones don't; however, dragging onto the browser will only work with new version files. Note that support for saving and loading URL files (ANT suite stuff) is present too, so old URI files can be typed as URL files if you want to keep them working without modification - the URI handler itself will hopefully support the defined URI file format soon; double-clicking on old URI files will stop working at that point. Note there are *lots* of changes in every Res file to support all this. This may all seem a bit pointless to some, but the changes do in fact make it very easy to add new save dialogues all over the place. Certainly much easier than with the previous system, anyway. In fact, post script, image 'save as sprite' took about half an hour, which I hope proves the worth of the new system. Merged in newer hotlist code with support for drag cancelling with Escape (all relevant Res files appropriately updated) and cancelling scrolling when you've reached the window scroll limit. Had to move some of the Wimp message handling stuff to the central Protocols source, as clashes were occuring, and also the hotlist routines were using independent saving code - a lot of duplicated effort. This was fair enough as at the time the Hotlist code was written, the Save code couldn't be used in the way it is now. New Save Source and Print buttons on the toolbar of some builds. Phoenix Sprites file made more efficient - the Acorn base section has been split from the animated upper region. Browse build has a new grey fade sprite at the back, which is less grainy than the previous one and only uses 16 colours (with a 16 greyscale palette). Not really a bug, bug the routine to start an image fetch for INPUT TYPE=IMAGE forms items only did so if the src field (or equivalent, for this tag type) was non-NULL. In fact, you should always call image_new_image and let that handle the rest, otherwise other sections of the code will fail as they try to obtain an image number for a given HStream and get -1 back. This problem only generally manifested itself when loading an HTML file to the browser straight from an application, as many src fields become NULL when the relativisation routines find nothing to relativise to... Authentication got broken somewhere along the line - this has been fixed (in HTMLLib and the browser). Ctrl+Click on a cross referenced image updates *all* copies, not just the one with the image data attached. Next big step: Rip up TBEvents.h and rebuild that whole approach somewhat. To all those working on the code, my apologies but this means all Res files will receive a very large number of alterations and there will be extensive code changes too (mostly naming convention stuff), in more or less all source files. I am endeavouring to ensure that the new numberspace convention does not clash with the work being done by Kevin on internationalisation.
-
- 02 Sep, 1997 1 commit
-
-
Andrew Hodgkinson authored
This version is being checked in because the Hotlist manager in the test build provokes a Wimp bug. All the variant resource files are out of sync and there are several outstanding bugs in the main code, so I'd personally avoid this build like the plague unless you're mad enough to want to examine the Wimp problem ;-)
-
- 31 Aug, 1997 1 commit
-
-
Andrew Hodgkinson authored
Created Protocols source file and moved a lot of message handling from handle_messages - the latter now serves as a high level distributor to lower level functions in Protocols. Incidentally, URL files (as used by the ANT suite) can be loaded by dragging to the browser in the same way as URI files - Not A Lot Of People Know That, etc. Merged new hotlist display type Res file to existing resources, added support for DataSave message so items can be dragged from the hotlist to a specific window (RAM transfer for URI and URL files; ScrapFile for HTML and Text but deleted afterwards and there are appropriate guards to stop Reload just saying 'not found'; images run through ScrapFile and there is no choice but to leave them there and do a conventional fetch). All !RunD files now give a WimpSlot of 2304K. Some small changes to the Argo and Ursula build Res files to make the menu trees more sensible. Controls files now take 'file:/' instead of 'file://' in Protocols section. Definitions at top of URLutils.c *not* altered, as then you end up with invalid URLs - so it will accept 'file:/', but always generate 'file://'. This is because some browsers exports 'file:/'. Sigh. make_no_[..._]memory_error functions now return a _kernel_oserror * rather than void. It's always &erb returned, but it enables users to use a more elegant 'return make_no_memory_error(1);', say, rather than something like 'make_no_memory_error(1); return &erb;'. I obviously should've written it like that at the outset, but never mind. All callers have been appropriately updated. The urlutils_leafname_from_url function now replaces illegal characters (A7000 Welcome Guide p54...) in the leaf with legal alternatives. Internal URL scheme is now a bit cleaner, with everything properly defined in URLutils.h. All references to http:, file: and ftp:, with or without a following '//' use the definitions in here now. More tidying and some reorganising of Hotlist source. Auto-open delay is now a Choices item. Some dependencies on statics removed (e.g. the counting functions don't accumulate into the global item_number now). The redraw functions used Wimp_TextOp - oops, so this has been amended to use whatever is supported on your Wimp. This is now in a new function (utils_text_width()), which the History menu routines also use (there was a bug in the width routine there anyway, which is therefore fixed in passing). Several other routines used Wimp_TextOp directly too, and they have been altered to use the new function as well. In hotlist code, one of the larger changes is in the API to hotlist_draw_r() (formerly _hotlist_draw()) which now takes item widths and heights as parameters - discovering these is quite slow, so doing it every time the function calls itself recursively is a little less efficient than passing the values in from elsewhere. Note that underscore prefixed functions are being slowly renamed to _r suffixed functions, to match the convention established by Tony Cheal with is table routines. This makes it much more obvious when something is recursive, as the same naming convention is used in every browser source file. Finally, note that I intend to ditch SaveDBox and use an alternate window with manual control of the messaging in Protocols.c. This will allow various improvements which at present the SaveDBox operational methods preclude. I'm going to have to do at least an alternate Window object for the SaveDBox module to use soon in any case. Getting rid of SaveDBox will help reduce, if only slightly, demands on the RMA.
-