On Fri, Nov 21, 2008 at 05:25:29AM +0200, Igor Stasenko wrote:
2008/11/21 David T. Lewis <lewis@mail.msen.com>:
Loosely speaking, the top-level window corresponds to an "application" which might have a hierarchy of windows inside it.
Inside only, or just have a child-parent relation? I mean, does a child-parent implies, that child window should live inside rect designated by parent and parent always acts as background window, or its free to be placed anywhere?
I'm not sure. Honestly I'm not an expert on this at all, I just hacked on Ian's code and looked at a couple of books. I would guess that the child windows can be placed anywhere, but that in normal operation the window manager controls the top-level window and the child windows follow along within the top-level coordinate system. But I'm not certain about this.
I'm also concerned a bit with a window manager communication. How to tell window manager that window should have different decoration, like having static border, or can't be closed (don't show close button) , or having no decoration at all - only area for painting etc. I want (at least try) to support a set of generic assets throughout all platforms.
Google ICCCM. There are some conventions for communicating with window managers, but lots of different window managers are in use and they are all different. Note, a window manager is just another X client application, separate from the X server. You could program Squeak to be an X window manager if you wanted to (might be a good project for somebody to try).
Also, you need to decide if each top-level host window should have its own separate communication session to the X server such that X events are naturally delivered to that window, or if there should be one connection with code to dispatch the events to the right destination. Either way, the X events need to get back to the VM in such a way that the correct X windows are refreshed, and the correct semaphore or process gets alerted in the Squeak image.
I don't see the need in having multiple comm channels. Squeak VM having single event queue, that's makes no sense to use multiple queues inside X11 backend. Of couse if X11 allows to manage everything through single channel.
Actually this might be mostly a matter of how much "rearranging" to do in the existing Unix X11 support code. Dispatching from a single channel is probably the right thing to do, but it might be easier to just open separate connections. I did not implement either one, so pick your poison ;) Dave