1. 30 Nov, 2013 2 commits
    • Jeffrey Lee's avatar
      Fix alpha sprite support · 9f37c9dd
      Jeffrey Lee authored
      Detail:
        s/Wimp01 - An ill-advised last minute edit would leave the Wimp in an infinite loop looking for ROM sprites if it tried to enable alpha sprite support
      Admin:
        Tested on BB-xM
      
      
      Version 5.34. Retagged as 'Wimp-5_34'
      9f37c9dd
    • Jeffrey Lee's avatar
      Add support for *iconspriting of alpha-masked sprites. Fix icon... · 03e27cbe
      Jeffrey Lee authored
      Add support for *iconspriting of alpha-masked sprites. Fix icon shading/inverting to work with true colour sprites.
      
      Detail:
        Options/s/!Default, s/NewSWIs, s/Wimp01:
      
        Updated ROM sprite find code, *IconSprites and Wimp_Extend 13 to understand a new spritefile suffix.
        If the Wimp detects that RISC OS Select style alpha masked sprites are supported, and we're not using the mode 23 sprites, then the code will enable support for alpha masked sprites of the form !SpritesA1, !SpritesA2, !SpritesA, etc. Alpha-masked sprites are only looked for when looking for square pixel sprites or just before looking for the default sprites. This means the full search pattern for (e.g.) a !Sprites21 mode would be as follows:
      
        !Sprites21  (original mode)
        !SpritesA2  (next squarer mode, alpha sprites)
        !Sprites22  (next squarer mode)
        !SpritesA   (default alpha sprites)
        !Sprites    (default sprites)
      
        Like with !Sprites11 support, this feature can be toggled off via the SpritesA option if necessary.
      
        s/Wimp01, s/Wimp04:
      
        Updated icon plotting code (wimp_SpriteOp_putsprite and calculateinverse) to allow true colour sprites/icons to be rendered shaded/inverted.
        For this to work the Wimp needs a version of SpriteExtend which supports colour mapping (specifically it checks for the relevant ROOL version number).
        The colour mapping function which is used to build the translation tables used for shading/inverting palettised sprites is too slow to be sensibly used on a per-pixel basis, so the first time a shaded/inverted true colour sprite is requested the Wimp will generate a set of lookup tables which can be used by a much simpler colour mapping routine.
        To keep memory usage down these lookup tables only use 4K colours each; however the quality isn't always that great and so this may need revising in future.
      
      Admin:
        Tested on BB-xM
      
      
      Version 5.34. Tagged as 'Wimp-5_34'
      03e27cbe
  2. 07 Oct, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix logic which decides whether to plot sprites using the Kernel or... · b5280514
      Jeffrey Lee authored
      Fix logic which decides whether to plot sprites using the Kernel or SpriteExtend to take into account the new sprite modes
      
      Detail:
        s/Wimp01 - Add NColour mode variable to the list of variables cached for the current screen mode. Add modeflags & ncolour to the sprite & tool sprite variables.
        s/Wimp04, s/Wimp10 - Update cachespritedata and cachetoolspritedata to look at the modeflags, ncolour and alpha mask flag when deciding if sprite_needsfactors should be set or not (i.e. whether the code ultimately uses OS_SpriteOp 52 or 34). This should allow the Wimp to correctly detect if a sprite can safely be rendered by the Kernel or not (except for double pixel vs. non-double pixel - but presumably nobody's using double pixel mode sprites for icons/tool sprites, otherwise it would be fixed by now?)
        s/Wimp04 - Add an extra safety check to icon text rendering after a crash was seen when calling Wimp_PlotIcon outside of a redraw loop
      Admin:
        Tested on BB-xM
        Fixes problem reported on forums with 32bpp, alpha-masked sm!Netsurf icon vanishing from filer when viewed in 32bpp modes
        https://www.riscosopen.org/forum/forums/3/topics/309?page=4#posts-25995
      
      
      Version 5.33. Tagged as 'Wimp-5_33'
      b5280514
  3. 08 Sep, 2013 1 commit
    • Robert Sprowson's avatar
      3 minor fixes, 2 minor enhancements · a9c3b548
      Robert Sprowson authored
      Makefile:
      * Conditionally copy the disc resources, saving a little build time.
      Wimp10.s; hdr/Wimp:
      * Issue Service_WimpToolSpritesChanged when the tool sprite area is changed.
      Wimp05:
      * Fix bug in softloaded versions of the Wimp where menus would randomly lose the keyboard shortcut text. This was caused by use of an LDR to retrieve a byte wide variable. This specifically affected some softloads because the Wimp gets squeezed, and during unsqueezing the Wimp's workspace ends up being allocated from the same bit of RMA that used to contain the squeezed copy of the module (=lots of random numbers).
      Wimp09:
      * Fix bug where configuring WimpSpritePrecedence to ROM when a theme is loaded would cause redrawing of window textures to fail. This is because the Wimp intersects the ROM and RAM sprite areas and deletes any duplicates from the RAM area when remaking the fast lookup sprite list. So if the RAM sprites include the "tile_1" (etc) sprite on redrawing the desktop the Wimp points to this, then intersects the lists and deletes the sprite, leaving the pointers pointing at junk. Now, on deleting something, the window tile pointers are invalidated. Fixes ticket #346.
      Wimp02:
      * Fix bug where the title bar text, when the desktop font is the system font, is incorrectly rendered in the colour selected by WimpVisualFlag -WindowOutlineColour. The Wimp now restores the text colour if -WOC has set the graphics colour to something other than black.
      
      Administrative -
      In Wimp01, swap a couple of SpriteReasons from magic numbers. In the init of variables use the common reset_all_tiling_sprite function.
      In Tiling3D, more SpriteReasons, and rationalise the registers used in reset_all_tiling_sprites.
      
      Version 5.32. Tagged as 'Wimp-5_32'
      a9c3b548
  4. 06 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Replace OS_SpriteOp reason code magic numbers with definitions. Add support for new screen modes. · fa42b0ad
      Jeffrey Lee authored
      Detail:
        s/Tiling, s/Tiling3D, s/Watchdog, s/Wimp05, s/Wimp07, s/Wimp09 - Replaced OS_SpriteOp reason code magic numbers with symbolic definitions.
        s/Wimp01 - Update *WimpMode / Wimp_SetMode to use OS_ScreenMode 13 (mode string to specifer) in place of its own code if a mode specifier string has been given. Note - mode number handling is unchanged, so a mode specifier string which begins with a mode number will currently have the specifier part ignored.
        s/Wimp01, s/Wimp02 - Flag_* -> ModeFlag_* renaming
        s/Wimp02 - Fix mode specifier copying to only stop copying when we hit a mode variable of -1. Previous code would also stop if the variable value was -1. Update mode set code to apply the Wimp's special greyscale palettes if the greyscale mode flag is set (i.e. greyscale mode was set via specifier generated by OS_ScreenMode 13)
      Admin:
        Tested on BB-xM
      
      
      Version 5.31. Tagged as 'Wimp-5_31'
      fa42b0ad
  5. 01 Jun, 2013 3 commits
    • Robert Sprowson's avatar
      Add flexible scheme to allow non-grey/opaque toolsprites · 2137a784
      Robert Sprowson authored
      The Wimp can now accept toolsprite sets which have precalculated (non default) colour translation tables supplied by the designer.
      This allows the link between window template colour and displayed tool colour to be reestablished when the tools aren't grey (previously, the Ursula Wimp would only tint greys).
      For full design details see Doc/ToolTables.
      An example test set, TestO/TTTTest is provided. This is the 'Newlook' set but with a splotch in the corner of each sprite which is then replaced by the hex of the Wimp colour being requested.
      Detail:
       Wimp01.s: New workspace requirements
       Wimp04.s: Pull out the RGB to greyscale function so it can be used elsewhere
       Wimp10.s: New tool table support code
      
      Fixes ticket #323.
      Also introduces a disc variant (with the extra EX0 EY0 resolution) of the 'Steel' theme, thus making it generally available.
      
      Version 5.30. Tagged as 'Wimp-5_30'
      2137a784
    • Robert Sprowson's avatar
      Change to method of window highlighting · d137f7ac
      Robert Sprowson authored
      The change made in Wimp-5_02 to Wimp-5_03 (to permit 'f' prefixed toolsprites) introduced a set of interesting boundary cases not covered by that scheme.
      This commit restores the former behaviour, while retaining its simplification of H/V scrollbar plotting (beefed up with a few ASSERTs).
      Part of fix for ticket #323.
      
      Tagged as Wimp-5_30-pre4.
      d137f7ac
    • Robert Sprowson's avatar
      Don't try freeing the tool pixel trans table twice · 1f206e86
      Robert Sprowson authored
      In deallocptrs a call to freetoolarea is made, then much the same code repeated inline.
      Excess code deleted.
      
      Tagged as Wimp-5_30-pre2
      1f206e86
  6. 21 May, 2013 1 commit
  7. 18 May, 2013 1 commit
  8. 11 May, 2013 1 commit
  9. 09 May, 2013 1 commit
    • Robert Sprowson's avatar
      Change to RMA shrinkage in *ICONSPRITES pre Medusa · 46989188
      Robert Sprowson authored
      On completing the sprite area merge the Wimp would try to minimise the RMA by -256MB (to account for the fact that during the merge the RMA is enlarged to hold both the existing sprites and the new ones to be merged, in the case of duplicates).
      However, this meant that the common construct
      
        IconSprites MySprites
        Run MyApp
      
      where MyApp wanted to use more than a teaspoon of RMA would fail due to the lack of free pool and that the RMA can't be resized when an application is running as a result.
      
      Now, the Wimp notes the free space in the RMA, does the -256MB shrink, then ensures there's still the same free space after the event (ie. overall it may have grown by the size of any extra sprites added during the command).
      Tested on RISC OS 3.10.
      
      Version 5.26. Tagged as 'Wimp-5_26'
      46989188
  10. 06 May, 2013 1 commit
    • Robert Sprowson's avatar
      Refinements to disc based targets especially · a30a2489
      Robert Sprowson authored
      Previous attempt to disable Sprites11 support for 3.10 and 3.50 hadn't spotted it was reenabled in the common options, also the Sprites11 switch was also tied up in Wimp$IconTheme support.
      Title bars would flicker when picked up when using a tool sprite set with no 'p' pushed equivalents on RISC OS 4.0x due to screen cache.
      Makefile now installs a default set of tools & sprites when target is ThemeDefs.
      CLI limit reduced to 256 pre Ursula to save RAM.
      
      Options/!Common:
        Promote Sprites11 switch into !Default
        Remove fixrmatools
      Options/!Default:
        Sprites11 true by default
        LongCommandLines true by default, false on targets pre Ursula
        Remove ServiceCallTable (harmless to have it in all cases)
      NewSWIs.s:
        Enable Wimp_Extend 13 all the time
      Wimp01.s:
        Reduce RMA use by vital 1.5k for non long command line case
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt ServiceCallTable switch permanently
      Wimp02.s:
        Comments ammended
      Wimp07.s:
        Range of ADR
      Wimp10.s:
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt :LNOT: fixrmatools switch permanently
        Supress title bar sprite plotting when none of the sprites exist
      
      Version 5.25. Tagged as 'Wimp-5_25'
      a30a2489
  11. 03 May, 2013 1 commit
    • Robert Sprowson's avatar
      Slacken pointer checks · 42e284a3
      Robert Sprowson authored
      The pointer comparison checking required when running in a system with > 64M memory was tightened up from Wimp-4_75 to Wimp-4_76, but to allow the module to target pre RISC OS 5 systems an option to relax those checks is required.
      Each check has been revisited and where appropriate demarked with a "AcceptLoosePointer" macro, which just remaps the pointer into the stricter form and carries on. In the strict checking case, the macro reduces to nothing.
      
      Detail:
      Add AcceptLoosePointers switch.
      Retire singular use of StrongARM switch (calling XOS_SynchroniseCodeAreas is harmless pre StrongARM anyway).
      Rename Ursula_RPC options to RO400.
      Put duplicate documentation in the attic.
      Allow -2 or -1 as the iconbar handle in Wimp_ResizeIcon (ticket #203).
      Tighten up the list terminator check in the DebugMemory switch of Memory.s
      
      Tested on RISC OS 3.10 (emulated), 3.50, 3.60, 3.70, 4.02.
      
      Version 5.24. Tagged as 'Wimp-5_24'
      42e284a3
  12. 27 Apr, 2013 1 commit
  13. 10 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Build fixes for variants pre RISC OS 5 · fc22d68f
      Robert Sprowson authored
      Minor fixups as part of univeral !Boot work.
      Options no longer ASSERT on International_Help (which is a definition exported by the kernel, rather than a build switch), and instead define a switch which is true for > 3.50.
      Non UTF8 supporting case has simple substitutes for Wimp_TextOp.
      Legacy_DomainId and LegacyIRQsema no longer cause NULL pointer dereference.
      MOVeQ => MOVEQ to placate ObjAsm.
      
      Ursula_RPC version built and used briefly on RISC OS 4.02 host. No other run time testing.
      
      Version 5.22. Tagged as 'Wimp-5_22'
      fc22d68f
  14. 28 Mar, 2013 1 commit
    • Robert Sprowson's avatar
      Add support for wide translation tables for window tool furniture · cd1be707
      Robert Sprowson authored
      With the introduction of 16bpp/32bpp modes it became possible to request tables from ColourTrans which used > 1 byte per colour, but the Wimp wasn't using this extension. Therefore tool sprites designed in 8bpp or less would be quantised horribly when plotted in a 16bpp or 32bpp mode.
      The Wimp now requests and plots with a wide table, and to avoid thrashing ColourTrans so much with the prevalence of individually paletted icon sprites, keeps the table seperately to the icon sprites ones. At worst (in 32bpp) this uses an extra 256x4 bytes of RAM.
      Trace.s: Split out the tracing routines from Wimp10 as it was getting a bit big.
      Tiling.s: Namespace change for the icons versus tools distinction. Removed some unnecessary PC+8/PC+12 confused NOPs.
      Tiling3D.s: Namespace change for the icons versus tools distinction.
      Wimp01.s: New set of variables to track the tool translation tables separately. Various jiggling to keep ADRs in range.
      Wimp02.s: Namespace change. Remove some double handling in Wimp_SetColourMapping.
      Wimp04.s: Namespace change. Made factor rationalisation common to both the icon and tool grinding code. Removed dual use of cachespritedata for both icons and tools. The tintfunc moves to Wimp10. Service_InvalidateCache confusion resolved by adding a new flag to remember that the tools need regenerating rather than just marking the tool list as missing (which subsequently got restored in Tool_SpriteOp without actually doing any palette work.
      Wimp10.s: Label tools_area renamed as it was immensely confusing to have that (which was actually holding the RMA allocation of the tool_list) and tool_area (which contains the sprite area) hanging around. Changed references to use tools-only cachetolspritedata routine. Added 'wide' flags to sprite op and colour trans calls. Tool_SpriteOp changed to actually regenerate the colour tables when they're known invalid (previously the tools list pointer was merely restored and no colour tables used). Trace functions extracted. Resolved confusion as to what recache_tools_trans and recache_tools_trans2 should be doing.
      
      Tested with 4bpp "NewLook" sprites in 4bpp/8bpp/16bpp/32bpp and 8bpp smooth greyscaled "Steel" tool sprites in same modes.
      Also ran a task window doing repeated Service_InvalidateCache calls while monitoring the RMA for leaks.
      Generally navigated around some directories to ensure that inverse icons (during double click) and filer windows (with individually paletted sprites) were being rendered.
      
      Version 5.20. Tagged as 'Wimp-5_20'
      cd1be707
  15. 16 Jul, 2012 1 commit
  16. 24 Jun, 2012 1 commit
  17. 23 Jun, 2012 1 commit
    • Robert Sprowson's avatar
      Preset Wimp$IconTheme on initialisation to UserIF if not already set · 5283be1f
      Robert Sprowson authored
      Therefore, when in ROM, the ROM theme can be inferred. When a different theme is selected by the user in the boot sequence, that is respected.
      Restore a lost error message for *ICONSPRITES when the file doesn't exist even after trying all the 11/22/23 suffix and prefixes. This seems to have been lost post RISC OS 3.10 when Sprites22 support was added, but it is an error for the file given to not exist at all (cf. *TOOLSPRITES).
      Typos in docs ammended.
      
      Version 5.15. Tagged as 'Wimp-5_15'
      5283be1f
  18. 10 Mar, 2012 1 commit
  19. 23 Jan, 2012 1 commit
    • Robert Sprowson's avatar
      Add extra Wimp_ReadSysInfo reasons 23/24/25/26/28. · 23680e24
      Robert Sprowson authored
      RISC OS Select has added reasons 18-27 and this change implements those that map directly to features that already exist (unimplemented ones return an error as before).
      One additional reason, 28, permits the reading of the flags collected from the *WimpVisualFlags command so that applications can discover if the cheesy 3D borders are on or not.
      
      Version 5.14. Tagged as 'Wimp-5_14'
      23680e24
  20. 04 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Make compatible with zero page relocation · ac6e04e7
      Jeffrey Lee authored
      Detail:
        s/Wimp, s/Wimp01, s/Wimp02, s/Wimp07, s/Wimp08 - Try using OS_ReadSysInfo 6 to get IRQsema & DomainId locations before falling back on legacy values. Store the pointers in module workspace for speedy access.
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.13. Tagged as 'Wimp-5_13'
      ac6e04e7
  21. 26 Nov, 2010 1 commit
    • Jeffrey Lee's avatar
      Make the Wimp automatically switch VFP contexts · b68b72d7
      Jeffrey Lee authored
      Detail:
        s/Wimp, s/Wimp01, s/Wimp02, s/Wimp03, s/Wimp07 - The Wimp now uses the VFPSupport module to switch VFP contexts when performing task switches.
        Each task begins with the null context active (i.e. no VFP/NEON access). When paging out a task the ID of the active context is saved in the Wimp's per-task workspace. This context is then restored when the task is about to be resumed.
        Context save/restore is performed while the right task's memory is paged in, so it's safe to use with contexts located in application space.
      Admin:
        Tested with Iyonix & Beagle ROM builds.
      
      
      Version 5.09. Tagged as 'Wimp-5_09'
      b68b72d7
  22. 11 Jun, 2009 1 commit
    • Ben Avison's avatar
      GET file pathnames changed · 625526b8
      Ben Avison authored
      Detail:
        Uses suffixed file extensions for compatiblity with both objasm and asasm.
      Admin:
        Supplied by Peter Naulls, tested at ROOL
      
      Version 5.05. Not tagged
      625526b8
  23. 20 Apr, 2009 1 commit
  24. 10 Sep, 2008 3 commits
    • Steve Revill's avatar
      Make colour used for the window outline configurable. · 54c5c7c9
      Steve Revill authored
        Allow the outline to be plotted over the window tools.
      Detail:
        The options available through WimpVisualFlags have been extended with two
        new options that control how the window outline is plotted.
      
        WimpVisualFlags -WindowOutlineColour <&RRGGBB> -WindowOutlineOver
      
        WindowOutlineColour defines the colour to be used for the window outline.
        It allows theme designers to choose a window outline colour that fits
        in with a theme's general colour scheme. Default value is black.
      
        WindowOutlineOver controls if the window outline is plotted over the
        toolicons. It can be used to ensure that there is a window outline
        visible even when the toolicons are borderless. Default value is off.
      Admin:
        Tested on RO 5.11
      Author:
        Fred Graute
      
      Version 5.04. Tagged as 'Wimp-5_04'
      54c5c7c9
    • Steve Revill's avatar
      Allow a different set of window toolicons for the window with the input focus. · 58925e79
      Steve Revill authored
      Detail:
        Previous versions of the Window Manager required toolicons to have pixels
        that were transparent so that the background colour could be used to indicate
        whether a window had input focus or not. This means that new sets of toolicons
        either have to have transparent pixels or lose indication of input focus.
        To remove this limitation the support for toolicons has been extended so
        that a different set of toolicons can be used for the window with the input
        focus.
      
        The new icons have the prefix 'f' added to their names as follows:
          <toolname>    standard version of toolicon
          p<toolname>   pressed version of toolicon
          f<toolname>   focus version of toolicon
          pf<toolname>  pressed+focus version of toolicon
      
        Code has been added to ensure that all toolicons are represented.
        This is done in two stages; first the pressed icons are checked and for any
        missing its non-pressed equivalent will be filled in. Next the focus icons
        are checked and for missing ones its non-focus equivalent will be used.
      Admin:
        Tested on Iyonix RO5.11
      Author:
        Fred Graute
      
      Version 5.03. Tagged as 'Wimp-5_03'
      58925e79
    • Steve Revill's avatar
      Fixed misalignment of WimpWriteDir code. · 320528b2
      Steve Revill authored
        Fixed corruption of table with characters to be mapped to WimpSymbol.
      Detail:
        There was an ALIGN statement missing just above the code for WimpWriteDir
      
        The table used to map characters to the WimpSymbol font had become corrupted
        which prevented the mapping from working correctly. This resulted in keyboard
        shortcuts disappearing in menus when using fonts that don't have definitions
        for the required characters, in particular the up-arrow representing shift.
      Admin:
        Tested on RO 5.11
      Author:
        Fred Graute
      
      Version 5.02. Tagged as 'Wimp-5_02'
      320528b2
  25. 17 Jan, 2005 1 commit
  26. 28 Feb, 2003 1 commit
  27. 04 Feb, 2003 1 commit
  28. 20 Jan, 2003 1 commit
  29. 17 Jan, 2003 1 commit
    • Ben Avison's avatar
      Menu bugfixes and sprite variation support. · 3ed6d938
      Ben Avison authored
      Detail:
        * Adjust clicking on menu items was leading to Message_MenusDeleted being
          broadcast, resulting in incorrect behaviour in many applications.
        * Sprite-only menu items (eg !Draw's line pattern submenu) now highlight
          correctly when tiled menus are configured.
        * Added Wimp_Extend 13, which works out the appropriate resolution suffix
          for a given sprite pathname - required since Sprites11 support needs
          an iterative approach. This supercedes Wimp_ReadSysInfo 2.
        * *IconSprites now tries prefixing the last element of its path argument
          with "<Wimp$IconTheme>".
      Admin:
        Tested on Tungsten.
      
      Version 4.85. Tagged as 'Wimp-4_85'
      3ed6d938
  30. 20 Dec, 2002 1 commit
    • Ben Avison's avatar
      Bugfixing, Sprites11 support and stretchy command windows. · 67775716
      Ben Avison authored
      Detail:
        * Bugfix: the contents of the pollword returned in the poll block by
          a PollWordNonZero event, where the pollword was flagged as high
          priority, was rotated by 8 bits due to a internal top-bit-set
          workaround. This no longer happens. (This was causing OmniClient never
          to complete initialisation on my machine.)
        * Extended the alternate resolution icon scheme for RAM/ROM sprites and
          toolsprites to be multi-pass, enabling the use of extra sprite sets for
          weird modes (most notably EX0 EY0 ones). After '23' or '0' suffixes
          (the latter still only applies to toolsprites), the suffix for the
          equivalent polychromatic resolution is tried. After rectangular
          suffixes, the next larger squarer suffix is tried. After '11', '22' is
          tried. Failing all of these, a match is attempted with no suffix.
        * The command window is now scaled and centred to match the current screen
          mode - up to a maximum size of 1280 x 1024 OS units.
        * Fixed the *WimpVisualFlags help strings (again).
        * Fixed 'task2' debugging to know about the structure of the SVC stack on
          32-bit machines.
        * Added support for generation of GPA files.
      Admin:
        Tested on Tungsten.
      
      Version 4.84. Tagged as 'Wimp-4_84'
      67775716
  31. 05 Dec, 2002 1 commit
    • Ben Avison's avatar
      A few bugfixes, and some muching around with WimpVisualFlags that I did ages... · d2f6d63a
      Ben Avison authored
      A few bugfixes, and some muching around with WimpVisualFlags that I did ages ago but hasn't made it into a build yet.
      
      Detail:
        * Deleting icon 0 in a window that had no windows would rotate the
          contents of word &00000010 by 16 bits. This had the effect of causing
          lazy task swapping to blow up with an "undefined instruction" error.
        * Setting the caret to a byte position beyond the end of an icon's text
          would (a) loop indefinitely if the alphabet is UTF-8, or (b) data abort
          for any other alphabet. This was due to the code trying to determine the
          number of characters in the string, and ignoring the terminator;
          skipcharR would never advance far enough to satisfy the loop in UTF-8,
          in other alphabets it would advance as far as necessary, leading to the
          later code to try to step a huge number of characters through the
          pushfontstring copy of the text, running off the top of the SVC stack
          (which is mapped out on Tungsten, previously it abutted the system heap,
          so no ill effects were observed).
        * Keyboard shortcuts are now correctly positoned when 3D menus are selected.
        * Corrected spelling of "dialogue" in *WimpVisualFlags help.
        * Changed *WimpVisualFlags so that no parameters gives RISC OS 3
          behaviour, and -All gives default RISC OS 4 behaviour. (Previously, font
          blending was enabled in both cases, unless explicitly disabled by an
          additional -NoFontBlending switch.) This required a sense change in the
          font blending switch: -FontBlending now enables font blending.
          -NoFontBlending is still accepted without error, but is ineffectual
          (since the no-options state upon which it acts already has font blending
          disabled).
        * Default setting is now as though *WimpVisualFlags -RemoveIconBoxes had
          been executed. (In practice, this will not be noticeably different from
          previous Tematic versions, see below.)
        * The state -RemoveIconBoxes switch was previously assumed always set -
          now, if it is not specified, you get the old RISC OS 3 behaviour back.
      Admin:
        Tested on Tungsten.
      
      Version 4.82. Tagged as 'Wimp-4_82'
      d2f6d63a
  32. 28 Nov, 2002 1 commit
  33. 30 Oct, 2002 1 commit
    • Ben Avison's avatar
      Merged in RISC OS 4.02 changes (including ROM patches). Also som bugfixes. · 3b1e336c
      Ben Avison authored
      Detail:
        RISC OS 4 changes:
        * Font blending for desktop font (based on NC code, but now configurable)
        * 3-D window/menu/iconbar borders
        * Textured menu backgrounds
        * Loss of rubout box in unfilled text+sprite icons
        * *WimpVisualFlags controls various aspects of cosmetic changes above
        * Iconise button "slot" glyph slightly shorter (but only adopted in the RO400
          Resource directory)
        * Command window has front-window flag set
        * Byte at +39 of the window block has gained two new flag bits:
            bit 2 set => this window must never be given a 3D border
            bit 3 set => this window must always be given a 3D border
            (note that ResEd erroneously created windows with both bits set,
            this case is treated as though both bits were clear)
        * Another two colour specifiers on the end of C validation string command
          for icons controls the foreground and background colours to be used when
          the icon is selected
        * Pointer shape is correctly reprogrammed by the creation of icon
          underneath it
        * Full stops in writable icons are treated the same as spaces from the
          point of view of cursor navigation
        * spritesize routine returns a size of 0 if the sprite didn't exist
          (probably fixes some rendering problems)
        * Adjust-click on back icon brings window to front
        My changes:
        * DeleteRight turned on
        * Icon bar title background is set to default in all resource sets (avoids
          translation table recalc)
        * Error box title now cream across all resource sets
        * RISC OS 4 changes made 32-bit compatible / high addresses safe
        * Undocumented FullIconClipping option disabled
        * Command help made consistent for internationalised and non-
          internationalised builds
        * WimpVisualFlags defaults made sensible
        * Menu side width affected by ThreeD option at *run* time not assemble time
        * Right-clicking on menus with writable items no longer data aborts
        * Auto-opened menus are now at RHS of current icon (matches RISC OS 3.1)
        * Colour menus were knackered unless menu tiling was enabled
        * Fixed a bug whereby adding messages to a task that wanted all messages
          actually caused it to lose all other messages. The RISC OS 4 fix for
          this didn't work
        * Fixed bug introduced in version 4.76: tasks that wanted no messages got
          all of them
        * Autoscrolling is updated every 8 cs rather than every 12 cs
        * Added menu texture to pre-RISC OS 4 sprites files
      Admin:
        Tested on Tungsten.
      
      Version 4.78. Tagged as 'Wimp-4_78'
      3b1e336c
  34. 25 Oct, 2002 1 commit
    • Ben Avison's avatar
      Memory-related stuff. · d085c3c9
      Ben Avison authored
      Detail:
        * Default UpCall handler is installed when an application is paged out,
          so there is no danger of it being called by naughty people issuing
          UpCalls in the background.
        * AMBControl builds now sit on Service_MemoryMoved so that they can issue
          Message_SlotSize when the kernel has resized the application slot
          independently (eg because the memory was needed to grow a dynamic area,
          and nobody objected via Service_Memory or UpCall_MovingMemory).
        * Medusa-onwards builds no longer request Service_ValidateAddress, because
          we're not managing the free pool any more, and the code that was here
          only called an ineffectual SWI!
        * SafeChangeDynamic wasn't setting the CAO high enough to be free of big
          application slots; now it points it at itself.
        * The free pool wasn't being shrunk/grown enough on initfirsttask /
          closelast. It still can't do by more than 1GB without stiffing - bug in
          kernel?
        * Bugs in top-bit-safe changes fixed: dragbox resizing was broken, Escape
          state wasn't being restored for new tasks.
      Admin:
        Tested on high-ROM/stack, 48M-appslot Tungsten.
      
      Version 4.77. Tagged as 'Wimp-4_77'
      d085c3c9
  35. 23 Oct, 2002 1 commit
    • Ben Avison's avatar
      Given a good thrashing. · c8e139f1
      Ben Avison authored
      Detail:
        All pointers passed to the Wimp (mode selectors, menus, sprite areas,
        palettes, pollwords, validation strings, message lists, routines etc etc)
        in any of its APIs can now be anywhere within the 32-bit address range.
        In general, whenever "<= 0" was accepted as a null condition, the value
        must now be either 0 or -1. It should also be tolerant of system memory
        areas (supervisor stack and RMA) being in the top half of memory.
        Also:
        * Default next slot now a build option - Ursula builds (eg Tungsten) use
          1024K instead of 640K
        * Ursula builds no longer have a build variant in the help string
        * Autosenses ROM location
        * CR-LFs in *Configure messages replaced with LF-CRs
        * Added Iyonix resources (currently based on Morris4)
        * Morris4 sprites files have gained file_lxa, small_lxa, file_unf,
          small_unf and lo!help sprites
        * Ursula sprites files have gained lo!help sprites
        * *WimpSlot can take memory sizes in megabytes or gigabytes
      Admin:
        Tested on a "traditional" memory-mapped Tungsten.
      
      Version 4.76. Tagged as 'Wimp-4_76'
      c8e139f1