[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] WM_REPOSED implementation



fre, 09,.12.2005 kl. 22.08 +0100, skrev Jo Even Skarstein:
> > -----Original Message-----
> > From: mint-bounce@lists.fishpool.fi
> > [mailto:mint-bounce@lists.fishpool.fi]On Behalf Of Odd Skancke
> > Sent: Friday, December 09, 2005 12:30 PM
> >
> >  WM_SIZED - The window has been resized. Only its W/H coordinates have
> > changed. No extra checks to see if window moved because per definition
> > it didnt move with this message, (if you need to know) or no extra need
> > to check if it changed size, because if it didnt you would not receive
> > this message.
> 
> I have browsed all docs available to me, and can't find any statements that
> backs up your assumptions here. All references to WM_SIZED that I've found

 Sorry to hear that you didnt find anything about it. I know I have read
it somewhere, but this was long ago. May even have been I read it in the
ATari docs that a friend of mine had ancient ago.

> today says something like "Sent when a window resize is requested. msg[4-7]
> hold the new window rectangle". The difference between WM_SIZED and WM_MOVED
> is that with WM_MOVED the width and height of the window is not changed.
> This doesn't mean that WM_SIZED exclusively changes the width and height!

 Since there has been no way to size a window in a way that affects both
coordinate pairs, this is what applications are actually expecting. I
didnt add sending a pair of WM_MOVED/WM_SIZED just for the fun of it. I
did this because almost every app I tried needed this. Thing was one of
the few exceptions.

 Even if I am wrong about this, keeping the 3 different messages wont
hurt, will it? XaAES will at least follow these rules until someone can
convince me it is a bad thing to do. And comments wont work, I want
evidence :)

> 
> I'd say that the obvious solution is to just send a correct WM_SIZED message
> when a window is resized with the top and/or left border, and I suspect that
> this will work correctly with most applications. In those cases that it

 This is just not correct. Try to uncomment the ...

if (move)
   send_moved(lock, wind, AMQ_NORM, &r);

 ... part in size_window() in widgets.c and see how it works.

> doesn't work (because the application ignores part of the message sent it by
> the AES) the window will still be resized, but not moved. You can still move
> and resize these apps the "old" way, and the application will still work as
> intended. Nothing is lost - but all applications that interpret WM_SIZED
> correctly will work perfectly. No need to send both SIZED and
> MOVED-messages, no new mode/message to support.

 This would make it necessary for EVERY application in the system to
contain code to detect which coordinate pair actually changed, in which
case we could replace all three window size/position messages with only
one. I dont think this is a good tradeoff. Two messages are already
defined. Together with the possibility to resize windows by upper/left
or left borders comes a new message that indicates both coordinate pairs
changed. XaAES will still send WM_MOVED/WM_SIZED when only one of the
coordinate pairs changes. WM_REPOSED is sent only in the circumstances
where both coordinate pair changes. And then the message names actually
makes sense to newbies, jsut as they did when I was a newbie.

 This wont change, so lets drop this now, unless there are concrete
examples of this being a bad, bad implementation :)

> 
> You can always add the option to tell the AES to send first MOVED and then
> SIZED to specific applications, but that will only work if XaAES can be
> externally configured on per-application basis (like Geneva can). I don't
> know if this is possible, as I can't get XaAES to run on my Milan yet.

 most things can be configured on a perapp basis in XaAES :)


 Best Regards,
Odd Skancke