home *** CD-ROM | disk | FTP | other *** search
- > !ReadMe file for WinMgr (01 Jul 1995)
- =========================
-
- To patch either WM3.22m (a non-existant version), or WM3.16 (standard A5000),
- grab the module using !Zap and save it as Module in this directory. Then run
- the relevant Patch file to install or remove the patch.
-
- The source code for the patches is provided in JFPatch form and the
- intermediate basic code for Patch316 is also provided.
-
- For more information on exactly what is happening refer to file Patch316.
-
- Acron's !Patch
- --------------
- It would appear that patch is very wierd. Firstly it won't allow multiple
- patch files for the same application so that different versions can be
- catered for. If you do then only the first is recognised, but the data in the
- last is held for comparisson and therefore you can't apply it because the
- first any last versions will have different offsets and values, and therefore
- will only match by name, not contents.
-
- Secondly it resets the path variable when you run it, rather than appending
- the path to it once. This is most definately not right in my opinion.
-
- Thirdly, there would appear to be a final %*0 missing from the last line
- which means that you must run all files twice if !Patch isn't loaded.
-
- Fourthly, it won't let you patch files, only files within directories. Or
- have I done something wrong ?
-
- Other than these few things it's ok.
-
- Anyway, once Patch is loaded only run the patch you need (from the Patches
- directory), and you should have saved the window manager from !Zap into this
- directory as Module. Then all you need to do is drag the directory on to
- patch and click Apply and menu Patch selected to alter the module.
-
- After altering it you need to install it in the !Boot sequence. I may have
- detailed this in Patch316, but if I haven't I don't really want to have to
- explain it again having written all this rubbish.
-
-
- Bugs
- ----
- Hi there again. Don't you just love reading my bugs sections ?
-
- Well, as you can see I've managed to fix the problem with the window manager.
- If you don't believe me then use the old one with AllWCD and open a filer
- window on an item with the Copy window and see the caret at the start of the
- text. Now exit the desktop and load the patch and see it work fine.
-
- Almost.
-
- If you try it with !Draw and open the save window you'll see that the caret
- is back at the start. The reason for this is that until the window is opened
- there is no text in the icon and so the end of the icon is at position 0.
- Then when the window opens !Draw puts the text in the icon and the caret
- remains at position 0 (the start of the icon). I know, from much
- experimenting with the windowmanager that this is approximately what happens,
- and that either !Draw sets the pointer to the end of the icon (unlikely) or,
- the window manager must keep somewhere a copy of the current settings saying
- that the caret is at the _end_ of an icon when you open a window, and
- therefore spots the new text and places the caret at the end.
-
- If the later is true then it is failing to spot that the icon is a type 14
- and is leaving the caret where it is. If the former, then SetCaretPosition
- has some feature which I am unaware of which works differently between type
- 14 and type 15 icons. This problem where the task sets the icontext when the
- window opens seems to occur with C based programs (probably the library's
- fault) and so is a) very difficult to track and b) almost impossible to
- bypass as I don't have C to examine the structures.
-
- So that's the end of the story.
- • You now have TextCopy which fills a gap in the OS by allowing drags of
- WI's but can't drag type 15 icons.
- • You have AllWCD which fixes this problem by causing all WI's to be type 15,
- but causes the caret to not appear in sub-menu windows.
- • You have WinMgr patch which makes the caret appear in sub-menu windows, but
- sometimes leaves it in the wrong place.
-
- All this just because Acorn felt a little bit lazy when they wrote Arthur.
- Hey-hum, well you can't have everything I suppose. I've tried to give you it
- all, but I really can't be bothered any longer. I could keep writing modules
- to fix the bugs caused by other modules till the cows come home, but I think
- that WinMgr patch is perhaps the last I need to do as it doesn't leave such a
- big bug.
-
- If, however, anybody feels like writing a patch for the above problem it will
- go something like this :
- • Use filter manager to watch for Open window events
- • When caught the filter will find out if we are in a menu by using
- Wimp_GetMenuState with r0=0 and checking if the first entry is not -1.
- This is not fool-proof as the window may be the top level of the menu so
- that it vanishes when clicked outside of, but will probably work.
- • If in a sub-menu a flag is set.
- • A WimpSWIve routine on SetCaretPosition will check if the flag is set and
- if so will scan the icon specified and place the caret at the index of
- the end of the icon. This is in case the application sets the caret
- position in the open window section. The flag will also be cleared.
- • If the filter is entered with the flag set (ie the task has returned
- after opening the window without touching the caret), then the window
- last opened (stored from last filter) is looked at (Wimp_GetWindowState,
- bit 0 set) and all the icons in it examined for type 14/15. When one is
- found the caret is placed at the end of it. If none is found then no
- action is taken. The flag should then be cleared.
-
- That's how I reckon it should work. The two seperate techniques are mainly
- because I don't know how the caret is moved in C (see above). But do remember
- that that patch will be the /fourth/ to just make TextCopy possible and
- therefore things are getting a little silly.
-
- I wonder if the RPC still only checks for type 15 icons ? I would, if I had
- any, but money on it.
-
- Acknowledgements
- ----------------
- This is for the whole TextCopy patch (ie everything I've done relating to it
- - TextCopy, AllWCD, WinMgr patch and related docs and programs).
-
- Thanks to Andrew Clover for giving me WimpSWIve to work with in versions 0.02
- - 0.04 (from which Backing still has to emerge :-( ) and for his support for
- my programs which tend to use it. Thanks a load Andrew, it makes life oh so
- much easier.
-
- Thanks to the Fido Archimedes Echo for their suggestion that I write this
- patch, and particularly to Robin Abecasis for whom I wrote RecErrors as a
- direct spin off and it only worked on my machine (sorry).
-
- Thanks to Nick Craig-Wood for making encouraging enough sounds to make me
- write the fabled dragging of WI's instead of just drags to WI's and his
- Shift-Drag suggestion.
-
- Thanks to Alex Hayward for telling me about the ExtEdit problems which I seem
- to have cured without knowing quite how.
-
-
- Contact
- -------
- Any comments, queries, donations or bug reports can be sent to :
-
- Fidonet NetMail : Justin Fletcher at Arcade (0181 655 4412) [2:254/27]
- E-Mail : Gerph@arcade.demon.co.uk
-
- Snail Mail :
- Justin Fletcher
- “Galadriel”
- 17b Cromwell Road,
- Weeting,
- Brandon,
- Suffolk.
- IP27 0QT
-
- (Address soon to change due to going to university)