[Vm-dev] Unicode clipboard in Windows
Chris Petsos
chrispetsos at sch.gr
Tue May 29 10:33:13 UTC 2007
Ok i am trying to brake down the clipboard-responsible code so that i can add unicode clipboard support.. the news are not so good.
First, i saw that the code for sending text to the clipboard is
int clipboardWriteFromAt(int count, int byteArrayIndex, int startIndex)
in
sqWin32Window.c
The thing is that we are trying to create a fully Unicode VM...this means that the characters that are sent to the VM are Unicode (> 256) and we are using a unicode TT font to render them.
Now... when i evaluate this
c:=Clipboard new.
c primitiveClipboardText:'?' "? is unicode char 945"
the clipboardWriteFromAt is never invoked.
That's because in
interp.c
at
sqInt primitiveClipboardText(void)
the following expression is evaluated to TRUE
if (!(((s & 1) == 0) && (((((usqInt) (longAt(s))) >> 8) & 15) >= 8))) {
/* begin primitiveFail */
successFlag = 0;
printf("primitive failed 1\n"); "This printf is mine"
return null;
}
Now what in earth is THIS?
(!(((s & 1) == 0) && (((((usqInt) (longAt(s))) >> 8) & 15) >= 8)))
Also further down it has
if (successFlag) {
sz = stSizeOf(s);
clipboardWriteFromAt(sz, s + BaseHeaderSize, 0);
/* begin pop: */
stackPointer -= 1 * BytesPerWord;
}
where stSizeOf goes down to assembly...
I think i am starting to abandon the fully-unicode vision and follow your instructions from the start to use code pages and preserve the internal representation of Squeak...
I don't think that i will be able to make everything unicode in a life time (does it worth it?)...
Christos.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20070529/631e4caa/attachment.htm
More information about the Vm-dev
mailing list