1. 04 Dec, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Fixed some glitches in the modified status bar code (e.g. status inference... · dff9a8ae
      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.
      dff9a8ae
  2. 02 Dec, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Implemented Message_PlugIn_ReshapeRequest, Message_PlugIn_Status and · 960e879c
      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).
      960e879c
  3. 27 Nov, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Image history can be emptied from the History menu. · 499a3422
      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...).
      499a3422
  4. 19 Nov, 1997 1 commit
    • Andrew Hodgkinson's avatar
      This is an intermediate check-in to allow work on Choices for the new table... · 7caf92e2
      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.
      7caf92e2
  5. 22 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      fetch_get_raw_data will notice if up->fetching is zero and return a 'finished'... · 3a920561
      Andrew Hodgkinson authored
      fetch_get_raw_data will notice if up->fetching is zero and return a 'finished' status rather than trying to continue reading data for the fetch. Fetches should never fall through that far but at least it will cope if they do.
      
      3D table borders are now supported. 2D borders are used if the
      inter-cell spacing is too small to fit the borders in (display resolution
      dependent) - the external table border is 2D if the internal borders are,
      else 3D. For cellspacing of 0, internal table borders must plot over the
      outer edge of pixels inside the cell; for all greater spacings, the
      borders take up all or part of the gap between them. The external border
      will always fit around the outside of the cells, including the
      cellspacing value in the gap between the outer cells and the border.
      
      Anti-alias colour for placeholder ALT text was incorrect. Fixed.
      
      I'd changed 'point' to 'points' in some of the Font Choices dialogues;
      now changed back to 'point'.
      
      The routine to find out how large an otherwise unsized object or image
      placeholder based on its ALT text has been centralised in Reformat.c,
      so that the image and object routines can both access it without
      code duplication (this means non-image objects will now have the correct
      size if they contain ALT text, rather than assuming a standard default
      size as before). ALT text in images that were also objects was never
      plotted either, though the placeholder size would have been correct.
      This has been fixed.
      3a920561
  6. 20 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Weird - the line registering the ENavigateToBeShown event disappeared from · 211492c2
      Andrew Hodgkinson authored
      Main.c, so the last log was incorrect; Navigate menu items wouldn't have
      been greyed out. Probably a(nother?) CVS update screw up on my part; now
      fixed. This sort of thing is happening far too often...
      
      Font manager would crash in system font or if a font face was not found
      in the previous release - that hacky business of returning weird font
      handles when system font is to be used instead ensured a rather less than
      valid array reference on behalf of fm_claim_basic_typefaces.
      
      Added in a few more calls to the 'check the button bar' routines, to
      ensure that things like Stop are greyed/ungreyed when needed.
      
      Cellpadding code could lead to rmarg overlapping lmarg, or the sum
      being greater than dwidth, or something like that (!) in the reformatter.
      Anyway the results were unpleasant; this has been sorted out by range
      checking right and left margins w.r.t. display width in the relevant
      section of the code.
      
      People who specify 'td width = 2000' in tables expecting to get something
      sensible now do, though I was half inclined to leave it alone... I can
      only assume that they don't know about % specification or it didn't
      work in their browser at authorship time, and the huge width served as
      an attempt to get the table to fill the available window width. Anyway,
      the table reformatter spots when the maximum width a cell requires is
      less than half of what it asks for, and ignores the width specifier if
      this is the case.
      211492c2
  7. 18 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Sorted out Res files, including fixing position of 'bytes' label in one of the... · 20f5e4ab
      Andrew Hodgkinson authored
      Sorted out Res files, including fixing position of 'bytes' label in one of the Choices dialogues (I'd missed it out of a selection when everything else got moved down a bit). Unfaded Enc_Chinese menu entries, made sure text labels were wide enough for system font, changed 'Apply' on Choices dialogue to 'Set', and added ^K to hotlist keyboard shortcut lists.
      
      Print Setup (i.e. Print dialogue) buttons all set to 'local', so the
      stupid Toolbox doesn't close the dialogue and lose the caret before I
      can see if it was in there to start with...
      
      256 colour hotlist sprites taken back to standard 16 colour versions,
      since there's a significant speed penalty on slower machines. The
      testbed browser still has the 256 colour versions so the designs aren't
      completely lost.
      
      Changed access settings to exported builds to wr/r - lr/r was really getting
      on my nerves whenever I wanted to try something temporary out.
      
      View source, save source and print handlers would all try to work if
      there was no source to act on - despite the fact that toolbar buttons
      would be greyed out form them. This is fixed.
      
      The Navigate menu has components greyed to match the toolbar state,
      when opened. It isn't kept up to date dynamically, though this shouldn't
      really be a problem (reopen the submenu...). As part of this, finally
      sorted out conditions for the Stop button to be greyed, or the
      GoTo/Go/Stop tristate to be at 'Stop' versus 'GoTo'.
      
      Deferred reformatting is now disabled for external image fetches.
      
      Browser-local client pull flag removed; hitting the Stop button simply
      cancels any null handlers working for it. That way, client pull switches
      back on in passing at the next fetch (it was never really switched off).
      So to stop client pull, hit the stop button at any point.
      
      Done CELLPADDING attribute; cellpadding field in reformat_cell (Global.h)
      is redundant since the table token is accessible from there, and so it has
      been removed. CELLSPACING support also added.
      20f5e4ab
  8. 06 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Calling HtmlEndParse at the end of html_get_next_token and setting up->context... · 2e86b9d4
      Andrew Hodgkinson authored
      Calling HtmlEndParse at the end of html_get_next_token and setting up->context to NULL was wrong; fetch_fetcher would end up recalling html_get_next_token later which would then call HtmlParse even though the document parse had just finished! The HtmlEndParse call has now been moved to fetch_stop.
      
      Altered reformatter to claim fonts inside a browser, rather than
      claiming them for nothing and losing them afterwards.
      
      Got rid of TAG == TABLE and ISBODY tests, replacing with tagno == TAG_TABLE.
      Removed all references to TD, TH, TR and TABLE in the style word.
      2e86b9d4
  9. 18 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Support for ANT URL broadcast message added. · 5a494095
      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, ...
      5a494095
  10. 31 Aug, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Created Protocols source file and moved a lot of message handling from... · f3e8124f
      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.
      f3e8124f
  11. 18 Aug, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Updated Makefile to work better in folding text editors. More or less rewrote · c46c55b2
      Andrew Hodgkinson authored
      Limits.h, and ensured consistent comment styling throughout all sources.
      Fetch.c/h split to Fetch, FetchHTML and URLveneer. URLstat.c/h produced to
      cope with this. OpenURL and Find sources created from bits in the Windows
      source file that shouldn't have been there... These will get filled out
      shortly. Note that a few functions in Fetch are due to be renamed and moved;
      probably to Tokenutils.
      c46c55b2
  12. 18 Jul, 1997 1 commit