home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Elysian Archive
/
AmigaElysianArchive.iso
/
screen
/
cmwa37_2.lha
/
ReadMe
< prev
Wrap
Text File
|
1993-06-13
|
3KB
|
93 lines
Quick ReadMe to CMWA 37.2
=========================
Now, what it does? It activates the last active window on the screen, that
goes in front. Just like MWA (TWA or WindX), but without bugs and in only
1028 bytes.
How to Install?
===============
What you should do? Put it in your User-Startup. No need to 'Run' it. If
you call it a second time, it will remove itself. Oh, yes, it detaches
leaving only a port behind -- no valuable taskswitching time is used after
installation. Neat, eh?
You can also drag it into your SYS:WBStartup drawer. I really wanted it
small and neat, but Mark Cassidy rode me like a mare and got that WB stuff
in there at last... :-)
When started from WB, it will only tell you if something went wrong or when
it has removed. So, it will not block your system when starting
unattended.
Oh, by the way... if you specify POPUP as an icon tooltype, it will inform
you via EasyRequest(), when it has installed itself. Otherwise...
nothing... only messages when removing or failing...
A Bug in Intuition?
===================
I forgot to mention, why I made this update to 37.1... you see, intuition
sometimes locks up, if IBase is locked while IDCMP comes from input.device.
In other words, if IBase is locked, while intuition receives a mouse
movement, we might be doomed. Hmmm... this does not always happen, so I
guess it has something to do with the deferred action queue getting mangled
up in some way.
Now, did we *REALLY* need to lock IBase? No, since all IBase work is done
in just a single move instruction, which can't be caught in task-switching
(have to be between instructions).
So, I forgot all about IBase and it worked.
Now, I'm sure that a pair of Disable()/Enable() will make it work with
LockIBase()/UnlockIBase(), but that seems to be overstepping it for this
kind of thing, really... :-)
And then the other thing about this fix: it was not necessarily the last
active window on the upcoming screen, that was made active... Ooops...
Boomer! :-)
Technicalities?
===============
Some of you folks out there may want to know how this is achieved. Easy.
I patch LoadView() in graphics.library. In my patch, before I call the
original LoadView() stuff, I set up the last active window as the first
window in the screen's window list.
When I am done with LoadView(), I simply ActivateWindow() the first window
in the active screen's window list. If no window on that screen was
active, I just activate the first one available. And if no window exists,
I do nothing.
More tech stuff? Write to me and get the source...
What About The Money?
=====================
Send money, cars, boats, planes, diamonds, emeralds, gold, platinum,
whatever to:
Jesper Kehlet
Bredengen 19 - Svogerslev
DK-4000 Roskilde
Denmark
FIDO: 2:230/413
Usenet: kehlet@kehlet.adsp.sub.org
I expect to see at least an e-mail or a fido netmail if you use this, ok?
If you want the source, write to me at one of the above addresses...