1. 31 May, 2000 2 commits
    • Andrew Hodgkinson's avatar
      64-wide comments adopted throughout. All headers protected against multiple... · 1c9291d7
      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
      1c9291d7
    • Andrew Hodgkinson's avatar
      created by srccommit. · 75374a51
      Andrew Hodgkinson authored
      75374a51
  2. 03 Mar, 2000 2 commits
    • Andrew Hodgkinson's avatar
      Authorisation works for image fetches. Previously authorise_authorise assumed... · 19750522
      Andrew Hodgkinson authored
      Authorisation works for image fetches. Previously authorise_authorise assumed any check was for a browser page. Now looks at the dialogue box client handle, which is 0 for the page or a fetch handle for an image.
      
      The urlstat structure this relates to now has lasttoken filled in for
      the token the image represents, which gives the URL to which the
      user name and password relate.
      19750522
    • Andrew Hodgkinson's avatar
      Further printing tweaks. Font colours inside anchors now work (must be built... · 2eacb2ce
      Andrew Hodgkinson authored
      Further printing tweaks. Font colours inside anchors now work (must be built with the 02-Mar-2000 HTMLLib or later). Event log won't show guts of internal URLs for just-born browser windows if displaying the list by URL. Empty Location headers don't redirect down zero page and give a nasty internal error; raise "no fetcher service found" instead.
      2eacb2ce
  3. 01 Mar, 2000 1 commit
  4. 25 Feb, 2000 2 commits
  5. 10 Sep, 1999 2 commits
    • Andrew Hodgkinson's avatar
      Another tag name documented · 4ce93485
      Andrew Hodgkinson authored
      4ce93485
    • Andrew Hodgkinson's avatar
      New overview document in Docs, requested by some Pace people. · 7727e69b
      Andrew Hodgkinson authored
      Printing engine will attempt not to seperate headings from non-heading
      items. If the current line is a heading and the next is not, and falls
      off the bottom edge of the paper, then both lines will be carried over
      to the next page. Similarly for DT and DD items. Maximum line height to
      push rather than split is now altered to 2/3 of page height (was 1/2).
      
      JavaScript fix; a URL's "protocol" value should include a ':' at the end.
      7727e69b
  6. 02 Sep, 1999 4 commits
    • Andrew Hodgkinson's avatar
      c5831bca
    • Andrew Hodgkinson's avatar
    • Andrew Hodgkinson's avatar
      Removed svcprint fron objects list of non-debug files and put svcprint.c back... · 4b72e9a0
      Andrew Hodgkinson authored
      Removed svcprint fron objects list of non-debug files and put svcprint.c back to its conditional compilation behaviour.
      
      Note that as usual, this check-in gives an incomplete set of resources.
      Only the Phoenix build will be reasonably up to date.
      4b72e9a0
    • Andrew Hodgkinson's avatar
      Long overdue check-in of intermediate browser build, from continued "out of... · 97f8ad76
      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.
      97f8ad76
  7. 30 Mar, 1999 1 commit
    • Andrew Hodgkinson's avatar
      Intermediate check-in; building a browser from this gives you something... · b1a5e090
      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.
      b1a5e090
  8. 24 Feb, 1999 1 commit
  9. 14 Oct, 1998 1 commit
  10. 13 Oct, 1998 1 commit
    • Andrew Hodgkinson's avatar
      Tweaks to export rules in Makefile - ResJ source for JavaScript builds, all of... · 43e7781f
      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.
      43e7781f
  11. 06 Oct, 1998 1 commit
    • Andrew Hodgkinson's avatar
      Another intermediate version, rather more stable than the last I hope. · 6ff9e19e
      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).
      6ff9e19e
  12. 23 Sep, 1998 1 commit
    • Andrew Hodgkinson's avatar
      Another intermediate check-in, resources may not be up to date; items most... · d78a1df8
      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.
      d78a1df8
  13. 10 Sep, 1998 1 commit
  14. 07 Sep, 1998 2 commits
    • Andrew Hodgkinson's avatar
      Forgot to mention last time: The frames code changes in Frames.c mean the... · d570a90f
      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...!)
      d570a90f
    • Andrew Hodgkinson's avatar
      Everyone else seems to be checking lots of stuff in lately, so I've decided to... · 25b4a552
      Andrew Hodgkinson authored
      Everyone else seems to be checking lots of stuff in lately, so I've decided to join in. This is an intermediate check-in and so not all resources etc. will be up to date. You should be able to make Phoenix and a debug build out of it. As a reminder, to make a JavaScript build:
      
       * Build JSLib and NSPRLib. Recommend you leave -DUSEMEMLIB in there (as
         used by default) so you can watch it leak into a dynamic area... :-)
         If you do this, you'll need to build MemLib too, of course. If you
         do NOT use MemLib, *undefine JS_USING_MEMLIB in Main.c*!
       * Run !MkClean. This now strips dynamic dependencies from the MakeFile
         automatically, to save you having to do it yourself.
       * Run one of the TaskObey files with the "J" suffix, e.g. !DeskBrwsJ -
         this uses the same .o directory for object files and exports to the
         same position in the Targets directory as the non-JavaScript build,
         but it does produce a unique binary in 'abs' and symbols table in
         'syms'.
       * Sourcing an appropriate !Run (with increased WimpSlot value), !Boot
         and About resource is done automatically.
       * Some, but not all of the !xxxD (debug) TaskObey files will make
         JavaScript versions in passing - check the JSUFFIX value on the Make
         command line parameters in the file.
      
      This'll only work on RISC OS 3.1 due to the use of MemLib.
      
      Here's the change list:
      
      Included MNG icons in sprites files; added Sprites23 for some builds.
      Added in ANT URL file icon (b28) derived from URI file icon, because
      the Save dialogue can need it.
      
      No, you do *not* need to define the same keyboard shortcuts in each
      frame since the ancestor keeps the input focus and we've basically
      dropped non-nested Wimp support. Maintaining no less than 4 lists of
      identical shortcuts was a pain. Some Res files now only have the
      lists in the main browser window and button bar objects (these two
      are both required still).
      
      Ursula build Markers button arrangement changed from 1x3 horizontal to
      2x2 tilted, as in Phoenix, by popular demand.
      
      Couple of hotlist bugs fixed; dragging an item and deleteing it with
      Ctrl+X didn't terminate the drag, and deleteting an item underneath a
      menu opened for it didn't close the menu.
      
      'SendReferer' option added to all Choices files, all set to 'always'.
      Put just beneath 'Clone' as it refers to header items, though really,
      both Clone and SendReferer should probably be in the "Fetch controls"
      section rather than "Multiuser environments and proxying"! Front-end
      control of this is available.
      
      In image_export_original, save_save_source, save_transfer_source and
      save_save_object, flex_set_budge(0) was called to lock the heap but the
      return value wasn't stored. flex_set_budge(1) was then used to unlock
      the heap. All calls now remember and restore the old value, which is
      both safer in case one calls another and allows the flex_set_budge
      call in Main.c to have an application-wide meaning, as intended.
      
      Some restructuring to the data load and RAM transfer sections of
      Protocols.c; remote hotlist builds wouldn't allow files to be loaded
      to browser windows before, and can now drop URL, URI or text files to
      the Open URL dialogue.
      
      New option "MinimumFontSize", lets the 'size' attribute of the 'font'
      element be overridden. Default value is 1, to allow the full range of
      values for the attribute. Setting to 7, for example, would give font
      size 7 text at all times. Another new option, "ToggleOnXOnly", to
      make Toggle Size only extend the window vertically (with Ctrl then
      being used to toggle to genuine full size, rather than vice versa).
      All Choices files updated to hold both of these options; only the
      first has front-end control available (see debug build Res file).
      
      JavaScript Document object exists; frames array etc. working. Can now
      just about use "http://www.acorn.com/~ahodgkin/jschain/" but it does
      abort after a bit - problems with frames again, I suspect. Is is pretty
      slow, too. Can now press Escape to terminate a script.
      
      Main.c erroneously referred to Controls file entry "StopWebServe" as
      "StopWebProxy". Fixed.
      
      Keyboard shortcuts to raise SaveFile are now possible in a general sense;
      the code before was in the ToBeShown handler and just checked for a parent
      component of -1. It then assumed "save frame HTML source". Now there's the
      savefile_raise_from_shortcut function, which together with the seven new
      event codes in SaveFile.h allows saving of HTML source and frame location,
      export of links, images, backgrounds and the page as text or draw, to all
      be invoked by keyboard shortcuts. Some Res files have some of these defined.
      
      In reformat_check_height, the first check to see if setpara should be set
      references a field in tpLast without checking if it is NULL. Whilst the
      'line > 0' check should mean that tpLast wasn't NULL anyway, a direct
      call to the function from outside of the reformatter might have tripped
      up on this - the check for tpLast != NULL is now made.
      
      Adjust-click on close icon in window showing file: URL attempts to open
      the parent Filer window.
      
      Reformatter used to try and find a selectable token if keyboard control
      was enabled in a really stupid place - could make reformatting become
      very slow if no selectables were present, especially if the page had a
      few tables on it. Preprocessor now does this (since it goes through all
      of the tokens anyway), the reformatter just doing a last check to ensure
      no frames have obscured the selectable and if so, it tries to move it.
      Done in the reformatter as generating a line array implies the data really
      is visible.
      
      Ctrl+Tab URL completion now builds a full list of matches from the hotlist
      and history and can cycle through them (Ctrl+Shift+Tab stepping backwards).
      
      Will give a real error rather than just "Data Abort" if it goes wrong
      now. Someone somewhere is setting bit 30 of the error which confused
      the replacement signal handler. Flag bits are now masked off (as they
      should've been to start with).
      25b4a552
  15. 23 Jul, 1998 1 commit
    • Stewart Brodie's avatar
      Added capability to send Referer headers, together with new options to allow... · d0afdd82
      Stewart Brodie authored
      Added capability to send Referer headers, together with new options to allow this to be sent: a) Always, b) Never, c) when the URL referred to is an http URL.  Default is c.  There is no frontend editing capability for this option.  This addition means that various counters and sites that rely on referer to indicate a resource upon which an operation is to be carried out will now work (eg. rating a web site on Geocities).
      d0afdd82
  16. 10 Jul, 1998 1 commit
  17. 09 Jul, 1998 4 commits
    • Andrew Hodgkinson's avatar
      3a86f9e2
    • Andrew Hodgkinson's avatar
      Check-in of Browse v2.06; using very small log file to try and avoid · 38b94c2b
      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.
      38b94c2b
    • Andrew Hodgkinson's avatar
      Check-in of Browse v2.06; using very small log file to try and avoid · ddadb4f5
      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.
      ddadb4f5
    • Andrew Hodgkinson's avatar
      Check-in of Browse v2.06; using very small log file to try and avoid · bb4e3476
      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...)
      bb4e3476
  18. 02 Jul, 1998 3 commits
    • Andrew Hodgkinson's avatar
      By request, an intermediate 2.06 check-in. This is not a "proper" release and... · 72d09cfe
      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.
      72d09cfe
    • Andrew Hodgkinson's avatar
      By request, an intermediate 2.06 check-in. This is not a "proper" release and... · 334a6d84
      Andrew Hodgkinson authored
      By request, an intermediate 2.06 check-in. This is not a "proper" release and will need some Makefile fiddling etc. to swap between JavaScript and standard builds and so-forth. The Resources files are not all up to date; only Phoenix and the testbed Browse are more or less current. Right now,
      
      JavaScript doesn't work, SO COMPILE IT OUT. But to make a JavaScript build
      for a larf -
      
       * Build JSLib and NSPRLib. Recommend you leave -DUSEMEMLIB in there (as
         used by default) so you can watch it leak into a dynamic area... :-)
         If you do this, you'll need to build MemLib too, of course. If you
         do NOT use MemLib, *undefine JS_USING_MEMLIB in Main.c*!
       * Run !MkClean
       * Add -DJAVASCRIPT to DFLAGS in MakeFile
       * Strip dynamic dependencies from MakeFile
       * Rebuild Phoenix or the Desktop build of Browse
       * In the exported copy, increase the !Run file WimpSlot value; either
         use the appropriate symbols table in 'syms' or use about 960K for
         non-debug, 4600K for debug builds.
       * If the exported copy has an About resource, edit the HTML file inside
         and uncomment the line about JavaScript.
       * Reverse most of the above to rebuild a non-JavaScript copy! :-O
      
      I hope to have much of the above automated soon (either by a new target,
      or preferably hackery with the MakeFile).
      
      Here's the change list:
      
      References to 'Phoenix' removed from Ursula build Res file Choices dialogue
      help text (only a couple of them). Cookie value display made taller in the
      Cookie Query dialogue (prompt field shrunk to accommodate this).
      
      Yikes - ever since markers, "reformat page to fit paper" hasn't done
      anything when printing; the reformatter reset the HTML page limits to
      the window size at startup! Fixed. Using markers, you can now also reformat
      from the top of the visible area and still reformat to fit the paper; the
      print dialogue used to grey out the reformat option in this case. It still
      does this when printing to the bottom of the visible area, though.
      
      You can drag text files to form writables (single and multiple line,
      but NOT password items (deliberately; it's trivial to add this but I
      think it'd be a bad idea)). Normally, data is appended up to the limit
      specified by the field (unlimited for multiple line items). Holding
      down Ctrl replaces the current value entirely (still, again, limited
      by maximum field length). The caret is moved from wherever it currently
      is and placed at the end of the added data. Note that you *cannot* insert
      in the middle of text by placing the caret and dropping.
      
      Things can get distinctly sluggish when you start dragging many Ks of
      text file into a multi-line writable, so the keyboard buffer is cleared
      for any input code < 32, equal to 127 (backspace - this one is a little
      less clear cut, but I think it's probably worthwhile) and anything
      > 255. This way, when typing, you don't lose characters; but when moving
      around, you don't find the cursor "running away" from you.
      
      Multi-line writables (text areas) would redraw a vertical column taller,
      or horizontal column wider than the element covers itself should the
      user scroll enough in any one direction (e.g. Ctrl+Up or Ctrl+Down to
      go to the top or end of the area). The code working out how much of
      the area to redraw by the number of lines or columns moved didn't ensure
      it kept within the area. Because an update rather than force redraw is
      done, with background blending turned on text around the area would
      "thicken". Now fixed.
      
      Form menu entries have (at long last) a space appended to each one, so
      the Wimp doesn't get confused and think something is a keyboard shortcut
      when someone expresses "Formula 1" as (say) "F1"... Now fill in the menu
      width entry from having read the actual VDU character width and spacing,
      not that anyone uses the original RO 3.1 Wimp with Browse any more! (The
      code existed elsewhere anyway, so it was trivial to add).
      
      Ctrl+U in a multi-line writable clears the contents of the line the caret
      is on, but doesn't delete the line itself. Ctrl+J now does this.
      
      DDFLAGS doesn't set ALIAS_URLS - Customer build has this now.
      
      Tiled images were being plotted in the wrong place in some modes (a '+4'
      in the starting y coordinate calculations in the three filler / tile
      functions should have been '+wimpt_dy()').
      
      MessageTrans lookup buffer extended from 256 to 320 bytes (Limits_Message
      in Limits.h), mostly to support Messages files alterations for the About
      page.
      
      Spelling error in URI handler menu for Desktop (also known as Ursula,
      though this is now something of a misnomer) build corrected. There was
      a missing 'l' in 'handler'). StartProxy setting in Choices was 'no' and
      is now 'yes'.
      
      Downloading files of sizes over about 20Mb would cause an overflow in
      the % calculating code ("(fetched * 100) / file_size" as opposed to
      "100 * (fetched / file_size)" with (float) and (int) casts as required.
      Percentages now shown to 1dp; Mb displays to 2dp where the file size is
      not known.
      
      Download speed is now indicated in Small Fetch windows. Increased the
      delay between progress indicator updates as part of this, and modified
      Res files to cope (byte counter needs to be enlarged quite a lot). It
      isn't shown in normal browser windows because the enlarged byte counter
      looks daft in that context (normally, there's never enough information
      to fill even half of it).
      
      Adjust-click on an unlinked part of a client side image map could give an
      invalid object ID error from accidentally using the return value of a
      previous Toolbox call instead of the return result of a call to a fetcher
      routine - because given it had a NULL pointer for the URL, there was no
      such call made. Corrected in windows_create_browser() and
      handle_link_clicks() won't try to do this in the first place anymore.
      fetchpage_fetch_targetted() will also warn of such NULL pointers in
      TRACE builds.
      
      Submitting a GET form back to the same URL would lead to the query
      string getting appended to the fetch URL over and over. form_build_data
      now checks to see if there's already a query string in the submission
      URL for GET methods and if so, strips it. fetchpage_new_add will do a
      similar thing in the case of the additional data starting with '?'.
      
      When following a link, if RefoKeep was 'yes', the page could sometimes
      jump to a pre-stored scroll position; it was down to the resize routines
      remembering it, but if windows_check_reformat() or windows_remember_size()
      didn't actually do a reformat the position was not forgotten. It is now,
      so this jumping should no longer occur.
      
      Single character leafnames (e.g. "a.class") used to be reported just as
      "Index" in a save dialogue for the object. Fixed.
      
      <P> elements could fail to work as expected in some circumstances. For
      example, there would be no gap above '<p> <b>...' - the <b> text doesn't
      have the <p> attached, the tag before it does. However, the white space
      on this tag gets stripped so it ends up with a NULL text field. This
      means that paragraph space is allocated but the text height for the line
      thus far is zero. This has been fixed through special case code in
      reformat_check_height.
      
      browser_base_url() function added, which through browser_base_callback
      can supply a base URL for the current document.
      
      In-page references (URLs with '#something' in them) would fail if the
      page contained a BASE tag which pointed elsewhere (that is, the page
      would be fetched from its base URL and references would work thereafter;
      not very useful for developing sites on your local hard drive). Fixed.
      Fixed also the problem where in-page references would fail once after
      a forced reload.
      
      Several ultra-stupid bugs in image cross referencing code within
      image_update_image fixed:
      
       - No longer redraws *every* page with the same background when
         *any* of those backgrounds are updated; just if the page with
         the actual image data attached is updated. Doh!
      
       - Similarly, no longer updates every copy of an image when asked
         to update any of them, only when the one holding the actual image
         data is updated.
      
       - In the above cases, image array a scanning is avoided wherever
         possible now, whereas it used to happen for any update.
      
      Animated masked GIFs will no longer flicker briefly when they are first
      viewed on a page.
      
      Hacky but useful optimisation in Images.c. Local compilation option
      'FAST_TOKEN_REFERENCE' controls whether or not the flags word of each
      HStream associated with an image_info struct is used in part to store
      the image's array index. If so, there's no array scanning to do - this
      signficantly speeds up cross referenced image handling. It's still
      rather undertested "but it seems to work". The number of bits used for
      the array index is controlled by FAST_TOKEN_REFERENCE_SHIFT, and is
      currently 20, giving around a 1 million image limit on the browser
      and leaving 12 bits for genuine flags (only 3 currently used).
      
      If an error occurred when Message_PlugIn_Opening was received, Browse
      would exit early with the message - before it removed the plug-in from
      the queue, thus stopping other launches. The error is now reported and
      then the item is still removed, preventing this problem.
      
      The BASEHREF entry in the parameters file used for plug-in launching
      will now give the contents of any BASE tag in the document before
      looking at the display URL, then the fetch URL.
      
      When a new page is visited or a browser window closed, any in progress
      fetches for plug-ins are abandoned. They weren't before, which caused
      all sorts of problems later on. In addition, any pending plug-in items
      in the queue may not have been correctly flushed (the first item may
      have been left behind), which can cause mis-firing of the plug-in
      engine as it picks up outdated queue items and attemps to launch them.
      This has also been fixed.
      
      Fixed problem with asynchronous delivery and reception of the Stream_New
      plug-in protocol messages, which previously would be incorrectly handled -
      Browse assumed that, as with plug-in launch, only one fetch would be running
      at a time (or the message passing between plug-in and fetch window would
      occur synchronously). This is not the case, and a variety of problems could
      be seen if the system broke down. The most obvious symptom is in Scrap,
      where Browse used to leave behind "BTFxxxxx" files on quit.
      
      Intermittent "Invalid object ID" errors cured; the Find dialogue box
      handler wasn't clearing its remembered ID, and since Find is a shared
      object, that object could get deleted without the Find code
      realising.
      
      Corrected mis-spelling of "Parameters" n comment block at top of
      about_copy_info_file(), which fouled up the documentation auto-generation.
      
      BuildSHelp will recognise functions indented by 2 spaces, assume they're
      indented because of a wrapping #ifdef, and put 'Conditionally compiled.'
      under the name of any such functions. It no longer outputs broken manuals
      if no functions are found in a source file. More robust to odd input due
      to extra EOF checking.
      
      New utility BuildHTML, to generate HTML pages in the same manner as
      BuildSHelp, created from BuildSHelp. This was done to support Ferrotec
      who'd like StrongHelp-like documentation but don't want to be tied to
      Acorn machines (and haven't got any at the time of writing anyway!).
      HTML was agreed as a good, easy format to go for.
      
      Have begun to implement JavaScript support. Updated !Boot and !Run[D]
      files to define File$Type_F81 and Alias$@RunType_F81 (0xf81 is a
      JavaScript script file, 'JSScript', MIME type application/x-javascript,
      common filename extension '.js'.). !Sprites[22] files have the relevant
      file icons added. Messages files extended with various tokens for
      miscellaneous error messages, error box buttons etc. Created a Browse
      About: page section based on the JavaScript filetype - we at last
      credit the use of the JPEG group software, LibPNG, etc.
      334a6d84
    • Andrew Hodgkinson's avatar
      By request, an intermediate 2.06 check-in. This is not a "proper" release and... · 46ea6e35
      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.
      
      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.
      46ea6e35
  19. 21 Apr, 1998 1 commit
    • Andrew Hodgkinson's avatar
      Updated Hotlists - USNA HTML resources and 6025 TV room pages had moved, · 7a466923
      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.
      7a466923
  20. 16 Apr, 1998 1 commit
    • Andrew Hodgkinson's avatar
      All !Run[D], Choices, Messages, Controls and Res files are up to date. · c55f6452
      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.
      c55f6452
  21. 26 Mar, 1998 2 commits
    • Andrew Hodgkinson's avatar
      One day, probably far into the future, I'll actually remember to 'cvs add' new... · 3018e00c
      Andrew Hodgkinson authored
      One day, probably far into the future, I'll actually remember to 'cvs add' new source files before checking everything in.
      3018e00c
    • Andrew Hodgkinson's avatar
      This is NOT a 'final' version of anything in particular. I'm checking it in as... · e0b9653a
      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...
      e0b9653a
  22. 20 Mar, 1998 3 commits
    • Andrew Hodgkinson's avatar
      Forgot this, too... · c5ee1772
      Andrew Hodgkinson authored
      c5ee1772
    • Andrew Hodgkinson's avatar
      Forgot to add SetPBoxes.c/h last time. · 7816ede0
      Andrew Hodgkinson authored
      7816ede0
    • Andrew Hodgkinson's avatar
      Programming warehouse link removed from all hotlists - the page has gone. · 76dfaa46
      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).
      76dfaa46
  23. 23 Feb, 1998 1 commit
    • Andrew Hodgkinson's avatar
      The '3F6C0' abort fixed; reformat_left_margin didn't cope with a NULL cell... · 2d2d3caf
      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.
      2d2d3caf
  24. 19 Feb, 1998 1 commit