1. 11 Jan, 2020 1 commit
    • ROOL's avatar
      Build fixes · 304956a0
      ROOL authored
      Detail:
        Various other components have moved/changed since last touched due to makefile refactoring and similar. Update Browse so it builds again:
        * UnicodeLib's object file got renamed
        * HTTP on disc module name changed
        * URI's header file moved to Interface
      Admin:
        Took part in a Browse build. Resulting browser loaded ROOL homepage.
      
      Version 2.17. Tagged as 'Browse-2_17'
      304956a0
  2. 13 Mar, 2006 1 commit
    • Andrew Hodgkinson's avatar
      PDF export, some major redraw structural changes, updated resources, new build... · 080840ee
      Andrew Hodgkinson authored
      PDF export, some major redraw structural changes, updated resources, new build system, extensive Makefile modifications, const/restrict additions, various bug fixes.
      
      Detail:
        PDF export facility. SEE Docs.User FOR DETAILS (important!). Includes
        UI for headers/footers in Choices and option switch in Print dialogue
        box. Minor bug fixes include printing bullet points and, at long last,
        the "print dialogue box contents are not set up" problem. Redraw engine
        now based entirely on function pointers. Draw export routine replaces
        screen output functions with Draw output functions; PDF does similar.
        Coordinate scaling system in Scale.c/h to help. Makefile changes: Now
        supports a more consistent set of build variants and has minimal
        duplication of object and library lists. New build system: !Mk...
        script files removed, FrontEnd tool !MkBrowse replaces it. See !ReadMe
        (replacing old ReadMe) in root for details. Requires FrontEnd 1.29,
        HTMLLib 0.02 and ImageLib 0.04 (by CVS VersionNum). Updated resources:
        Some attempt to bring all variants to a working level, but not much
        testing. Only the Phoenix JavaScript capable builds (Unicode or normal)
        are fully up to date, though, including PDF UI additions. Many other
        minor tweaks, and extensive use of const and restrict qualifiers
        propagated through source code in response to their use in the new
        redraw system.
      Admin:
        Draw and PDF export tested quite heavily. Appears to work well. Text
        file 'Docs.User' describes limitations. Note required new module and
        library versions listed above. Note that only JavaScript capable
        Phoenix resources are updated and only Phoenix was heavily tested.
      
      Version 2.12. Tagged as 'Browse-2_12'
      080840ee
  3. 02 Sep, 1999 1 commit
    • 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
  4. 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
  5. 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
  6. 09 Jul, 1998 1 commit
  7. 02 Jul, 1998 1 commit
    • 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
  8. 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
  9. 20 Mar, 1998 1 commit
    • 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
  10. 19 Feb, 1998 2 commits
  11. 13 Feb, 1998 1 commit
    • Andrew Hodgkinson's avatar
      RefoSingle option added to Controls. · 8d7d65dd
      Andrew Hodgkinson authored
      Precautions taken in table code to avoid divide by zero errors.
      
      Framesets defining more frames than the frameset implies, for whatever
      reason, should never cause a crash now - just report a 'Frames definition
      is badly nested' error (if STRICT_PARSER defined). Along the same lines,
      in a single document defining a set of nested frames, two /FRAMESETs in
      succession could cause a fairly nasty crash. Fixed.
      
      TIFFs do not get loaded by double-click now.
      
      If holding down SHIFT to save a link contents to disc, you can also hold
      down CTRL to bypass the cache (sets the browser's reloading flag). Noticed
      when testing this that windows_create_browser didn't take account of the
      Controls file 'UseSmall' entry when adjust-shift-clicking on links. It
      does now.
      
      There is now a complete and up to date set of interactive help messages
      built into the Ursula, Customer and Phoenix build Res files.
      8d7d65dd
  12. 06 Feb, 1998 1 commit
    • Andrew Hodgkinson's avatar
      *Don't* try to load FilterManager 0.18 in !Run[D] files. Requires · 4c272928
      Andrew Hodgkinson authored
      WindowManager 3.98. Sets URI handler environment variables for
      http, ftp and gopher.
      
      Fixed 'doesn't reformat for unsized images' bug - only happens when the
      deferred reformatter is enabled, hadn't remembered to check this in my
      debug build where this is turned off. Oops.
      
      Caret position in forms could get left behind despite attempts to rectify
      this in v1.31 - now fixed (and faster, fortunately).
      
      Hourglass + percentage displayed for History and Image History when
      loading - it can take a while for very big histories, though in
      practice you only see the visit history loading (has to do a lot
      more work, and is thus quite a bit slower than the image history).
      
      POST forms worked when targetted to frames, but were broken when
      not targetted! (Forms data inherited from one browser to the same
      browser; ended up freeing the flex block...). Fixed.
      
      Now support 303 response code (redirect to GET). Treated as 301, i.e.
      not support if STRICT_PARSER is defined, otherwise drops through to
      the 302 handling code.
      
      Pointer shouldn't get stuck in odd shapes when going to a new page now;
      it gets reset to a standard shape every time the null handler that
      checks the position is called, though (whether or not the handler thinks
      the pointer is over a different token, if that token is NULL, it sets
      the standard shape). A possible work around would be for a browser to
      remember the pointer shape too; that's for the future, though.
      
      Early stage table formatting functions could blow themselves apart if
      tables_count_table decided there were no rows, columns or both. A
      net table size of zero cells is now dealt with; slow, partial table
      fetches in multiple windows with image loading turned on will now
      *hopefully* be stable, where v1.31 would have bombed out repeatedly.
      
      A nested frameset within one document will now inherit the border
      width (frame spacing) and border colour of its parent. This is done
      by copying the maxlen and indent fields of the parent token over
      the child, and note it's done in the browser (fetch_preprocess_token),
      not HTMLLib.
      
      Border colour on a FRAMESET now used, with the first colour on any
      FRAME within it overriding, as in NN 4 and MSIE 4.
      
      <LI> bullets really do stick to the text next to them now (I'd done
      that in an experimental piece of code and forgotten to merge it back
      before the last check-in).
      
      Browse$HotlistURL/URIFile and Browse$HomeURL/URIFile now work from
      _TaskName in the Messages file, and are thus of the generic form
      <App>$HotlistURL etc. - Docs.Notes and Docs.User updated appropriately.
      
      Event 0x11d00 through to 0x11d7f will make the browser look up Controls
      file entries 'JumpTo00' through to 'JumpTo7f' and read a URL from them.
      This will be fetched in the ancestor window of the source of the event,
      or a new window if such an ancestor can't be found [for Daytona demo].
      
      NB: Nasty frames-related crash at http://www.teledanmark.dk/menu/start.htm
      is *not* fixed in this source. NOBR is not supported.
      4c272928
  13. 31 Jan, 1998 1 commit
    • Andrew Hodgkinson's avatar
      Check for WindowManager 3.97 and ensure Unicode$Path is set in all !Run[D]... · ebd74985
      Andrew Hodgkinson authored
      Check for WindowManager 3.97 and ensure Unicode$Path is set in all !Run[D] files, don't set the Alias$@PrintType_FF4 variable, and updated
      
      Customer build ROM obey file variants. Various other changes to
      the Run files for new module versions, updated paths to support
      new positions of choices, hotlist and histories (see later), etc.
      
      !Sprites[22] files hold small !app icons for some variants, and
      an ic_browse sprite. Some variants now have a Sprites and Sprites22
      file instead of just Sprites, with the former containing various
      mode 12 or 15 specific sprites.
      
      Text files dragged to the URL writable are treated as ANT URL files. This
      relies on URLBarWrit (Toolbars.h) being a unique ID, which it should be,
      but beware of the Hotlist and Choices numberspaces...
      
      INPUT TYPE=BUTTON supported. Form items without a FORM tag are now shown
      (as MSIE 4, but not NN 4).
      
      '*', '-', '@', '_' and '.' are not escaped when submitting forms now. The
      Web interface to the IMDb now works.
      
      INPUT TYPE=HIDDEN items will not affect the line height anymore - so
      http://www.hotmail.com/ now has correctly aligned writable icons, for
      example. Similarly, TAG_FORM and TAG_FORM_END items could push up
      line height and don't anymore.
      
      HRs with a specified pixel width will now influence the size of a table
      cell (they didn't before).
      
      BRs now checked by tagno field when the browser needs to know something
      was an actual BR tag rather than just a line break signal, and by the
      style bit entry when only the indication of a line break is required.
      
      Table widths of 0 or 0% are ignored.
      
      Trace.c updated to report height and background fields in a table_stream.
      
      fm_putsl() writes a terminator into the string; the Forms.c routines were
      calling this for displaying INPUT TYPE=PASSWORD fields using the FE_PassCode
      literal string (a line of stars). This write into a read only data area
      would make the debugger fault the access. A local char array is now used
      instead, to get round this (note the use of var[]=literal rather than
      var[sizeof(literal)]; strcpy(var, literal) due to some weird compiler bug
      that copies the wrong thing into 'var' under some (undefined...)
      circumstances).
      
      Text areas don't scroll back to the top line when clicked in anymore;
      single line writables don't scroll back to the left either. When
      reentering a text area from 'above', the caret appears at the top line
      rather than 'somewhere further down'...
      
      ARROWS_MOVE_OUT compile time option at the top of Forms.c defines whether
      you must press Tab/Shift+Tab to move between writable fields in forms or
      if up/down will drop out of them, though if keyboard control is on this
      is enforced (or you get trapped inside the form!).
      
      urlutils_filetype_from_url now uses MimeMap module.
      
      If fetcher is told a page is text, it'll check for a filename extension and
      may choose to use this instead (e.g. it may find it's HTML instead). This
      is to try and get around duff servers... (e.g. http://www.batalarms.co.uk/).
      
      Save dialogues shouldn't flicker when options that don't change the
      filetype are selected (before, the draggable sprite was always reset for
      each selection). Noticed the erroneous setting of a static variable in
      SaveFile.c by a call to this by SaveObject.c, and so added a flag to
      savefile_set_filetype to deal with this - would have been possible to get
      the wrong filetype sent to applications or at best the wrong filetype
      sprite in the dialogue without that.
      
      The caret shouldn't jump out of a form back to the URL writable if the page
      reformats now.
      
      Table background colours now supported (as in the colour you see in the
      border space if the cellspacing is large enough; this is as in MSIE, not
      as in Navigator). Drawfile output routines updated accordingly.
      
      Corrected erroneous use of wimpt_dx() / wimpt_dy() in a couple of places
      in Images.c, which meant that (say) 1x1 images didn't work correctly in
      medium resolution display modes.
      
      Now have support for save as text (component ID and event 0x12) and save
      as Draw (component ID and event 0x13) buttons. Dubious conditions for
      greying and ungreying the print, save source and view source buttons and
      menu options sorted out as part of implementing the same for the two new
      buttons; added greying out of their associated menu items in passing.
      
      Turned kerning on in draw file objects (does mean a rather heinous
      increase in file size, but this is the only way to ensure the draw file
      matches the visible page).
      
      Comments before functions in SaveDraw.c are now complete and up to date.
      
      Image and visit histories now generate a crude hash number to speed up
      searching for items. It does give a speed increase, though it's a
      disappointingly small one.
      
      Issue of left/right margins and cellpaddings sorted out. Now have
      redraw_left/right_margin for finding out the basic gap you must leave.
      redraw_left/right_gap then gives any extra indentation for LI, BLOCKQUOTE
      or whatever. The last two can be subtracted from the display width to
      get an available page width for any section of text. Note that
      redraw_left_gap replaces redraw_margin. The redraw_start_x function
      uses the above to work out where a line's left hand edge should be,
      taking account of left/right/centre alignment. HRs have been fixed now
      (they were quite broken in v1.30, I think) based on this new model and
      the behaviour of MSIE/NN 4.
      
      Fixed width of cells with no contents - cell padding values wouldn't
      have worked properly as the reformatter returns 0 rather than the left
      hand margin size if given no stream.
      
      Removed FM_Absolute flags for Font_Paint (spotted by DBrown) - sets bit
      2, which is reserved...?
      
      IMG width and height in % terms now works correctly; a % of available
      width (after margins and indents) or height on the main page or for
      a table cell, if the image lies in one. Because of the chicken-and-egg
      problem with the latter, the cell must specify a width and/or height
      for things to work properly. If this is not done, you'll usually end
      up with a 1:1 scaled image (as in Navigator 4, rather than ending up
      with no image or even no cell (!), as in MSIE 4).
      
      HEIGHT attribute on a TABLE tag is supported, but only in a crude
      fashion; the extra height (if there is any) is distributed over the
      rows in a linear fashion. This is probably all you have to do in
      practice, but I haven't checked. To maintain a notion of min/max
      height as well as width would of course require a great deal more
      work...
      
      If using client pull to reload a page with a fragment ('...#name')
      specified, then the reload wouldn't work on the same page; it'd just
      jump to the fragment position. This won't happen if b->reloading is
      set now (so works in conjunction with client pull on the same page
      forcing a non-cached fetch). Similarly, if POSTing to such a URL,
      a fetch will proceed (both these fixes done originally for
      http://jupiter.beseen.com/chat/rooms/g/1678/).
      
      browser_inherit split to browser_inherit and browser_inherit_post_data;
      the code for the latter didn't clear any post_data in the child before
      copying from the parent either, and could cause flex errors (now fixed).
      
      Res file for Ursula ('Desktop' Browse) build tweaked - bits in the
      font choices dialogue renamed, and button bar rearranged to hold the
      new Save As Draw button. Other builds have had Save As Draw and
      Save As Text buttons added, or not, depending upon availability of
      suitable sprites, required UI simplicity, etc.
      
      Now have:
      
        Browse$ChoicesFile
        Browse$ControlsFile
        Browse$ChoicesSave
        Browse$ControlsSave
      
      (the last two are new) for loading and saving of the Choices or Controls
      files. If unset, <App$Dir>.Choices or <App$Dir>.Controls will be set.
      E.g., you could set Browse$ChoicesFile to be:
      
        <App$Dir>.Choices,Choices:WWW.(app).Choices
      
      for loading and
      
        <Choices$Write>.WWW.(app).Choices
      
      for saving. (The browser never saves Controls at the moment, so the
      relevant variable above isn't effectively implemented, but could be
      in future). Similarly, to support asymetric loading/saving of the Hotlist,
      there are HotlistSave, HistorySave and ImageHistorySave entries in Choices
      to complement HotlistPath, HistoryPath and ImageHistoryPath (which are used
      for loading). save_save_choices will create directories as needed to obtain
      the given path (and has also been fixed in various areas that hadn't been
      tested out until now; e.g. zero termination of the AppName$ChoicesFile
      variable expansion...). !Run[D] files updated appropriately.
      
      Table widthing code rewritten. Slower, but a lot better on the whole.
      Still has some problems - still needs a final 'make sure nothing is
      below minimum width' scan, which it should be possible to do without.
      No time to fix this at present!
      
      The reformatter will now 'glue together' an LI token followed by any
      non-LI token; so a bullet point followed by an item should not be able to
      have a line break inserted after the bullet because of very tight width
      constraints (it could before - yuk...).
      
      'about:' brings up a page about the browser and any Plug-Ins, as with
      Navigator (for example).
      
      URI files support titles, as per spec. version 8. Saving a current
      location to the Hotlist will thus give a sensible title now (unless
      you're in a frame, so there's no title to get...). Of course, v1.00
      files without a title still work.
      
      Note that NOBR is *not* supported in this build and this combined with
      the new table widther may cause problems on some sites (e.g. Microsoft's
      home page!).
      ebd74985
  14. 18 Dec, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Not all resources are up to date in this check-in, and documentation both... · 169c398a
      Andrew Hodgkinson authored
      Not all resources are up to date in this check-in, and documentation both within source and stuff in 'Docs' is out of date or missing - I was very pushed for time on this one... Hopefully will do another 'tidy up' check-in before close on Friday; until then, beware of anything other than the Ursula (Desktop browser) build. Anyway...
      
      Export As Draw done. As part of this, FONT SIZE and SUP / SUB adjustment
      of font size is done in fm_token_font_info rather than fm_find_token_font.
      
      Bullets and switches are plotted as indirected sprite items, rather than
      indirected text + sprite items - this relied on being in a redraw loop to
      pick the sprites up from the local pool (failed during printing).
      
      URI files now have a LF line ending rather than CR... '*' recognised
      as an empty field when loading via. RAM transfer now (only worked for
      loading from disc before).
      
      Gave placeholder bounding boxes 4 OS units more minimum extra gap
      vertically and reduced horizontal addition to this value * 1.5, rather
      than * 2 (see reformat_get_placeholder_size).
      
      Background image tiling starts at ymax - h + 4, rather than ymax, so
      there isn't the bottom line of pixels from the top tile always present
      at the top of the window. The '+4' is for caution's sake.
      
      Can now save a frame's HTML source, that of its parent or its ancestor,
      and the same for the URI pointing to those documents - see Menus.h for
      the relevant component IDs that should lead to the SaveFile dialogue.
      
      Have hopefully fixed timeout = 0 values (i.e. 'forever') on things
      like LinkTo; before, image fetches could override the state (so you'd
      only ever see brief flickers of a given URL as the pointer went over
      a link).
      
      Save File dialogue will remember the state of option or radio buttons
      for a given parent component origin and restore that state when the
      dialogue is next opened from the same place (stops turning on saving
      as a URL file also turning on 'save background images' for Draw file
      export, etc.).
      
      Use of a META tag to reload the *same* page now sets the 'reloading'
      flag in the browser so that it doesn't go through a proxy - otherwise
      pages which are meant to update periodically through client pull
      don't work, as they keep coming out of the cache.
      
      Can now handle images specifying just a width or height in the HTML
      (other dimension is scaled accordingly, but note that the placeholder
      size must still be 'dumb' until the image data comes in). An image
      will now override an image history size entry for the same entry
      with a different size.
      169c398a
  15. 12 Dec, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Note that the 'Docs' documentation (possibly contrary to previous log... · f56c7002
      Andrew Hodgkinson authored
      Note that the 'Docs' documentation (possibly contrary to previous log messages) still hasn't been updated with the new SaveFile stuff, and function header comments have yet to be written for
      
      SaveFile.c.
      
      Fixed urlutils_pathname_to_url - OS_GSTrans doesn't like the same
      input buffer as output buffer (fairly obvious, but I was living in
      the hope of not having to duplicate the input path string).
      
      Image history will not cache scrap file images anymore. Browser's
      image handling library won't cross reference them either.
      
      When dragging a single item from the hotlist to a Filer window, the
      code now checks Ctrl - if held down, a URL file is written, else a
      URI file. The state of any option buttons or radios in the last
      Save File dialogue that was opened is no longer relevant...!
      
      history_save_as_html could write out broken files when titles
      for items in the History were not present. Fixed.
      
      Hourglass switched on for hotlist and history saving as HTML;
      hotlist_save_entries no longer closes the output file on error
      (it should be done by the caller, since the caller is responsible
      for opening the file and passing the FILE * pointer to
      hotlist_save_entries).
      f56c7002
  16. 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
  17. 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
  18. 20 Nov, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Following the last check-in - all build resources brought up to date. · cc9d8863
      Andrew Hodgkinson authored
      Adjust-click on forwards/backwards buttons did not work in the intermediate
      build, and now does.
      
      Adjust-click on form submission buttons where the submit method is POST
      will now work correctly, as the new view inherits the extradata block
      of the old. Failure of this is signalled through
      make_no_fetch_memory_error, code 16 (see updated Errors file in Docs).
      Note the name change of extradata in this context; more details below.
      
      The passing of forms POST data and extra headers for sending in an
      HTTP request via. the URL module was all done through pointers into
      flex blocks, and was therefore very unsafe. All relevant functions now
      use pointers to pointers to the data.
      
      To remove confusion on the umpteen uses of the word 'extradata', the field
      in browser_data has been renamed to 'post_data'. The 'extradata' parameters
      used within FetchPage.c were all disconnected from the extra header info /
      form POST data stuff that extradata is usually associated with, and have
      thus also been renamed, in this case to 'appnddata' (Append Data).
      
      As well as X-NoProxy, the browser sends the 'proper' HTTP headers
      Pragma:no-cache and Cache-Control:no-cache.
      
      A redirection from a POST request was not handled correctly; despite
      what HTTP specs say, you're supposed to use GET for the new URL. The
      browser was, but when it chopped off the redundant header data in the
      request didn't terminate it and left Content-Type in anyway...! Fixed.
      
      Ctrl+Tab implemented - URL completion. Comes from the hotlist URLs,
      hotlist titles, history hosts, paths, full URLs and lastly titles.
      See code comments for more (history_find_match, hotlist_find_match).
      
      TableSupport option added to Choices; it is read, can be set by the
      front-end, but doesn't actually do anything else yet.
      
      Reversed Choices' semantics on 'don't expire by...' for History. Added
      'needs_redraw' flag to choices_get_contents so that, for example, if the
      table border types change, browsers get redrawn.
      cc9d8863
  19. 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
  20. 30 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Removed 'The Onion' link from some Hotlist files. Time showed that the site... · 62293187
      Andrew Hodgkinson authored
      Removed 'The Onion' link from some Hotlist files. Time showed that the site wasn't entirely Family Friendly (TM)... Removed Shift Control (it's gone offline now), and corrected the Telegraph URL from ...the-telegraph...
      
      to just ...telegraph...
      
      StrongHelp manual generator now tries to work out the number of lines in
      the table on the root page more intelligently.
      
      Plug-in support extended to handle Shockwave. Quite a lot of underlying
      work for this, including a pseudo cache system for temporary files.
      
      Bug in redraw routines: they plotted background images within table
      cells, when nothing should have been drawn. Oops. When background images
      in cells are properly supported, this can get sorted out.
      
      Tweaked vertical plot position of HRs (up to 4 OS units too high before due
      to rounding).
      
      Various Res file bits and pieces, Ursula build taken up to v1.26 beta
      for release on the Browser site. *Note* not all resources are up to date!
      This will be done after AW97.
      62293187
  21. 24 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Various fixes in the code required for Shockwave support (many invalid... · 7b1aa501
      Andrew Hodgkinson authored
      Various fixes in the code required for Shockwave support (many invalid assumptions about the OBJECT tag structure). Not finished yet though.
      
      Played around with signal handling 'n' all that to try and get sensible
      errors reported for aborts etc. using code by KBracey. Need a ROM patch
      for _swix on RISC OS 3.7 upwards (or a local fixed copy of _swix),
      otherwise should sort out most of the problems seen (mostly 'no stack
      for trap handler' errors and a distinct lack of a register dump).
      
      Plug-In view on redraw / ASAP choices now work as they should (ASAP
      was previously broken).
      
      Version numbers in Messages incremented to 1.25 (23 Oct 1997).
      
      For Plug-In support, created new source file RMA.c/h to handle RMA
      claims and releases, in an attempt to ensure leakage never happens.
      As such, this source is *slightly* more advanced than that in the 1.25
      AW '97 build, though functionally identical. Well, that is, at least
      you can confirm zero RMA leakage with '-debug LMem' in TRACE builds now!
      
      Intend to do a consistency check on comment syntax in all sources
      shortly - I need to rebuild my StrongHelp manuals; can't keep track
      of all of these new functions...
      7b1aa501
  22. 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
  23. 09 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      !Run[D] files updated for new fetchers and GopherFetcher; protocols list in... · 91cb9e09
      Andrew Hodgkinson authored
      !Run[D] files updated for new fetchers and GopherFetcher; protocols list in Controls updated for Gopher. Debug builds now require 2760K rather than 2560K. Font$... variables set if not already, in anticipation of font
      
      Choices work.
      
      Additional bits in Choices section of Res file tidied and some name
      changes (e.g. Netscape -> Navigator(TM)). Frames support option added
      to Choices.
      
      Grouped 'support_frames' under the Fetch Controls section and added
      support_object in Global.h; appropriate entries placed in the Choices
      files, and are read at startup. At present, though, only the frames
      support flag is implemented.
      
      For some reason, Menu was the button to use on history popups if you
      wanted to show URLs instead of descriptions (or vice versa, depending
      on Choices settings). Now, Select and Menu will show the Choices
      defined setting, and Adjust will show the opposite.
      
      History menus are built backwards, so local histories have the most
      recently visited pages at the top. Global history has still no real
      order to it, but this may be arranged later.
      
      Customer name changed to Customer by request.
      
      Customer browser now gets its own resources (SYSTEM=Customer), but
      otherwise is unchanged, with the Ursula build now giving the
      'spinning acorn' with a Bookworm-style toolbar. This is used for the
      Desktop !Browse build.
      
      !Sprites[22] files updated to include GIF, JPEG and PNG sprites;
      !Run[D] files and !Boot files set appropriate File$Type_xxx variables.
      Sprites in all sprites files have been checked for unnecessary palettes,
      which have been removed where present.
      91cb9e09
  24. 08 Oct, 1997 1 commit
    • Kevin Bracey's avatar
      Increased WimpSlot of debug !Browse by 200K. · 9a80a12d
      Kevin Bracey authored
      FRAMES_SUPPORT #define removed.
      
      Optimised fm_token_font_info().
      
      Added support for LI tokens with text (for ordered lists).
      
      Now outdents bullets from indent value, rather than indenting bullets by
      the indent value and further indenting text. May need to look at default
      Choices files because of this.
      
      Limited the margin to always be non-negative.
      9a80a12d
  25. 05 Oct, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Big steps forward in vertical white space handling as a result of improvements... · 5db9badc
      Andrew Hodgkinson authored
      Big steps forward in vertical white space handling as a result of improvements in HTMLLib in this area ( -> all versions now 1.22 beta-2).
      
      As a result, the 'last_space' field in browser_data struct has been
      removed. Note that this relies quite heavily on setting of the PCDATA
      bit in the 'style' field of an HStream and the automatic collapsing
      of (for example) multiple P tags inside HTMLLib.
      
      Trace.c improved to recognise various bits in the 'style' field of an
      HStream structure.
      
      Phoenix defaults altered to a more 'standard' set of choices; Trinity
      as the serif font, with a slightly larger default font size. This is
      because there's a good chance it might get released to a wider audience
      than Acorn internal (though the animation and icon bar sprites will
      have to change before then...).
      
      MiscDefs updated for new SWI numbers in HTTP module; !Run[D] files thus
      updated to require HTTP 0.42 or later. At this point, all earlier
      modules are not backwards compatible in terms of direct calls to the
      HTTP module, though this only affects cookies_process_cookie at present.
      At the same time, checks for System$Path, InetDBase$Path, and setting
      of Inet$MimeMappings if not already defined have been added to the Run
      files along with RMEnsures of Resolver and MimeMap.
      
      Object and PlugIn c/h pairs created to handle OBJECT, EMBED and APPLET,
      and the RISC OS Plug-In interface respectively. Not part of the build
      process yet. Addition of 'odata' field in browser_data struct and
      definition of chunk CK_OBJB for memory_set_chunk_size() are in support
      of this.
      5db9badc
  26. 03 Oct, 1997 2 commits
  27. 24 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Tidied up Hotlist source a bit more, mostly so PSI can use the automatic · 26e079aa
      Andrew Hodgkinson authored
      StrongHelp generator on it. Revealed a spurious toolbox_hide_object call
      that would always fault and never do anything, and a few heinous uses
      of show_error which have all been removed.
      
      When dragging hotlist items, directories will now be highlighted whenever
      the item would be added to them, rather than just over the sprite. In
      practice this only changes if the item is open and has contents...
      
      Drag box selections had broken in the hotlist; fixed (uninitialised
      variable in hotlist_select_box). Adjust-drags now close the window on
      completion. Minor problem with Shift+Drag (copy) reversing order of items
      sorted out. Added hotlist_add_html_file and implemented loading of HTML.
      DO NOT add broken HTML files, this has not been coded for and URLs of the
      form http:///this/that (no host name) will hang the machine (bug in the
      cookie code of the HTTP module up to at least version 0.39).
      
      Made SELECT list items only as wide as the widest entry actually appears
      (using fm_get_string_width), rather than as wide as the widest character
      BBox in the font multiplied by the string length of the longest entry.
      
      Updated !Run[D] files to require HTTP 0.39, FTP 0.12 and File 0.23.
      26e079aa
  28. 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, but on the above text file, formatting time went down from
      290 seconds before the change to just under 7 seconds, a 41 fold speed
      increase or thereabouts (SA110 228MHz).
      
      MakeFile changed to force function name compilation on for debug builds
      (-fn in the DD...FLAGS); useful for certain functions such as
      register_null_handler, which can now output the name of the function
      being registered.
      
      ...Which helped show up some nasties in the animation handler and animation
      drift handler registration/deregistration process, which have been fixed
      (callers of fetchpage_release_nulls were unaware that the drift handler
      could be installed, and fragments of old code checking choices.anim_drift
      had a value other than 1 or 0 were still hanging around - bit tricky for
      a single bit item).
      
      Added support for VALIGN in table cells. Spotted a bug or two in the
      'what token is the pointer over' routines as a result, and fixed them - the
      worst was in browser_line_at_y, which checked the y coordinate was below
      the given one [the mouse], but didn't check the line height to see if the
      given y coordinate was *within* the line, rather than just above it. Never
      used to matter pre-tables, but a definite concern once multiple line
      arrays can exist on one page.
      5a494095
  29. 14 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Got the deferred reformatter working properly. It doesn't do that 'OK, the... · 5e7b0a62
      Andrew Hodgkinson authored
      Got the deferred reformatter working properly. It doesn't do that 'OK, the page is fetched and reformatted, but just to annoy you, I'm going to wait 5 seconds and then suddenly reformat the whole thing again' trick anymore. The fetcher was calling the reformatter in a delayed form even when the reformatter was already running, so it would carry on past the reformat point or from below what had become and invalidated line, and some time later, get back to the delayed reformat. Now, reformatting is only delayed by the fetcher when the reformatter is not running. In practice this means body text reformats as it fetches, but large tables will show delayed reformatting - which was exactly the intended behaviour of the feature when it was originally thought of.
      
      fetch_token_data_address removed; it was only needed in two places,
      both of which already knew when to read tp->text and when to ignore
      it. Its functionality is duplicated in an 'if' involving reformat_istext,
      anyway.
      
      !Run[D] files taken back to requiring HTTP 0.33, since 0.36 introduces
      many weird and wonderful problems.
      
      Typo in Messages files, 'All current images (sic.) fetches finished' -
      'images' is now 'image'.
      
      Shift+Click saving - you could save to an application. No problem. But
      the equivalent (just clicking on a link that led to an unknown datatype
      and getting the save dialogue that way) didn't work. It does now.
      Another problem was saving to an application that didn't support the
      datatype - oops, the dialogue would close but the fetch would sit there
      waiting to be told where to save. It doesn't close now (as expected).
      
      NB, doing several simultaneous fetches to a text editor may have problems
      as the editors are too clever for their own good. Despite receiving
      DataLoad messages for <Wimp$Scrap> for files of different types, sizes
      and datestamps, the editors can decide it's still the same file and:
      
      Zap      - Hats off, it gets it right, almost. You do get warned 'Multiple
                 copies - one on disc is newer' as everything after the first
                 text loads, but they do load, and in separate windows.
      StrongED - Does not load the subsequent files, so the browser gives 'Data
                 transfer failed' errors and opens up Scrap. Turning off 'Don't
                 load same file twice' fixes it - each file is loaded in a new
                 window with no warnings. At least in the first case, you don't
                 lose data, since the files are kept in Scrap.
      Edit     - Each time it loads the file, it *replaces* the other one in
                 memory, using the same window for each. This is the worst
                 behaviour as it isn't configurable (well, I don't know of a way
                 to change it...) and results in data loss as successive texts
                 get trounced by the new data.
      
      I can't see how I can fix this in the browser as it's basically silly
      behaviour on behalf of the editors. Other applications which don't try
      to work out if it's a new file or not are fine!
      
      When conducting image fetches, proxying is allowed unless reloading.
      When conducting page fetches, proxying was never allowed - so web cache
      stuff would have been, er, interesting. It now sets X-NoProxy: in the
      request header when reloading, but otherwise this is not included.
      
      AnimSpeed is, at last, independent of browser poll speed. They used to
      be tied together. Guess how the animation code used to work ;-)
      
      'Can't handle this datatype' - deprecated now that save dialogues can be
      popped up. The 'can't save objects in full screen mode' error would never
      be shown due to a bug, anyway; this now replaces 'can't handle', which
      has been removed from all Messages files.
      
      RefoWait, RefoHang and RefoTime moved from Controls back to Choices.
      
      Trying to get rid of strlen in the reformatter - it can get very slow
      (e.g. strlen of 8K chunks of text, or if a 330K text file is transferred
      from a text editor straight to the browser, strlen of a 330K string...).
      There will be unfinished bits of code in the reformatter that may seem
      unnecessary - they've just not been plugged in yet (since they don't
      actually work). Don't remove them!
      5e7b0a62
  30. 12 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      As warned in the last log, pretty much all event codes and component IDs have... · e6b771f8
      Andrew Hodgkinson authored
      As warned in the last log, pretty much all event codes and component IDs have now changed along with many of the names, to provide a consistent name and numberspace for events and components. This also minimises number clashes (e.g. as was, the Save File origin when opened from a
      
      Hotlist menu with an already-used component ID). To get full details on
      this, please carefully read through TBEvents.h.
      
      Res files, Sprites files and Messages files have been updated again both
      due to the above, and routine additions (e.g. message support for a few
      Hotlist bits and pieces). !Run[D] files updated for FTP 0.11 and
      HTTP 0.36.
      
      In the Makefile, the Customer objects list was missing Save - must have
      moved something when I should've copied it, when adding in SaveFile or
      SaveObject in all probability. Now fixed. Couple of other bits and bobs
      fixed in the build environment (e.g. stuff saying !Argo instead of
      !Customer). Oh, and I've altered the MakeFile copy options again to the
      best compromise I can come up with. Newer is turned on for everything
      except !Run[D] and !RunImage, since both of those change between debug
      builds - otherwise if you'd built debug and non-debug versions, it was
      not possible to switch between them - one version would have the newer
      timestamp and thus never get overwritten.
      
      The default hotlist has had a few items added - that'll be about the end
      of it, I think; there's more than enough stuff in there now.
      
      Saving of the hotlist from the document menu and of URI files,
      directories and selections from the hotlist menu tree is now implemented
      - this new save system rocks... Oh, and you can save all images and
      backgrounds as sprites.
      
      Saving of items with Shift+Click to other applications directly now
      works, and is robust. Unique Scrap filenames are used, with data load
      bounces (e.g. if some pra - er, person quits the app they're sending
      to) working correctly - that is, give an error, keep the file, rename
      it to something safe, and open the directory it lies in. As opposed
      to normal app-to-app bounces, where the scrap file is deleted (see
      PRM 3-254). This means you can now look at README files in FTP
      sites, say, without using a disc intermediate. Or you can send pictures
      straight to ChangeFSI, fetch HTML links into editors, and so-on, and
      so-on - it's all very funky. Known problems include the ambiguous
      'invalid component ID' instead of 'file open' for *normal* (straight to
      disc) shift+click saves, and I think I'll introduce a unique name
      guarantee of some sort to stop 'file open' in the first place. Odd
      that the really tricky part (app-to-app) should be least likely to
      suffer from this!
      e6b771f8
  31. 09 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      First a minor warning - the various Res files are out of sync in this build. · 7656a1b3
      Andrew Hodgkinson authored
      Only the Browse resources are currently valid.
      
      Added Utils.Icons - has a few archives inside containing the resources
      (well, some of them) used to build various UI sprites for various builds.
      Archived because these are unlikely to change much, and putting them on
      CVS was a move to, well, archive the stuff...
      
      SaveDBox objects vanquished and requirements in !Run[D] files removed. The
      data save code fits much more neatly in amongst the data load protocol
      stuff now (with the slight exception of having to split the SaveObject
      source into SaveObject and SaveFile - the former handles multiple persistent
      dialogues for Shift+Click on links and the like, the latter handles 'one at
      a time' transient dialogues for save source and similar). Export Link is now
      supported, too, and writes a 'proper' version URI file. You'll find that
      double-clicking on old URI files will work as the URI handler picks them up,
      whilst new version ones don't; however, dragging onto the browser will only
      work with new version files. Note that support for saving and loading URL
      files (ANT suite stuff) is present too, so old URI files can be typed as URL
      files if you want to keep them working without modification - the URI
      handler itself will hopefully support the defined URI file format soon;
      double-clicking on old URI files will stop working at that point. Note
      there are *lots* of changes in every Res file to support all this. This may
      all seem a bit pointless to some, but the changes do in fact make it very
      easy to add new save dialogues all over the place. Certainly much easier
      than with the previous system, anyway. In fact, post script, image
      'save as sprite' took about half an hour, which I hope proves the worth
      of the new system.
      
      Merged in newer hotlist code with support for drag cancelling with Escape
      (all relevant Res files appropriately updated) and cancelling scrolling
      when you've reached the window scroll limit. Had to move some of the
      Wimp message handling stuff to the central Protocols source, as clashes
      were occuring, and also the hotlist routines were using independent saving
      code - a lot of duplicated effort. This was fair enough as at the time the
      Hotlist code was written, the Save code couldn't be used in the way it is
      now.
      
      New Save Source and Print buttons on the toolbar of some builds.
      
      Phoenix Sprites file made more efficient - the Acorn base section has been
      split from the animated upper region. Browse build has a new grey fade
      sprite at the back, which is less grainy than the previous one and only
      uses 16 colours (with a 16 greyscale palette).
      
      Not really a bug, bug the routine to start an image fetch for INPUT
      TYPE=IMAGE forms items only did so if the src field (or equivalent, for
      this tag type) was non-NULL. In fact, you should always call image_new_image
      and let that handle the rest, otherwise other sections of the code will fail
      as they try to obtain an image number for a given HStream and get -1 back.
      This problem only generally manifested itself when loading an HTML file to
      the browser straight from an application, as many src fields become NULL
      when the relativisation routines find nothing to relativise to...
      
      Authentication got broken somewhere along the line - this has been fixed
      (in HTMLLib and the browser).
      
      Ctrl+Click on a cross referenced image updates *all* copies, not just the
      one with the image data attached.
      
      Next big step: Rip up TBEvents.h and rebuild that whole approach somewhat.
      To all those working on the code, my apologies but this means all Res files
      will receive a very large number of alterations and there will be extensive
      code changes too (mostly naming convention stuff), in more or less all
      source files. I am endeavouring to ensure that the new numberspace
      convention does not clash with the work being done by Kevin on
      internationalisation.
      7656a1b3
  32. 02 Sep, 1997 1 commit
  33. 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
  34. 28 Aug, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Very long log entry alert - but hey, beats 'Bug fixed' (sorry, Richard) ;-) · 532155bd
      Andrew Hodgkinson authored
      Open URL implementation more or less complete, though may undergo UI
      revision at a later date to allow named frames to be targetted. Hope to use
      the ideas in this code as the foundation for other general dialogues.
      
      In token stream dump for TRACE builds, table head items were not indented
      as far as they should have been - this is fixed; and manual toolbar redraw
      routines have been removed. They never worked, were commented out, and
      would never be used in that form anyway.
      
      DragBox source added, but it isn't at all complete and won't work - this is
      an 'in spare time' thing. We need custom drag boxes constrained to windows
      for the hotlist, and unconstrained for frame border resizing... Hey ho.
      
      Ancestor window extents match visible areas if there are frames (no more
      scrolling framesets...!). Frame resizing works whilst new documents fetch
      without pulling the extent down now. However, frame horizontal extents
      never shrink until a reload which is nasty, and this is all due for a
      rewrite. Frames border redrawing routine moved out of Redraw.c and into
      Frames.c. Bug regarding the mouse rectangle and frame border widths
      (rectangle was too large, so you could squash the edges) for edge-drag
      frame resizes fixed.
      
      Window width change reformat tolerance fixed; you could creep the window
      width down or up forever without any reformat, and centred objects would
      move but not be redrawn (thereby giving rise to subsequent redraw errors).
      
      Filetype on objects saved through Shift+Click correct. Save Source dialogue
      recognises if that source is plain text, rather than assuming HTML. A
      browser that fetches a file remembers the old store size it had before the
      save, so even though the data is now ditched, it reports the same amount of
      data fetched afterwards (looked awful when this could, for example,
      suddenly say '0' after a file save). Progress indicator is now fully aware
      of one or many file saves inside a frameset and reports the number of
      saves, a colon, and the cumulative saved data count, instead of reporting
      the sum total of fetched data in all frames, including non-file save stuff
      (note that for just 1 save, '1:' is not shown as a special case for the
      most common condition). A bug related to this, where you could in fact only
      do one fetch per frame*set*, has been corrected (only one fetch allowed per
      frame still, this is unlikely to ever change).
      
      Hotlist support added (D.Brown's source), with various bits of integration
      and modification still in progress there. Note additions to the Messages
      files. On the subject of Messages, the whole mucky business about what
      goes in Messages or Choices (and a few bugs where lookup_choice was used
      instead of lookup_token or vice versa) has been sorted out. Messages
      contains, more or less, just that. Choices contains user configurable
      stuff which generally can't mess things up too badly. A new file, Controls,
      is a Messages file holding the non-user configurable choices, which can
      generally make things go badly wrong if misused. A lot of these are tied
      to the Res file. StrongED users can get these to automatically fold out
      the various sections (EMail me for details). Sorry, but at the time of
      writing, Zap doesn't do folding... =8*P
      
      Two bugs with images. Asking for images to be shown in browser B when
      browser A uses the same ones and was loaded first didn't work correctly,
      and now does (a bit weird - browser A does the fetch and browser B does the
      display...). Second one occurred when the background image was also used on
      the page as a foreground image. This has been fixed by flagging background
      images in the image_info structure, and checking this before cross
      referencing. This bit also allowed the image_restart_fetches API to be
      extended, so that just background or foreground images may be fetched if
      they weren't already and the user asked the browser to show them. Before,
      the whole lot had to be fetched together (so turning on 'display
      backgrounds' will now kick off an image fetch if required, you don't
      need to reload the page anymore).
      
      Makefile copy options tweaked to be 'newer' (so if you're testing with some
      temporary Choices file or something, it won't write over it at the end of
      every export), and REMOTE_HOTLIST flag added for Customer builds - means
      the Hotlist.c functions aren't needed; the old, hotlist-by-file method is
      used. Added support for Customer build (see later), though there were very
      few additions needed in practice.
      
      Table printing fixed - in many ways it wasn't broken, it was image printing
      causing the oddities ever since the global image pool was introduced (this
      is, again, fixed). The 'reformat to fit page' option didn't work as coded
      any more; tables store cell addresses in the HStreams, so you can't then do
      a background reformat in a different browser. Hence, it now has to reformat
      to the page width, print, then put the page back again, all in the actual
      displayed browser. This doesn't feel as slow in use as it perhaps should,
      considering what is going on... Note that a line of a defined fraction (see
      Print.h) of page height will now split over page boundaries, so tall images
      or tall tables don't cause problems now (aside from the obvious problem of
      having the line split over a page at all!). There was a bug in the routine
      to print from a given start point until 'n' pages had been filled, in that
      it always filled 'n + 1' - now fixed. Finally, as part of the printing
      tweaks, a new dialogue exists - PrintStyle - with a similarly named source
      file added to deal with it.
      
      Global history auto save / load done, but only to the Choices file path -
      the whole browser is still strictly single user at present, with all the
      extra work for a multiuser Customer environment yet to be done. This has
      shown up a global history corruption problem which I haven't fixed yet.
      
      Rationalising TBEvents.h - things are migrating out of it, and into more
      appropriate sources (e.g. definitions relating to the Open URL dialogue are
      going into OpenURL.h, etc.). Event codes were at one stage deliberately
      diverged in numberspace from the component IDs of typical gadgets raising
      the events, to avoid anyone getting confused and thinking the IDs and event
      codes must match. However, this is in fact unlikely and it is much easier
      to remember the fewer numbers that result from tying the two together where
      possible. This has resulted in changes to event codes raised in the
      following objects of all Res files: Authorise, Find, OpenURL, and
      PrintStyle.
      
      And finally - !Run[D] files for all variants updated to require the latest
      toolbox and fetcher modules. All Res files updated for hotlists etc. and
      sprites files updated appropriately. All Messages, Choices and Controls
      files brought in sync., and an Customer build has been added (based on the
      Desktop build binary with different resources).
      
      That's all for now...
      532155bd
  35. 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
  36. 31 Jul, 1997 2 commits
  37. 30 Jul, 1997 1 commit