On Tue, 3 Aug 2010, Michael Jennings wrote: > If answering back with a string doesn't break clients requesting a > UTF8_STRING, I'm inclined to go that route. > > I don't have a problem, per se, with answering in UTF-8, but I'm not > sure if the new UTF-8 Xlib calls are portable to non-Linux/non-Xorg > platforms (Solaris? HP-UX? AIX?). I'd feel a lot more comfortable > going down that road if someone who knows those other OS's can > comment. Does anyone know if XA_UTF8_STRING and XUTF8StringStyle are > present on any of those platforms? > > Paolo, would you mind updating your patch to force XA_STRING if > XA_UTF8_STRING is not defined, and do the UTF-8 conversion if it is? > > Other opinions? > > BTW, the UTF-8-enabled Eterm is in the Eterm-0.10 branch in SVN if > anyone wants to help test. > > Thanks for the patch! > Michael
You are right about the portability.. I've seen, in fact, a super-old Xmu/Atoms.h [ $XConsortium: Atoms.h,v 1.3 89/12/08 12:03:56 rws Exp $ ] without XA_UTF8_STRING, and it has XA_COMPOUND_TEXT XA_TEXT XA_STRING. But, in this case, there is not even XmbTextListToTextProperty in Xutil.h, or elsewhere.. So, yes, would be good to hear someone about other OS's.. Here is the updated patch: --- src/screen.c 2009-10-25 22:07:43.000000000 +0100 +++ ../../Eterm/src/screen.c 2010-08-04 15:30:28.000000000 +0200 @@ -3360,8 +3360,28 @@ } } #endif +#if defined(MULTI_CHARSET) && defined(XA_UTF8_STRING) + } else if (rq->target == XA_UTF8_STRING(Xdisplay)) { + XTextProperty xtextp; + char *l[1]; + *l = selection.text; + xtextp.value = NULL; + xtextp.nitems = 0; + if (XmbTextListToTextProperty(Xdisplay, l, 1, XUTF8StringStyle, + &xtextp) == Success) { + if (xtextp.nitems > 0 && xtextp.value != NULL) { + XChangeProperty(Xdisplay, rq->requestor, rq->property, + rq->target, 8, PropModeReplace, xtextp.value, xtextp.nitems); + ev.xselection.property = rq->property; + } + } +#endif } else if (rq->target == XA_STRING) { XChangeProperty(Xdisplay, rq->requestor, rq->property, rq->target, 8, PropModeReplace, selection.text, selection.len); + ev.xselection.property = rq->property; + } else { + XChangeProperty(Xdisplay, rq->requestor, rq->property, XA_STRING, 8, + PropModeReplace, selection.text, selection.len); ev.xselection.property = rq->property; } XSendEvent(Xdisplay, rq->requestor, False, 0, &ev); ------------------------------------------------------------------------------ The Palm PDK Hot Apps Program offers developers who use the Plug-In Development Kit to bring their C/C++ apps to Palm for a share of $1 Million in cash or HP Products. Visit us here for more details: http://p.sf.net/sfu/dev2dev-palm _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel