Stephan Aßmus wrote:
Boy oh boy, I must be out of my mind!!
Sorry about that, apologies.
Hey, no worries Adi! It's not like we wanted to release the beast tomorrow.
The problem that my code solved, was that B_VIEW_RESIZED was not sent for all
views that needed it. The way I solved this was to send a single message
which contained the tokens from all effected views. The comment you removed
explained where this was done in Layer.cpp and what the potential problems
Should we proceed like this, or should we send an individual message for
each view? To be compatible with R5, ::CurrentMessage() should return correct
values for any view, don't you think?
If it works indeed by sending an individual message for each view in R5, then I must say, this is quite an overhead. I would assume that sending a single message is much cleaner and faster.
You know I agree here. I haven't tested in R5, but I assume it's one message per view.
Resizing a single view (for example the top window view) will result in all children with B_FOLLOW_* flags to be moved and/or resized. On the app_server side, this is an "atomic" operation, but when messages are sent for each view individually, I have a bad feeling in my tommy, that this is a potential source of out-of-sync problems on the client side. We could still emulate the single current message on the client side and stick to the way I did it. What do you say?
I agree sending one message only. Let's stay with this solution and see if all works OK. I just am afraid of ::DetachCurrentMessage() because, if this method is called from ::FrameMoved/Resized() the user will be dumped into debugger with a seg fault; more checking is required for "case B_VIEW_RESIZED/MOVED:"