On Fri, May 13, 2016 at 5:22 PM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Fri, May 13, 2016 at 4:48 PM, Yoshiki Ohshima Yoshiki.Ohshima@acm.org wrote:
Iit appears that most bits and pieces are there. For example, sqUnixX11.c does have two functions setCompositionFocus() and setCompositionWIndowPosition(), which used to be in a separated loadable VM plugin but now sitting in there without any caller (if I'm not mistaken). And the NuSqueak image has calls to Hand>>compositionWindowManager, and miraculously, returns an instance of ImmX11.
In ImmX11, setCompositionWindowPositionX:y: has a primitive call into ImmX11Plugin; but it appears that all I have to do is to change it to call the above-mentioned function in sqUnixX11.c.
To make it right, I'd propose to add two more functions to the display module interface. I see the implementation of those for X11 is there, and I remember writing something for Windows; but it can be an empty function.
So, if there is no opposition to add these to the display interface, I'd write a patch for it. But one thing I don't know much about is the HostWindowPlugin. If people think it makes sense to have them there for some reason, we can make that work, too.
This is in struct SqDisplay in platforms/unix/vm/SqDisplay.h? Go for it :-)
Yes, SqDisplay.h is what would be changed.
What I wrote above has some confusion, and I am indeed confused by this:
- the display vm plugin mechanism has primitives that are numbered as well as primitives that are in plugins like HostWindowPlugin. Is it possible to make then setCompositionFocus() and setCompositionWindowPosition() to be non-numbered yet make them be looked up from a plugin? Wasn't there a way to say to load a primitive from the core VM itself?
In any case, what to be edited seems to be minimal on the image side and isolated in the ImmX11 class; so it looks like it is close.