Hello Norman
<>
>> Prowess is an alternative window manager. We were discussing an idea
>> for simulating outline dragging in Wman.
>
> Yes, I know. My point being that Prowess was built on top of WMAN wasn't
> it? I'm sure that in order to run Prowess, WMAN had to be loaded. If so,
> and they managed this new border-dragging-resize then surely, WMAN must
> have had something to do with it under the covers?
Im far away from home right now, so cant check, but I think not. Prowess is an
alternative to Wman and therefor had the freedom to do things differently. I
was trying to push the envelope of Wman to see whether it could be pressed into
behaving as weve come to expect from the competition. I found the Application
(sub) Windows to be the most versatile, although very clumsy to use. Using AWs
you can simulate stretch bars of all kinds
/ Corner (2 AWs)
+-----+
| | <- Side
| ---- | <- Divider
| |
+-----+
^
| Up/Down
To do all of those at once requires about 13 of them, so its really fiddly
business. Some reasons to use AWs are that the PI will do the work of detecting
the window in focus and any buttons pressed, as well as displaying the pointers
of your choice, eg resize up/down or sideways or corner.
Using an AW as a title bar simplifies simulating the effect of moving a window
by dragging it via its titlebar. Its not perfect, as it complicates having
other objects there as well. So you either have to make your own display
routines, use multiple AWs, or accept a patchy titlebar. You can also use AWs
to create the effect of different layouts, etc. But its all rather cumbersome.
EasyMenu can only work with 32 AWs, if I remember correctly, so you may soon
run out of slots.. Info Windows can also be used in many non-obvious ways for
all kinds of decoration. You can use them to create lines and shadows, and also
use them to fake states, hide stuff, etc.
I dont suppose weve ever seen a program that uses Wman to its full extent,
mainly because its 1) difficult to get to grips with (complex and lacking in
documentation) 2) Fiddly and inflexible, and 3) doesnt lend itself to
"objectifying": Due to the data structures it is virtually impossible to create
re-usable object libraries. Still, it is reasonably compact (as these things
go) and fast, and I suppose those where more important criteria at the time of
design.
Its possible to write pointer-driven programs that dont use Wman at all. I have
written a few myself in S*Basic. They can be much more flexible, but tend to
look rather clunky unless you are prepared to use lots of resources and effort
on the pixel-, rather than character- level.
> Anyway, correct me if I'm wrong, but with WMAN I can set the OUTLN of my
> window initially, then when doing a move, I can set it to the new
> location and preserve the contents.
>
> In addition, I can tell when the pointer goes onto the border (can't I?)
> and when a mouse is down.
The internal window move routine only returns on completion so you cant
(easily) read the pointer record at the same time.
<>
Seasons best and all that,
Per
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm