1. 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
  2. 02 Dec, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Implemented Message_PlugIn_ReshapeRequest, Message_PlugIn_Status and · 960e879c
      Andrew Hodgkinson authored
      Message_PlugIn_Busy. Plug-in code more robust when given invalid
      browser instance handles by the plug-in.
      
      Line spacing is now calculated on the basis of the normal style base serif
      font, with all other fonts being forced into that line height. This does
      mean that an unusually tall (say) sans serif font may get clipped. It
      appears to be the only way to get around wildly different baseline
      depths returned from the font metrics - you can't work out line spacing
      based on each different font style; the line spacing will vary.
      
      Table heighting (as opposed to widthing...) improved considerably; rowspan
      can no longer cause very tall cells in odd places. Having trouble getting
      rid of the single pixel breaks between vertically adjacent cells, though
      I've not tried too hard. Widthing, though, seems fairly badly broken at
      present... :-/
      
      Set/clear of page_is_text flag made more robust (it looked as though there
      was the potential for this to get stuck in a set state, though I've never
      see the front-end behave in a manner which indicates this is the case).
      The reformatter will now decrease leading if this flag is set (plain text
      pages look daft with a line spacing that is OK for 'rich' text pages).
      No reformatting is done if the page width changes by dragging on the
      resize icon, though toggle size / full screen will still reformat even
      if the contents are only text (browser needs to sort out various width
      flags at this point).
      
      Cut down on excessive redrawing when reformatting due to a change in
      window dimensions is not done. If display_width hasn't changed, then no
      redraw is needed. If this causes redraw problems, then whatever is
      changing display_width needs investigating. It shouldn't be kludged
      (basically) by forcing a redraw instead of a reformat.
      
      TT/PRE/etc. text can now have a non-100% aspect ratio. 80-90% looks
      best (ArcWeb, for example, uses 86%). New option 'TTAspect' in
      the Choices files.
      
      Debug builds link to a non-debug Unicode library now; stops stderr
      being dumped to the bottom left of the screen if you've not redirected
      it in the Run file.
      
      RISC OS 3.1 seems to need more initial WimpSlot than later OS versions.
      The 64 deep nested table set gives a 'No stack for trap handler' error
      (which it really means in this case!) without 800K, even though 3.71
      is happy with just 640K. So, the !Run file checks if Boot$OSVersion
      is exactly 300, 310 or 311, and sets the WimpSlot accordingly.
      
      !Run[D] files now require latest fetcher module versions (URL 0.21,
      File 0.31, HTTP 0.58).
      960e879c
  3. 26 Nov, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Image history - sizes of images are remembered for future reference (if the... · 2a2b2672
      Andrew Hodgkinson authored
      Image history - sizes of images are remembered for future reference (if the sizes aren't specified in the HTML, they can be looked for in the image history instead to minimise reformatting requirements). Choices file options ImageHistoryPath, ImageExpiryAge, ImageMaxSize and
      
      SaveImageHistory added to support this (all have a direct analogy to
      the global History items of the same name after removing 'Image').
      
      Text area items are now the correct height for the number of rows
      specified in the HTML, don't scroll a line too early, and have the
      caret placed at the start of the text when moved into from above
      or at the end when moved into from below (rather than always at
      the end, which was behaviour inherited from single line writables,
      where this is desirable). The top of the text area is aligned to
      the top of any line of text on the same line, with the text area
      dropping below the text, rather than the bottom of the area matching
      the text baseline and extending upwards.
      
      Filename extensions for download files are only stripped if an
      attempt to convert to a RISC OS filetype through the Mime Mapper module
      does not return an error or Data (0xffd) filetype. '.cgi' is a special
      case which is always stripped.
      
      Altered heading styles - all are bold, none are italic, H3 is as big
      as H2 was, H2 is a little larger, and others scale down to H6 being
      the size as normal text (but, as I say, bold).
      
      Sorted out tables and forms. We can just look for tagno=TAG_FORM, and
      get rid of the wobbly form_flag; also discarded the redundant
      reprocess_table flag in fetch_preprocess_token. Two separate forms
      in consecutive table cells (for example) which used to fail - they
      were submitted as one single form - will now work correctly.
      
      Fixed nasty bug in FontManage.c where font size 7 would intermittently
      fail. The stupid font sizes that it could ask the Font Manager for may
      be responsible for the occasional Font Manager crashes that have been
      noticed. Array for font sizes was declared as [Limits_FontSizes], but
      indices 1 to Limits_FontSizes are actually used - so needed a '+ 1'
      in the declaration... :-/
      
      Replaced the case insensitive string comparison functions in Utils.c
      with more efficient versions by S.Brodie.
      
      MAXLENGTH specifier in INPUT tags is now supported. If unspecified or
      specifically zero, the browser overrides and allows any length.
      2a2b2672
  4. 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
  5. 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
  6. 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
  7. 26 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Added support for HTMLLib HttpEndParse call. · 8c9a9091
      Andrew Hodgkinson authored
      Text items with no VALUE specified in the HTML were not cleared on
      hitting a Reset button as the text field of the token is NULL; fixed.
      SELECT lists with no default selection item were not being changed
      on hitting a Reset button; fixed. In radio groups with no default
      selection specified, no item will be selected. This goes against
      the HTML 2 spec but allows broken Navigator-esque forms behaviour.
      In consequence, radios can be deselected by clicking on the same
      one twice. I'd fixed the flickering experienced when doing this
      recently, but that, now, is irrelevant, since the state of a radio
      must always change.
      
      Reformatter's new 'find width of a SELECT field' didn't account for
      the width of <none> and <many> items, and now does (particularly
      important for broken items with no OPTION contents).
      
      Under certain circumstances, illegally named targets would open in the
      ancestor rather than a new window - a deliberate decision in the code,
      but now reversed due to a test suite failure; they'll open in a new
      window instead.
      
      Altered the left hand indent handling for lists so that headings and
      body text follow the Navigator 48 pixel indent and the bullet point
      items drop to the left of the left hand margin, rather than sitting
      on the margin with the text indented to the right.
      
      Tightened up the hotlist_load_directory checking of URLs, so that
      only those with '://' in - i.e. look fully specified - are accepted.
      HTML files are loaded into a new directory now.
      
      Items without a descriptive title in hotlist_new_url will have the URL
      substituted in instead. White space before and after descriptions and
      after URLs is stripped. Directories with zero length names or null
      strings (after white space is stripped) will still be created, with a
      generic name (see Messages, token 'HotlistUntitled').
      8c9a9091
  8. 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
  9. 22 Sep, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Now working on source merged with Kevin Bracey's internationalisation support.... · f61afadd
      Andrew Hodgkinson authored
      Now working on source merged with Kevin Bracey's internationalisation support. UNIFONT is undefined in the Make File for now. All Res and
      
      Choices files updated appropriately.
      
      Having sorted out the old Choices and Messages to form Choices, Controls
      and Messages, this build has had the same cleaning up done internally.
      This includes greater consistency in naming schemes and the removal of
      the inconsitent choices items - e.g. Choices file entries saying 'delay
      images' and 'plain backgrounds' where internally all the flags say 'show
      images' and 'show backgrounds'. ChoiceDefs.h and CtrlDefs.h added to
      clarify the meaning of some fields, though usage of these is not 100%
      in the source (there are cases where parameters are passed through to
      functions as ints, and those functions still check these against hard
      coded values rather than the #define stuff).
      
      Fetcher status return bits (connected, sent request, etc.) now reflected
      in status bar. Progress during fetchs to files are reported by %, where
      the size of the object is known. Exceeding 100% drops back to a byte
      counter, in case the estimated size was wrong. The progress counter
      may be updated after specific delays, rather than 'as often as possible',
      to reduce flicker (as requested by D.Brown some time ago).
      
      I've done a small rewrite of the fetch prioritisation scheme in FetchPage.c;
      how well this performs in general use across different processor speeds
      remains to be tested, but certainly it has some advantages. For each small
      fetch window before the rewrite, a 4cs tight loop was entered - this gave a
      noticable and substantial drain to the Desktop performance if more than one
      was opened. Now, several can be up at once with little hit. The actual file
      fetch is on half the priority it was before, with all others taken back
      just a bit - e.g. from 20cs per poll to 15cs per poll for flat out
      reformatting. You don't seem to lose much time on the format in practice,
      and the Desktop feels quite a bit lighter at the same time. There's the
      potential for smoother frameset loading in this scheme, too.
      
      When Shift+Clicking on a link meant you still fetched inside the main
      browser window, several fetches could occur in a frameset - one per frame.
      However, now that you can only do this by clicking on a link that leads to
      non-displayable data - or by turning off the small fetch windows by
      setting UseSmall to 'no' in Choices - a bug where fetchpage_preprocessed
      would stop such fetches as new ones were started was revealed.
      The API to frames_abort_fetching has now been extended to include a
      'stop file spooling too' flag, allowing a fix to be made by having
      fetchpage_preprocess's calls not set this (and it doesn't check the
      savelink flag is unset before proceeding, since frames_abort_fetching
      does that implicitly now).
      
      Had left the RAM transfer buffer at 16 bytes (from testing) accidentally...
      Oops. Upped it to 4K. In addition, when loading data by RAM transfer,
      the browser didn't notice if a RAMFetch bounced during the transfer. It
      would be treated as a 'first' RAMFetch bounce, basically, and try to go to
      file transfer - oops. Fixed.
      f61afadd
  10. 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
  11. 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
  12. 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
  13. 18 Aug, 1997 2 commits
  14. 12 Aug, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Quite a few general source changes throughout many files to sort out swapped... · b5ed816d
      Andrew Hodgkinson authored
      Quite a few general source changes throughout many files to sort out swapped toolbars. There will be more work on this shortly. svcprint.c has been modified to allow it to output to a file in PipeFS, so TML-less machines can still use the standard browser debug routines (albeit in a less than elegant fashion). Comments in that source file give more details. Plus a few more bug fixes.
      b5ed816d
  15. 08 Aug, 1997 1 commit
    • Andrew Hodgkinson's avatar
      Checking in mostly because its Friday... Quite a few little bug fixes · b4491718
      Andrew Hodgkinson authored
      (adding up to a greater whole), which include removal of the dastardly
      'invalid image number' errors that trace builds would raise from time to
      time. Frame highlights are now better controlled (releaseably so).
      Generally, this build represents the first genuinely promising version
      of the browser for quite some time, despite the known library problems
      with comment handling etc.
      b4491718
  16. 01 Aug, 1997 1 commit
  17. 30 Jul, 1997 2 commits
  18. 18 Jul, 1997 1 commit