1. 14 Jul, 2021 1 commit
    • Jeffrey Lee's avatar
      Fix Message_TaskInitialise reporting wrong slot size · be560349
      Jeffrey Lee authored
      Message_TaskInitialise was reporting that MemoryLimit was the slot size
      of the application, which was resulting in the task manager showing the
      wrong slot size if for some reason MemoryLimit had been artificially
      reduced below ApplicationSpaceSize (e.g. due to the task being a child
      of a C system() call). And because MemoryLimit is lower than
      ApplicationSpaceSize, any attempt the task makes to grow/shrink its wimp
      slot is denied, so task manager will be stuck showing the wrong value
      for the entire lifetime of the task.
      
      Fix Message_TaskInitialise to use ApplicationSpaceSize instead, so that
      the total size of the slot is reported instead of just the usable area.
      
      This fixes task manager incorrectly showing that Fat32Fs has a slot size
      of 0 on some of my Raspberry Pis, when really it has a size of 256K.
      This discrepancy was also causing the "System memory allocation" numbers
      to not total up correctly (the sum was 256K lower than the displayed
      total).
      be560349
  2. 14 Dec, 2019 1 commit
    • ROOL's avatar
      Add copy & paste and drag & drop operations to the Wimp · 0fb14a00
      ROOL authored
      Detail:
        The text in writable icons can now be manipulated using the familiar keyboard shortcuts, or using Drag and Drop in conjunction with any compliant applications.
        Further details are in Doc/DragAndDrop along with information on API extensions which are implemented.
      Admin:
        Submission for Clipboard Support bounty.
      
      Version 5.65. Tagged as 'Wimp-5_65'
      0fb14a00
  3. 24 Jul, 2017 1 commit
    • Jeffrey Lee's avatar
      Remove startup delay from power saving code · 74a6db0a
      Jeffrey Lee authored
      Detail:
        s/Wimp02 - Get rid of the magic ~30 second delay before the Portable_Speed/Portable_Idle power saving kicks in. The fast/slow thresholds are self-adjusting, and any non-null poll event will kick the system into high speed, so removing the startup delay isn't likely to have any adverse affect on desktop startup time.
        s/Wimp01 - MaxIdleEvents is now redundant, remove it
      Admin:
        Tested on Raspberry Pi 3
        Should resolve issue reported on the forums where RPCEmu thrashes the hosts's CPU for 30 seconds after entering the desktop:
        https://www.riscosopen.org/forum/forums/10/topics/8990
      
      
      Version 5.59. Tagged as 'Wimp-5_59'
      74a6db0a
  4. 11 Apr, 2017 1 commit
    • Robert Sprowson's avatar
      Gate the recache of currentmode · 50eea7b2
      Robert Sprowson authored
      The operations at module init and at Service_PreReset are both implicitly pre desktop, however it is valid to have Service_ModeFileChanged while in the desktop (for example, if selecting a different MDF from !ScrnSetup).
      Gate the one hanging off Service_ModeFileChanged to only act when there are no tasks active (ie. outside the Wimp).
      Fixes problem reported https://www.riscosopen.org/forum/forums/4/topics/9206 with NetSurf redraw.
      
      Version 5.58. Tagged as 'Wimp-5_58'
      50eea7b2
  5. 08 Apr, 2017 1 commit
    • ROOL's avatar
      Recache currentmode at the right time · 121acd27
      ROOL authored
      Detail:
        Modification to make the Wimp reread 'currentmode' by calling OS_ReadSysInfo 1 in the following circumstances
        1. On module init (accounts for being softloaded off disc)
        2. At Service_Reset (accounts for any graphics driver starting after it in ROM module order)
        3. When Service_ModeFileChange (new, this catches the new mode selected by an MDF or EDID during !Boot)
        Commoned up these 3 cases into 1 function.
        This restores the design intent that to get the monitor's native resolution it is *not* required to configure the MonitorType=EDID, indeed doing so wouldn't have helped loading EDID off disc if the monitor's data is found to be incorrect and needing overriding.
      Admin:
        Tested on a Pandaboard with MonitorType=Auto and resolution chosen as "Native", resulting in a desktop at the panel resolution.
      
      Version 5.57. Tagged as 'Wimp-5_57'
      121acd27
  6. 08 May, 2016 1 commit
    • Jeffrey Lee's avatar
      Avoid unnecessary remainder calculations · ace2e66f
      Jeffrey Lee authored
      Detail:
        s/Wimp01, s/Wimp02, s/Wimp05, s/Wimp08s, s/Wimp10 - Avoid unnecessary remainder calculations in DivRem macro. Also make more use of DivRem's ability to accept a constant (not a register) as the divisor.
      Admin:
        Tested on Cortex-A15
      
      
      Version 5.52. Tagged as 'Wimp-5_52'
      ace2e66f
  7. 20 Jul, 2014 1 commit
    • Robert Sprowson's avatar
      Add definitions of button types 11/14/15 · 2ddbcbf5
      Robert Sprowson authored
      Button type 11 was added in 1988 so is about time it had a symbol to refer to it in the sources. Added & used said symbols.
      Removed 'DoubleIcon' switch, prototype button type 12.
      Built binary identical module, not tested.
      
      Version 5.43. Not tagged
      2ddbcbf5
  8. 02 Jul, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix G16 modes · d1bdba23
      Jeffrey Lee authored
      Detail:
        s/Wimp02 - With Kernel-5_35-4_79_2_210 and later, the greyscale palette flag updates in real time to reflect the current state of the palette. Therefore we must read the state of the flag before we set our colour palette, otherwise we won't know that we need to apply the greyscale fixup afterwards.
      Admin:
        Tested on BB-xM
      
      
      Version 5.43. Tagged as 'Wimp-5_43'
      d1bdba23
  9. 19 Apr, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for missing window backgrounds/scroll bars when tiled sprite op not supported · f0e0f3ad
      Robert Sprowson authored
      For the backgrounds, the code was switched with 'standalone' however the Wimp actively wipes SA_FLAGS in its makefile so the standalone switch is always false during the install phase of a disc build. Also, the standalone switch is used to include resources which are ordinarily handled by the boot sequence prefixing the WindowManager$Path rather than using ResourceFS.
      For the scroll bars, the decision to plot manually was being made by looking at the V flag on return from Tool_SpriteOp, except that that function uses EntryS/EXITS so the caller can't see the return flags.
      Added new switch CanTileManually, removed 0 use tilewithspriteops switch.
      Changed single use of NoFontBodge switch to use preferred 'outlinefont'.
      Tested on RISC OS 4.02.
      
      Version 5.41. Tagged as 'Wimp-5_41'
      f0e0f3ad
  10. 18 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix *WimpMode/Wimp_SetMode to return an error when given a bad mode selector... · fe39094e
      Jeffrey Lee authored
      Fix *WimpMode/Wimp_SetMode to return an error when given a bad mode selector block. Re-read configured mode on Sevice_Reset.
      
      Detail:
        s/Wimp01 - Reinitialise currentmode on Service_Reset in order to get the correct mode in the case of a GraphicsV driver overriding it (driver may not have been initialised at the time of the first call in module init). Add a bit more mode debugging and ensure ValidateAddress code completely removed under Medusa.
        s/Wimp02 - Issue OS_CheckModeValid in validatemode so we can detect cases where a valid looking mode selector block doesn't actually map to a mode definition. Add more mode debugging code.
      Admin:
        Tested on Raspberry Pi
        Fixes issue where "F12 -> *BASIC -> MODE 0 -> QUIT -> return" wouldn't restore screen mode correctly if currentmode had been set to a bad mode selector (e.g. after a CMOS reset nukes the LoadModeFile command), due to WimpMode's lack of error checking
        Note that this merely prevents currentmode being set to a bad mode at the time of *WimpMode/Wimp_SetMode - if a mode which is valid suddenly becomes invalid (e.g. due to loading a new MDF but not reselecting a valid wimp mode) then the Wimp will still fail to set a sensible mode on return to the desktop.
      
      
      Version 5.40. Tagged as 'Wimp-5_40'
      fe39094e
  11. 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
  12. 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
  13. 01 Jun, 2013 1 commit
    • 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
  14. 23 May, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for null pointer dereference & data abort on swapping to no toolsprites · d2b00489
      Robert Sprowson authored
      This specific case failed when the topmost window in the window stack (ie. the first to be attempted to be redrawn on reentering the desktop) had the focus and thus attempts to enable Ursula tinting.
      Though a check was made to see if the first sprite (from which the tint is derived) was present, no check was made to see if the tool_list was present => dereferenced NULL pointer.
      Retagged as Wimp-5_29.
      d2b00489
  15. 21 May, 2013 1 commit
  16. 18 May, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for missing window gadgets when no tool sprites are loaded · 18031756
      Robert Sprowson authored
      When 'outlinefont' is enabled, the drawicon_system function used to plot the close/back/resize etc icons tries to do so from the currently selected outline font.
      This usually results in various top bit set characters inappropriately being shown.
      Now, when there are no tool sprites loaded the gadgets are forced to be plotted in the system font (where the Wimp has carefully redefined the font), but the remainder of the desktop (eg. the title bar, user text) stays in the selected desktop font.
      
      Version 5.28. Tagged as 'Wimp-5_28'
      18031756
  17. 11 May, 2013 1 commit
  18. 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
  19. 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
  20. 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
  21. 24 Jun, 2012 1 commit
  22. 10 Mar, 2012 1 commit
  23. 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
  24. 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
  25. 10 Sep, 2008 2 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
  26. 23 Jan, 2003 1 commit
    • Ben Avison's avatar
      Bugfixes. · d8fd0994
      Ben Avison authored
      Detail:
        * All tasks have erroneously been flagged as receiving all messages since
          version 4.78. Correct behaviour is now restored, and the previous
          fix (to ignore Wimp_AddMessages calls for tasks that already wanted
          all messages) should be unaffected.
        * Check for "P"-validation icon creation under the pointer was broken
          in three ways, now works.
        * The optimisation of multiple Message_SlotSize calls is overenthusiastic,
          and can lead to some messages being lost if the slot size is changed
          (including as a side-effect of OS_ChangeDynamicArea) during
          high-priority pollword-nonzero handlers or message handlers for
          Message_SlotSize - in both situations, a message block that may have
          already been delivered to some tasks is still present at the head of
          the message list. Now, the optimisation always ignores the message at
          the head of the message list.
      Admin:
        Tested on Tungsten.
      
      Version 4.86. Tagged as 'Wimp-4_86'
      d8fd0994
  27. 13 Dec, 2002 1 commit
    • Ben Avison's avatar
      Bugfix and feature. · d17be908
      Ben Avison authored
      Detail:
        * Validation string commands to set the pointer shape were incorrectly
          interpreted if they contained commas to set the active point.
        * Holding down shift when clicking on the back icon will only move the
          window by one position within the window stack.
      Admin:
        Tested on Tungsten.
      
      Version 4.83. Tagged as 'Wimp-4_83'
      d17be908
  28. 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
  29. 31 Oct, 2002 1 commit
    • Ben Avison's avatar
      Bugfixes. · 25c8889b
      Ben Avison authored
      Detail:
        * Message list pointers passed into Wimp_Initialises that didn't follow
          Wimp_StartTask used to be corrupted
        * Stack imbalance in ExitPoll if SWI Portable_Speed didn't preserve flags
        * 32-bit mode test speedups
        * Builds without RO4 option set
      Admin:
        Tested on Tungsten and Risc PC.
      
      Version 4.79. Tagged as 'Wimp-4_79'
      25c8889b
  30. 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
  31. 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
  32. 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
  33. 11 Jan, 2002 1 commit
    • Ben Avison's avatar
      Menu-related tinkering. · c7bbe2b5
      Ben Avison authored
      Detail:
        * Keyboard shortcuts in menus are now correctly aligned (and menus will
          be one pixel wider to compensate for the downwards rounding in SWI
          Font_ConverttoOS).
        * There is no longer any danger of menu titles being treated as though
          they contain a keyboard shortcut.
        * Dialogue boxes may now contain nested windows.
      Admin:
        Tested on a Risc PC.
      
      Version 4.72. Tagged as 'Wimp-4_72'
      c7bbe2b5
  34. 14 Sep, 2001 1 commit
    • Ben Avison's avatar
      Commit of my Wimp changes that have trickled in over the last four months. · 69d67881
      Ben Avison authored
      Detail:
        * The pointer passed to Wimp_CommandWindow can now be top-bit-set.
        * Bugfix to Wimp_CommandWindow: if the current task was uninitialised,
          or initialised as a non-multitasking task, then although entering the
          CommandWindow would restore escape condition generation to the way it
          was before entering the desktop, exiting the CommandWindow did not
          reset escape condition generation to the default desktop state (which is
          for escape condition generation to be disabled).
        * Escape condition generation is disabled for the duration of SWI
          Wimp_ReportError (instead of setting the default escape key for the
          duration). The previous state is restored on exit.
        * Added a minimal environment for the service call
          Service_ErrorButtonPressed, so that claimants can call OS_Exit without
          leaving the global Wimp error box in an undefined state.
        * In the Wimp_Poll loop, if there are no events to deliver to any tasks
          (not even null events), then rather than sitting in a SVC mode loop,
          the Wimp now triggers transient callbacks. This is particularly
          important in order not to halt all activity in the Internet stack.
          The option LeaveOS can be set to make the Wimp use the as-yet
          unimplemented SWI OS_LeaveOS for this purpose; this is currently unset
          for all builds.
        * By (persistent) request, reinstated the old iconbar popping code,
          though it is currently a build switch that is turned off for all builds.
      Admin:
        Tested on a Risc PC.
      
      Version 4.69. Tagged as 'Wimp-4_69'
      69d67881
  35. 29 May, 2001 1 commit
    • Ben Avison's avatar
      Minor fixes, some of which have been waiting to be committed for a while. · 6fb60dbf
      Ben Avison authored
      Detail:
        * Command line buffer for Wimp_StartTask (and anything that uses it,
          eg *WimpTask) increased from 256 bytes to 1024 bytes.
        * Top-bit-set message list pointers passed to Wimp_Initialise and
          Wimp_RemoveMessages now work (there was never a problem with
          Wimp_AddMessages!)
        * The fix for top-bit-set application name pointers in Wimp 4.65 actually
          only fixed lookup for "<application> may have gone wrong" lookups. They
          now work correctly in error window title construction, and when
          constructing an application sprite name if flag bit 8 is clear.
        * A pointer value of 0 is now accepted in addition to -1 for an
          "<application> may have gone wrong" lookup - this brings it into line
          with the other two places where the application name pointer is
          referenced.
        * When constructing an error window title, the Wimp would skip any leading
          backslash character. Now it does so when constructing "<application> may
          have gone wrong" too - this is a simple way to disable the application
          sprite in the error window.
      Admin:
        Error box behaviour actually tested this time!
      
      Version 4.67. Tagged as 'Wimp-4_67'
      6fb60dbf
  36. 23 Feb, 2001 1 commit
    • Stewart Brodie's avatar
      Improvement to menu creation code. · 5345e294
      Stewart Brodie authored
      Detail:
        Instead of continually extending the menu windows icon by icon, this
          version calculates how many icons it is going to need, and claims
          them en bloc, marking all the icons as deleted so that as the menu
          code creates each icon, no more block extending needs to be done.
        int_create_multiple_icons does the extension work; the menu generation
          code in Wimp05 does the initialising before calling int_create_icon
          lots of times (3*number of items in menu)
      Admin:
        Tested in a desktop build.
      
      Version 4.62. Tagged as 'Wimp-4_62'
      5345e294
  37. 30 Nov, 2000 1 commit
    • Ben Avison's avatar
      Wimp_SetMode called outside the desktop now has no effect again. · 17b44c2a
      Ben Avison authored
      Detail:
        32-bitising introduced the bug: the routine copy_mode_specifier no longer
        preserves flags, but Wimp_SetMode was relying on it doing so. Wimp_SetMode
        has been changed to re-test the number of active tasks again after the flags
        have been corrupted.
      Admin:
        Tested in a desktop build.
      
      Version 4.60. Tagged as 'Wimp-4_60'
      17b44c2a
  38. 20 Oct, 2000 1 commit
    • Ben Avison's avatar
      Shock horror - a new feature for the Wimp! And some housekeeping too. · d7d18819
      Ben Avison authored
      Detail:
        * Added new functionality for menu trees: submenus can now be opened by
          clicking on their parent menu item. This is particularly aimed at
          touchscreen devices, and is configurable via the new *Configure keyword
          WimpClickSubmenu.
        * Change to the menu inactivity timeout behaviour after auto-opening of
          submenus (either by hovering over the parent menu item or by the new
          click-to-open functionality): although all hover operations are still
          ignored for this period, any click operations *will* now be obeyed.
        * Corrected numerous misleading comments in the menu handling code.
        * Added some suspiciously absent ALIGNs in the *Configure keyword handlers.
        * Uses new ASCII case-forcing macros so there are now fewer warnings
          printed during assembly (and it should run faster now too).
        * Added an AREA directive so that objasm's -ABS switch is no longer needed.
        * Standardised ErrMem token across all Messages files that use English.
      Admin:
        Tested on a desktop machine.
        Requires HdrSrc 1.06.
      
      Version 4.57. Tagged as 'Wimp-4_57'
      d7d18819
  39. 20 Jun, 2000 1 commit
    • Ben Avison's avatar
      Minor bugfix. · 5443a7f5
      Ben Avison authored
      Detail:
        On previous Wimps, if you chose to disassociate the Wimp's physical colour
        mapping from the Wimp palette (using SWI Wimp_SetColourMapping), then
        subsequent calls to Wimp_SetPalette would write over the physical colour
        mapping instead of the Wimp palette. *WimpPalette, conversely, had the
        correct behaviour (ie it only ever affected the Wimp palette).
      Admin:
        There are actually loads of remaining bugs in the Wimp regarding the
        subtle difference between the physical colour mapping and the palette. Some
        calls try to cause a screen redraw in some circumstances, generally the
        wrong circumstances, and without all the necessary internal Wimp variables
        having been reset (so for example, you might find that window borders end
        up ibeing rendered incorrectly). It probably hasn't all worked properly
        since RISC OS 3.1...
      
      Version 4.53. Tagged as 'Wimp-4_53'
      5443a7f5