home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / utilities / utilsf / jfshared / Modules / TextCopy / WinMgr / !ReadMe next >
Encoding:
Text File  |  1995-09-23  |  7.0 KB  |  153 lines

  1. > !ReadMe file for WinMgr (01 Jul 1995)
  2. =========================
  3.  
  4. To patch either WM3.22m (a non-existant version), or WM3.16 (standard A5000),
  5. grab the module using !Zap and save it as Module in this directory. Then run
  6. the relevant Patch file to install or remove the patch.
  7.  
  8. The source code for the patches is provided in JFPatch form and the
  9. intermediate basic code for Patch316 is also provided.
  10.  
  11. For more information on exactly what is happening refer to file Patch316.
  12.  
  13. Acron's !Patch
  14. --------------
  15. It would appear that patch is very wierd. Firstly it won't allow multiple
  16. patch files for the same application so that different versions can be
  17. catered for. If you do then only the first is recognised, but the data in the
  18. last is held for comparisson and therefore you can't apply it because the
  19. first any last versions will have different offsets and values, and therefore
  20. will only match by name, not contents.
  21.  
  22. Secondly it resets the path variable when you run it, rather than appending
  23. the path to it once. This is most definately not right in my opinion.
  24.  
  25. Thirdly, there would appear to be a final %*0 missing from the last line
  26. which means that you must run all files twice if !Patch isn't loaded.
  27.  
  28. Fourthly, it won't let you patch files, only files within directories. Or
  29. have I done something wrong ?
  30.  
  31. Other than these few things it's ok.
  32.  
  33. Anyway, once Patch is loaded only run the patch you need (from the Patches
  34. directory), and you should have saved the window manager from !Zap into this
  35. directory as Module. Then all you need to do is drag the directory on to
  36. patch and click Apply and menu Patch selected to alter the module.
  37.  
  38. After altering it you need to install it in the !Boot sequence. I may have
  39. detailed this in Patch316, but if I haven't I don't really want to have to
  40. explain it again having written all this rubbish.
  41.  
  42.  
  43. Bugs
  44. ----
  45. Hi there again. Don't you just love reading my bugs sections ?
  46.  
  47. Well, as you can see I've managed to fix the problem with the window manager.
  48. If you don't believe me then use the old one with AllWCD and open a filer
  49. window on an item with the Copy window and see the caret at the start of the
  50. text. Now exit the desktop and load the patch and see it work fine.
  51.  
  52. Almost.
  53.  
  54. If you try it with !Draw and open the save window you'll see that the caret
  55. is back at the start. The reason for this is that until the window is opened
  56. there is no text in the icon and so the end of the icon is at position 0.
  57. Then when the window opens !Draw puts the text in the icon and the caret
  58. remains at position 0 (the start of the icon). I know, from much
  59. experimenting with the windowmanager that this is approximately what happens,
  60. and that either !Draw sets the pointer to the end of the icon (unlikely) or,
  61. the window manager must keep somewhere a copy of the current settings saying
  62. that the caret is at the _end_ of an icon when you open a window, and
  63. therefore spots the new text and places the caret at the end.
  64.  
  65. If the later is true then it is failing to spot that the icon is a type 14
  66. and is leaving the caret where it is. If the former, then SetCaretPosition
  67. has some feature which I am unaware of which works differently between type
  68. 14 and type 15 icons. This problem where the task sets the icontext when the
  69. window opens seems to occur with C based programs (probably the library's
  70. fault) and so is a) very difficult to track and b) almost impossible to
  71. bypass as I don't have C to examine the structures.
  72.  
  73. So that's the end of the story.
  74.  • You now have TextCopy which fills a gap in the OS by allowing drags of
  75.    WI's but can't drag type 15 icons. 
  76.  • You have AllWCD which fixes this problem by causing all WI's to be type 15,
  77.    but causes the caret to not appear in sub-menu windows.
  78.  • You have WinMgr patch which makes the caret appear in sub-menu windows, but
  79.    sometimes leaves it in the wrong place.
  80.    
  81. All this just because Acorn felt a little bit lazy when they wrote Arthur.
  82. Hey-hum, well you can't have everything I suppose. I've tried to give you it
  83. all, but I really can't be bothered any longer. I could keep writing modules
  84. to fix the bugs caused by other modules till the cows come home, but I think
  85. that WinMgr patch is perhaps the last I need to do as it doesn't leave such a
  86. big bug.
  87.  
  88. If, however, anybody feels like writing a patch for the above problem it will
  89. go something like this :
  90.   • Use filter manager to watch for Open window events
  91.   • When caught the filter will find out if we are in a menu by using
  92.     Wimp_GetMenuState with r0=0 and checking if the first entry is not -1.
  93.     This is not fool-proof as the window may be the top level of the menu so
  94.     that it vanishes when clicked outside of, but will probably work.
  95.   • If in a sub-menu a flag is set.
  96.   • A WimpSWIve routine on SetCaretPosition will check if the flag is set and
  97.     if so will scan the icon specified and place the caret at the index of
  98.     the end of the icon. This is in case the application sets the caret
  99.     position in the open window section. The flag will also be cleared.
  100.   • If the filter is entered with the flag set (ie the task has returned
  101.     after opening the window without touching the caret), then the window
  102.     last opened (stored from last filter) is looked at (Wimp_GetWindowState,
  103.     bit 0 set) and all the icons in it examined for type 14/15. When one is
  104.     found the caret is placed at the end of it. If none is found then no
  105.     action is taken. The flag should then be cleared.
  106.     
  107. That's how I reckon it should work. The two seperate techniques are mainly
  108. because I don't know how the caret is moved in C (see above). But do remember
  109. that that patch will be the /fourth/ to just make TextCopy possible and
  110. therefore things are getting a little silly.
  111.  
  112. I wonder if the RPC still only checks for type 15 icons ? I would, if I had
  113. any, but money on it.
  114.  
  115. Acknowledgements
  116. ----------------
  117. This is for the whole TextCopy patch (ie everything I've done relating to it
  118. - TextCopy, AllWCD, WinMgr patch and related docs and programs).
  119.  
  120. Thanks to Andrew Clover for giving me WimpSWIve to work with in versions 0.02
  121. - 0.04 (from which Backing still has to emerge :-( ) and for his support for
  122. my programs which tend to use it. Thanks a load Andrew, it makes life oh so
  123. much easier.
  124.  
  125. Thanks to the Fido Archimedes Echo for their suggestion that I write this
  126. patch, and particularly to Robin Abecasis for whom I wrote RecErrors as a
  127. direct spin off and it only worked on my machine (sorry).
  128.  
  129. Thanks to Nick Craig-Wood for making encouraging enough sounds to make me
  130. write the fabled dragging of WI's instead of just drags to WI's and his
  131. Shift-Drag suggestion.
  132.  
  133. Thanks to Alex Hayward for telling me about the ExtEdit problems which I seem
  134. to have cured without knowing quite how.
  135.  
  136.  
  137. Contact
  138. -------
  139. Any comments, queries, donations or bug reports can be sent to :
  140.  
  141. Fidonet NetMail :  Justin Fletcher at Arcade (0181 655 4412) [2:254/27]
  142. E-Mail : Gerph@arcade.demon.co.uk
  143.  
  144. Snail Mail :
  145.     Justin Fletcher
  146.     “Galadriel”
  147.     17b Cromwell Road,
  148.     Weeting,
  149.     Brandon,
  150.     Suffolk.
  151.     IP27 0QT
  152.  
  153. (Address soon to change due to going to university)